Punto 1_Elkin Leonardo Cantor Huerfano

Punto a.

Proponga un modelo de regresión lineal simple que permita predecir el valor de las Acciones de Ecopetrol con base en el Precio del barril de petróleo en Colombia. Indique la ecuación de regresión y el valor del\(R^2\).

R=2
library(readxl)
data <- read_excel("d:/ambiente/escritorio/RLS_Maestria/precio_petroleo.xlsx")
attach(data)
names(data)
## [1] "Fecha "           "accion_ecopetrol" "precio_wti"
plot(precio_wti,accion_ecopetrol)

cor(accion_ecopetrol, precio_wti)
## [1] 0.7074373

El precio de la acción de Ecopetrol y del precio de barril WTI se correlacionan en un 70.74%.

mod = lm(accion_ecopetrol~precio_wti)
resumen = summary(mod)
resumen
## 
## Call:
## lm(formula = accion_ecopetrol ~ precio_wti)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -59.90 -40.74 -15.94  33.40 136.82 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  177.768    232.828   0.764  0.45627   
## precio_wti    26.192      6.542   4.004  0.00102 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 57.13 on 16 degrees of freedom
## Multiple R-squared:  0.5005, Adjusted R-squared:  0.4692 
## F-statistic: 16.03 on 1 and 16 DF,  p-value: 0.001024

####Análisis La ecuación de regresión es \(precioaccionecopetrolpesos = 177.768 + 26.192\beta_1\)y el valor de \(R^2 = 0.5005\).

Punto b.

Pruebe la significancia del modelo propuesto en “a)” plantee las hipótesis respectivas y use el concepto de Valor _p para tomar la decisión sobre las hipótesis. Use α = 0.05.

####Prueba de significancia

Ho = El modelo no es significativo Ha = El modelo si es significativo

resumen$coefficients[2, ]
##     Estimate   Std. Error      t value     Pr(>|t|) 
## 26.192134618  6.541913749  4.003741966  0.001023938

####Análisis

Teniendo en cuenta que el valor_p es igual a 0.001023938 < 0.05 = α, con un nivel de confianza del 95% se debe rechazar Ho y aceptar Ha, con lo cual se concluye que el valor de la pendiente es un predictor significativo para la ecuación del precio de la acción de Ecopetrol.

Punto c.

Interprete los coeficientes del modelo propuesto en “a)”.

####Análisis

Se podría esperar que por el aumento de 1 dólar en el precio del petroleo WTI por barril, el precio de la acción de Ecopetrol aumente 26.192 pesos.

Punto d.

Haga un análisis de los residuos. ¿Qué supuesto no se cumple?.

par(mfrow=c(2,2))
plot(mod)

#### Contraste de hipótesis (normalidad de los residuos)

mean(mod$residuals)
## [1] -5.527407e-15
shapiro.test(mod$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  mod$residuals
## W = 0.89259, p-value = 0.04276
# Test de Breusch-Pagan (homocedasticidad de los residuos)
library(lmtest)
bptest(mod)
## 
##  studentized Breusch-Pagan test
## 
## data:  mod
## BP = 0.029563, df = 1, p-value = 0.8635

####Análisis

Teniendo en cuenta la prueba de Shapiro - Wilk donde el p_value es 0.0427 < 0.05 se rechaza la hipotesis nula y se concluye que los residuos no vienen de una distribución normal.

Es posible evidenciar que los errores son homocedasticos (gráfica Scale-Location), toda vez que son aleatorios alrededor de la linea horizontal. Asimismo, la prueba Breusch-Pagan donde la Ho = Homocedasticidad (los residuos se distibuyen con la misma varianza) y Ha = Heterocedasticidad (los residuos no se distribuyen con la misma varianza), indica con un p-value de 0.8635 > 0.05 no se rechaza Ho, por lo que se evidencia que la varianza de los residuos es homocedastica. Finalmente, la media de los errores están muy cercanos a cero.

En conclusión, los residuales no cumplen con el supuesto de normalidad.

Punto e.

Concluya sobre la validez del modelo propuesto en a).

####Análisis

Es posible concluir que el modelo no cuenta con el peso estadistico suficiente para predecir el valor de la acción de Ecopetrol por variaciones en el precio del galón WTI. Sería recomendable otro tipo de regresión que tal vez, aporte a mejorar el poder predictivo del modelo y del cumplimiento de los supuestos de los errores.

Punto 2

Punto a.

Escriba la ecuación del modelo de regresión lineal simple.

data2 <- read_excel("d:/ambiente/escritorio/RLS_Maestria/inflacion_salario_colombia.xlsx")
attach(data2)
names(data2)
## [1] "año"       "inflacion" "salario"
plot(inflacion,salario)

cor(salario,inflacion)
## [1] -0.7086581
mod2 = lm(salario~inflacion)
resumen2 = summary(mod2)
resumen2
## 
## Call:
## lm(formula = salario ~ inflacion)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -75463 -63456 -42854  17623 263207 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   648486      58947   11.00  1.4e-08 ***
## inflacion     -39489      10151   -3.89  0.00145 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 94130 on 15 degrees of freedom
## Multiple R-squared:  0.5022, Adjusted R-squared:  0.469 
## F-statistic: 15.13 on 1 and 15 DF,  p-value: 0.00145

La ecuación de regresión es \(salario = 648486 - 39489\beta_1\)y el valor de \(R^2 = 0.5022\).

Punto b.

Plantee y valide las hipótesis correspondientes a la linealidad general del modelo propuesto en a).

Contraste de hipótesis (normalidad de los residuos)

mean(mod2$residuals)
## [1] -1.491304e-12
shapiro.test(mod2$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  mod2$residuals
## W = 0.78826, p-value = 0.001407
# Test de Breusch-Pagan (homocedasticidad de los residuos)
library(lmtest)
bptest(mod2)
## 
##  studentized Breusch-Pagan test
## 
## data:  mod2
## BP = 0.61478, df = 1, p-value = 0.433

####Análisis

Teniendo en cuenta la prueba de Shapiro - Wilk donde el p_value es 0.001407 < 0.05 se rechaza la hipotesis nula y se concluye que los residuos no vienen de una distribución normal.

Es posible evidenciar que los errores son homocedasticos (gráfica Scale-Location), toda vez que son aleatorios alrededor de la linea horizontal. Asimismo, la prueba Breusch-Pagan donde la Ho = Homocedasticidad (los residuos se distibuyen con la misma varianza) y Ha = Heterocedasticidad (los residuos no se distribuyen con la misma varianza), indica con un p-value de 0.433 > 0.05 no se rechaza Ho, por lo que se evidencia que la varianza de los residuos es homocedastica. Finalmente, la media de los errores están muy cercanos a cero.

En conclusión, los residuales no cumplen con el supuesto de normalidad, por lo que los datos no se ajustan adecuadamente a un modelo lineal.

Punto c.

indique e interprete el coeficiente de correlación del modelo propuesto en a).

####Análisis El coeficiente de correlación del modelo propuesto es de \(R^2 = 0.5022\), por lo que explica en un 50.22% la variabilidad del salario de acuerdo a la inflación.

Punto d.

Interprete cada uno de los coeficientes del modelo propuesto en a).

####Análisis

Se podría esperar que por el aumento de 1% en la inflación, el salario disminuya 34.489, esto relacionado con la pérdida de poder adquisitivo que se generaría una vez aumenta la inflación; adcionalmente, relacionando esta interpretación con el resultado del \(R^2\), se podría pensar que al modelo le hacen falta variables que expliquen el poder predictivo de este.

Punto e.

Construya una gráfica de residuales y haga un análisis cualitativo de los supuestos del modelo propuesto en a).

par(mfrow=c(2,2))
plot(mod2)

### Punto f. Comente sobre la conveniencia de usar el modelo propuesto en a) para predecir el SMLM para Colombia.

####Análisis

Este modelo no es conveniente para predecir el SMML para Colombia, ya que no tiene un indicador de \(R^2\) que sea considerado como apropiado, tambien se deberá tener en cuenta que el aumento del salario en la realidad no solo depende de la inflación sino que tambien por otras variables macroeconomicas del país.

Punto 3

Punto a.

Realice un filtro a la base de datos e incluya solo las ofertas de apartamentos, de la zona norte de la ciudad con precios inferiores a los 500 millones de pesos y áreas menores a 300 mt2. Presente los primeros 3 registros de la base y algunas tablas que comprueben la consulta. (Adicional un mapa con los puntos de la base, discutir si todos los puntos se ubican en la zona norte o se presentan valores en otras zonas, por que?).

vivienda <- read_excel("Datos_Vivienda.xlsx", 
    col_types = c("text", "text", "numeric", 
        "numeric", "numeric", "numeric", 
        "numeric", "numeric", "text", "text", 
        "numeric", "numeric"))
library(RecordLinkage)
vivienda_2 = which(vivienda$Tipo=="Apartamento"& vivienda$Zona=="Zona Norte"& vivienda$precio_millon<500 & vivienda$Area_contruida<300)
datos_sub=vivienda[vivienda_2,]
head(datos_sub,3)
## # A tibble: 3 x 12
##   Zona       piso  Estrato precio_millon Area_contruida parqueaderos Banos
##   <chr>      <chr>   <dbl>         <dbl>          <dbl>        <dbl> <dbl>
## 1 Zona Norte 2           3           135             56            1     1
## 2 Zona Norte NA          3            78             54            2     1
## 3 Zona Norte NA          5           340            106            2     2
## # ... with 5 more variables: Habitaciones <dbl>, Tipo <chr>, Barrio <chr>,
## #   cordenada_longitud <dbl>, Cordenada_latitud <dbl>
library(leaflet)

leaflet() %>% addCircleMarkers(lng = datos_sub$cordenada_longitud,lat = datos_sub$Cordenada_latitud,radius = 0.3,color = "black",label = datos_sub$ID) %>% addTiles()

####Análisis

De acuerdo con la gráfica es posible evidenciar que aunque se realizó el filtro de los apartamentos ubicados en la Zona Norte, hay algunos que aparecen ubicados en otras zonas por su longitud y latitud que probablemente tengan errores en su información dentro de la base de datos.

Punto b.

Realice un análisis exploratorio de datos enfocado en la correlación entre la variable respuesta (precio del apartamento) en función del área construida, estrato y si tiene parqueadero. Use gráficos interactivos con plotly e interprete los resultados.

library(dplyr)
library(ggplot2)
library(GGally)
library(Hmisc)
library(corrplot)
library(PerformanceAnalytics)
library(foreign)


base_cor<- data.frame(vivienda[4:6],vivienda[3])
base_cor$parqueaderos[base_cor$parqueaderos == "NA"] <- 0
base_cor<- na.omit(base_cor)

correlacion<-round(cor(base_cor), 1)
corrplot(correlacion, method="number", type="upper")

chart.Correlation(base_cor, histogram = F, pch = 19)

####Análisis

De acuerdo con las correlaciones de los datos, se puede evidenciar que el precio de la vivienda puede incrementarse cuando esta cuenta con mayor número de parqueaderos (0.69), tiene un estrato socioeconómico más alto (0.59) y cuando tiene mayor área construida (0.68).

Punto c.

Estime un modelo de regresión lineal múltiple con las variables del punto anterior e interprete los coeficientes si son estadísticamente significativos. Las interpretaciones deber están contextualizadas y discutir si los resultados son lógicos. Adicionalmente interprete el coeficiente R2 y discuta el ajuste del modelo e implicaciones (que podrían hacer para mejorarlo).

vivienda_mod = lm(base_cor$precio_millon~base_cor$Area_contruida + base_cor$parqueaderos + base_cor$Estrato)
summary(vivienda_mod)
## 
## Call:
## lm(formula = base_cor$precio_millon ~ base_cor$Area_contruida + 
##     base_cor$parqueaderos + base_cor$Estrato)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1529.62   -93.05   -18.23    61.22  1152.87 
## 
## Coefficients:
##                           Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             -473.29204   11.74298  -40.30   <2e-16 ***
## base_cor$Area_contruida    0.97876    0.01923   50.90   <2e-16 ***
## base_cor$parqueaderos     87.11743    2.62524   33.19   <2e-16 ***
## base_cor$Estrato         125.24906    2.61229   47.95   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 184.2 on 6713 degrees of freedom
## Multiple R-squared:  0.6979, Adjusted R-squared:  0.6978 
## F-statistic:  5170 on 3 and 6713 DF,  p-value: < 2.2e-16

####Análisis

La ecuación de regresión es \(precio_millon = -473.29 + 0.9787\beta_1 + 87.11\beta_2 + 125.24\beta_3\)y el valor de \(R^2 = 0.6979\).

Si la vivienda no cuenta con área construida, parqueaderos o estrato socioeconómico el valor de esta no tendrá comercial, ya que el valor negativo del intercepto no tiene sentido en este contexto del ejercicio; por un aumento de 1 metro cuadrado en el área construida el precio de la vivienda aumentará 0.978 millones, por cada parqueadero adicional el precio de la vivienda aumentará 87.1 millones, sin embargo, este resultado podría considerarse como atipico pues en la realidad un parqueadero no suele costar este valor y finalmente, por un aumento en el estrato socioeconomico el valor de la vivienda podría aumentar 125.24 millones.

El \(R^2 = 0.6979\) indica que el modelo posiblemente no tiene tanto poder predictivo, a pesar de que las tres variables con la cual se modeló todas resultaron estadisticamente significativas, sin embargo, se podría mejorar el modelo incluyendo otras variables que a criterio de expertos sean relavantes para la determinación del precio de una vivienda.

También se podría realizar transformaciones a modelo tipo lin-log, log-log, log-lin que podría aumentar el R^2.

Punto d.

Realice la validación de supuestos del modelo e interprete los resultados (no es necesario corregir en caso de presentar problemas solo realizar sugerencias de que se podría hacer).

par(mfrow=c(2,2))
plot(vivienda_mod)

#### Contraste de hipótesis (normalidad de los residuos)

mean(vivienda_mod$residuals)
## [1] -3.26215e-14
# Test de Breusch-Pagan (homocedasticidad de los residuos)
library(lmtest)
bptest(vivienda_mod)
## 
##  studentized Breusch-Pagan test
## 
## data:  vivienda_mod
## BP = 1221.8, df = 3, p-value < 2.2e-16

####Análisis

Teniendo en cuenta la gráfica de los residuales “Normal Q-Q”, es posible evidenciar que los errores no siguen el supuesto de normalidad. Asimismo, estos no son homocedasticos de acuerdo con la gráfica Scale Location y la prueba de Breush-Pagan, la cual dio un p_valor muy próximo a 0 por lo que se rechaza la hipotesis nula de homocedasticidad. Finalmente, la media de los errores es cero, por lo que cumple el supuesto.

En conclusión, los residuales no cumplen con el supuesto de normalidad ni homocedasticidad, por lo que los datos no se ajustan adecuadamente a un modelo lineal.

Como recomendación para buscar una salida a esta situación se podría realizar una limpieza del dataset omitiendo los valores atipicos o tambien recurriendo a transformaciones que disminuyan la escala de medición (dimensionalidad).

Punto e.

Con el modelo identificado predecir el precio de un apartamento con 100 mt2, de estrato 4 y con parqueadero. ¿Si este apartamento lo están ofreciendo en 450 millones cual seria su opinión con base en el resultado del modelo considera que es una buena oferta?

-473.29+(0.9787*100)+(87.11*1)+(125.24*4)
## [1] 212.65

####Análisis

De acuerdo con el resultado del modelo, el precio del apartamento debería ser de 212.65 millones, tomando una posición como comprador esta no sería una oferta ya que esta aproximadamente un 111% superior al valor otorgado por el modelo.

Punto f.

Con las predicciones del modelo sugiera potenciales ofertas para una persona interesada en un apartamento en la zona norte con mas de 100 mt2 de área, de estrato 4, que tenga parqueadero y tenga encuentra que la persona tiene un crédito preaprobado de máximo 400 millones de pesos. Realice un análisis y presente en un mapa al menos 5 ofertas potenciales que debe discutir.

oferta = which(vivienda$Tipo=="Apartamento"& vivienda$Zona=="Zona Norte"& vivienda$precio_millon<=400 & vivienda$Area_contruida>100 & vivienda$Estrato == 4 & vivienda$parqueaderos >= 1)
oferta_2=vivienda[oferta,]
oferta_def = head(oferta_2,5)
oferta_def
## # A tibble: 5 x 12
##   Zona       piso  Estrato precio_millon Area_contruida parqueaderos Banos
##   <chr>      <chr>   <dbl>         <dbl>          <dbl>        <dbl> <dbl>
## 1 Zona Norte 4           4           380            123            1     3
## 2 Zona Norte NA          4           350            130            1     2
## 3 Zona Norte 1           4           290            108            1     2
## 4 Zona Norte 4           4           185            104            1     3
## 5 Zona Norte NA          4           265            125            2     3
## # ... with 5 more variables: Habitaciones <dbl>, Tipo <chr>, Barrio <chr>,
## #   cordenada_longitud <dbl>, Cordenada_latitud <dbl>
x1 = -473.29+(0.9787*123)+(87.11*1)+(125.24*4)
x2 = -473.29+(0.9787*130)+(87.11*1)+(125.24*4)
x3 = -473.29+(0.9787*108)+(87.11*1)+(125.24*4)
x4 = -473.29+(0.9787*104)+(87.11*1)+(125.24*4)
x5 = -473.29+(0.9787*125)+(87.11*2)+(125.24*4)

c(x1,x2,x3,x4,x5)
## [1] 235.1601 242.0110 220.4796 216.5648 324.2275

####Análisis

Se recomienda que para los 3 primeros apartamentos se oferte un menor valor al que el vendedor está solicitando y para los 2 útlimos apartamentos podrá aceptar la oferta realizada, toda vez que estos dos ultimos apartamentos tienen un precio de venta menor al que arrojó el modelo.

leaflet() %>% addCircleMarkers(lng = oferta_def$cordenada_longitud,lat = oferta_def$Cordenada_latitud,radius = 5,color = "red",label = oferta_def$ID) %>% addTiles()

Punto 4

Con base en los datos de arboles proponga un modelo de regresión lineal múltiple que permita predecir el peso del árbol en función de las covariables que considere importantes y seleccionándolas de acuerdo con un proceso adecuado. Tenga en cuenta realizar una evaluación de la significancia de los parámetros, interpretación y proponga un método de evaluación por medio de validación cruzada. Presente métricas apropiadas como el RMSE y MAE.

arboles <- read_excel("data arboles.xlsx", 
    col_types = c("text", "text", "numeric", 
        "numeric", "numeric"))
attach(arboles)
cor_arboles<- data.frame(arboles[3:5])


correlacion_arboles<-round(cor(cor_arboles), 1)

corrplot(correlacion_arboles, method="number", type="upper")

####Indicación Se define un 80% de la información para entrenar el modelo y un 20% para probarlo.

set.seed(1)
train <- sample(x = 1:90, 72)
modelo_arboles <- lm(peso~diametro + altura, data = arboles, subset = train)
summary(modelo_arboles)
## 
## Call:
## lm(formula = peso ~ diametro + altura, data = arboles, subset = train)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.6550 -2.4204  0.4327  1.8321 10.6024 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -9.2952     1.6058  -5.788 1.91e-07 ***
## diametro      4.0257     0.8240   4.886 6.43e-06 ***
## altura        0.9855     0.6525   1.510    0.136    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.455 on 69 degrees of freedom
## Multiple R-squared:  0.8375, Adjusted R-squared:  0.8328 
## F-statistic: 177.8 on 2 and 69 DF,  p-value: < 2.2e-16

####Análisis Se evidencia que el modelo realizado con el 80% del dataset arroja un coeficiente de determinación de 0.8375; asimismo, es posible encontrar que la variable diametro es estadisticamente sginficativa con un valor cercano a 0 < 0.1 = alpha y la variable altura es de 0.136, levamenete mayor a al alpha definido para este ejercicio, sin embargo, se acepta la permanencia de esta variable dentro del modelo.

prediccion_arboles <- predict(object = modelo_arboles, newdata = arboles[-train, ])
error_arboles <- mean((arboles$peso[-train] - prediccion_arboles)^2)
error_arboles
## [1] 13.47297
library(Metrics)
mae(arboles$peso[-train], prediccion_arboles)
## [1] 3.01947

####Análisis Es posible evidenciar que el modelo de regresión en promedio tiene errores de 3 en el peso del arbol de acuerdo con el MAE, sin embargo, el indicaro RMSE indica que esos errores son de 13 en el peso del arbol pero esta ultima medida tiene mayor impacto en los residuales más grandes, toda vez que son elevados al cuadrado.