Taller 3: Regresión lineal simple

A continuación se presenta el desarrollo del taller 3 sobre regresión lineal simple. Este taller fue de desarrollado por Juan Sebastián Henao.

Importar base de datos

A continuación se procede a importar la base de datos con los cuales se realizarán los análisis:

library(readxl)
datos <- read_excel("~/Downloads/M1U3Mysimulacion/datos_vivienda.xlsx")
attach(datos)

Punto 1.

Realice un análisis exploratorio de las variables precio de vivienda (millones de pesos COP) y area de la vivienda (metros cuadrados) - incluir graficos e indicadores apropiados interpretados.

summary(datos)
##  Area_construida precio_millon  
##  Min.   : 80.0   Min.   :240.0  
##  1st Qu.: 86.0   1st Qu.:251.2  
##  Median : 97.0   Median :305.0  
##  Mean   :115.7   Mean   :332.1  
##  3rd Qu.:130.0   3rd Qu.:395.0  
##  Max.   :195.0   Max.   :480.0
sd(datos$Area_construida)
## [1] 35.54332
sd(datos$precio_millon)
## [1] 82.14423
par(mfrow=c(2,2))
hist(datos$Area_construida)
boxplot(datos$Area_construida, main="Área construida")
hist(datos$precio_millon)
boxplot(datos$precio_millon, main ="Precio Millón")

Respuesta

Los datos muestran que los apartamentos en venta, ocsilan entre 80 y 195 m2, con un promedio de 115.7. El 50% de los apartamentos, se encuentran entre los 86 y 130 m2, lo cual muestra que el el cuarto cuartil es dónde más dispersión en los datos se muestra. Estos datos no tienen un comportamiento normal, como se evidencia en el histograma.

Así mismo, en cuanto al precio, se evidencia que estos están en el rango entre 240 y 480 millones, con un promedio de 332.1. Concentrando el 50% correspondientes al segundo y tercer cuartil entre 251.2 y 395 millones. En este caso, no se presenta tanta dispersión en los datos como si ocurre en el cuarto cuartil del tamaño de las viviendas.

Punto 2.

Realice un análisis exploratorio bivariado de datos enfocado en la relación entre la variable respuesta (y=precio) en función de la variable predictora (x=area) - incluir graficos e indicadores apropiados interpretados.

require(ggplot2)
## Loading required package: ggplot2
ggplot(datos,aes(x=datos$Area_construida,y=datos$precio_millon))+geom_point()+theme_bw()+geom_smooth()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

cor(datos$Area_construida,datos$precio_millon)
## [1] 0.9190295

Respuesta

Los datos muestran que entre el área construida y el precio de las viviendas existe una alta correlación positiva. Lo que indica que entre más grande sea la vivienda mayor es su precio. Sin embargo, al observar el gráfico de dispersión, se evidencia que la línea de tendencia tiende a tener más un comportamiento hiperbólico que lineal. La correlación tiene un coeficiente de 0.92.

Punto 3.

Estime el modelo de regresión lineal simple entre precio = f (area) + e. Interprete los coeficientes del modelo β0,β1 en caso de ser correcto.

mod1 = lm(datos$precio_millon~datos$Area_construida)
summary(mod1)
## 
## Call:
## lm(formula = datos$precio_millon ~ datos$Area_construida)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -51.673 -25.612  -6.085  24.875  67.650 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             86.234     22.479   3.836 0.000796 ***
## datos$Area_construida    2.124      0.186  11.422 3.45e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 33.05 on 24 degrees of freedom
## Multiple R-squared:  0.8446, Adjusted R-squared:  0.8381 
## F-statistic: 130.5 on 1 and 24 DF,  p-value: 3.45e-11

Respuesta

Al observar los resultados del modelo, se muestra que esta regresión tiene un r cuaadrado de 0.8446, es decir que el tamaño del apartamento logra explicar el 84% del comportamiento del precio. Además, el nivel de significancia es alto, con un nivel de confianza 95%, pues el resultado de la prueba T se encuentra por debajo del 0.05, lo que hace que el modelo tenga un nivel de significancia alta.

Adicionalmente, los resultados muestran que el intersecto (β0) es de 86.234, es decir, un apartamento de 0 metros cuadrados valdríaa 86 millones de pesos. Adicionalmente, como el β1 es 2.124, por cada metro adicional, el apartamento sube 2 millones.

Punto 4.

Construir un intervalo de confianza (95%) para el coeficiente β1, interpretar y concluir si el coeficiente es igual a cero o no. Compare este resultado con una prueba de hipotesis t.

LI=2.124-(1.96*0.186)
LS=2.124+(1.96*0.186)
c(LI,LS)
## [1] 1.75944 2.48856
confint(mod1)
##                          2.5 %     97.5 %
## (Intercept)           39.83983 132.627917
## datos$Area_construida  1.74017   2.507771

Respuesta

El intervalo presentado, se calcula por dos caminos diferentes. Uno con la función confint y otra con la fórmula de acuerdo con los resultados del summary del modelo. Lo que muestra es que el intervalo de confianza está entre 1.74 y 2.51. Adicionalmente, como se mencionó, el hecho de que el nivel de significancia en la prueba t, se muestra que se rechaza la hipótesis nula y se encuentra en que el tamaño si logra explicar el precio de los apartamentos.

Punto 5.

Calcule e interprete el indicador de bondad y ajuste R2.

R2 es la medición de bondad y ajuste

summary(mod1)
## 
## Call:
## lm(formula = datos$precio_millon ~ datos$Area_construida)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -51.673 -25.612  -6.085  24.875  67.650 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             86.234     22.479   3.836 0.000796 ***
## datos$Area_construida    2.124      0.186  11.422 3.45e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 33.05 on 24 degrees of freedom
## Multiple R-squared:  0.8446, Adjusted R-squared:  0.8381 
## F-statistic: 130.5 on 1 and 24 DF,  p-value: 3.45e-11

Respuesta

Al mirar los resultados del R cuadrado y el R cuadrado ajustado, se puede evidenciar que el modelo explica el 83.81% del comportamiento de la variable dependiente. Lo que indica, como se ha planteado, que el modelo funciona y logra explicar el precio de los apartamentos a partir del tamaño.

Punto 6.

¿Cuál sería el precio promedio estimado para un apartamento de 110 metros cuadrados? Considera entonces con este resultado que un apartemento en la misma zona con 110 metros cuadrados en un precio de 200 millones sería una buena oferta? Que consideraciones adicionales se deben tener?

#intercepto (β0) = 86.2341, β1= 2.124 x=110
precio110=86.2341+(2.124*110)
precio110
## [1] 319.8741
predict(mod1,list(Area_construida =110))
##        1        2        3        4        5        6        7        8 
## 268.8953 336.8624 362.3500 470.6725 268.8953 294.3830 447.3089 290.1350 
##        9       10       11       12       13       14       15       16 
## 266.7714 447.3089 271.0193 337.7545 268.8953 266.7714 290.1350 268.8953 
##       17       18       19       20       21       22       23       24 
## 268.8953 362.3500 370.8459 256.1515 362.3500 271.0193 362.3500 275.2672 
##       25       26 
## 500.4081 447.3089

Respuesta

El precio estimado para un apartamento de 110 metrros cuadrados es de 319.9 millones de pesos. Por lo cual, una oferta está por debajo del precio estimado de la zona. Lo cual sería un buen negocio para el comprador y uno malo para el vendedor. La oferta está máas de 100 millones por debajo de la estimación.

Sin embargo, pueden existir otras consideraciones a tener en cuenta como el estado de la vivienda, la antiguedad, los servicios que oferten, entre otros. Todos estos elementos, deben considerarse a la hora de hacer una evaluación más juiciosa de esta oferta, pues son factores que afectan el precio final.

Punto 7.

Realice la validación de supuestos del modelo por medio de gráficos apropiados, interpretarlos y sugerir posibles soluciones si se violan algunos de ellos.

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

Respuesta

Al analizar las gráficas de validación de los supuestos del modelo, se encuentra que estos no se ajustan y por lo tanto el modelo debe ser revisado. Como se había mencionado anteriormente, el comportamiento de la correlación entre la línea de tendencia no es lineal sino que tiene un comportamiento hiperbólico. Por lo cual se debería hacer un ajuste en el modelo. Por un lado, el gráfico de los residuales muestra un comportamiento que no es aleatorio. Por otro lado, el gráfico de normalidad muestra si bien los puntos tienden a agruparse sobre la pendiente, existen puntos que no se ajustan al comportamiento normal.

Punto 8.

De ser necesario realice una transformación apropiada para mejorar el ajuste y supuestos del modelo.

#Polinomial orden 2
mod2 = lm(datos$precio_millon~poly(datos$Area_construida,2))
summary(mod2)
## 
## Call:
## lm(formula = datos$precio_millon ~ poly(datos$Area_construida, 
##     2))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -34.927 -14.471  -3.777  16.504  35.073 
## 
## Coefficients:
##                                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                      332.077      4.187  79.309  < 2e-16 ***
## poly(datos$Area_construida, 2)1  377.465     21.350  17.680 6.98e-15 ***
## poly(datos$Area_construida, 2)2 -125.411     21.350  -5.874 5.49e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 21.35 on 23 degrees of freedom
## Multiple R-squared:  0.9378, Adjusted R-squared:  0.9324 
## F-statistic: 173.5 on 2 and 23 DF,  p-value: 1.332e-14
par(mfrow=c(2,2))
plot(mod2)

#hiperbólica
b1hip = 1/Area_construida
mod3 = lm(precio_millon~b1hip)
summary(mod3)
## 
## Call:
## lm(formula = precio_millon ~ b1hip)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -36.987 -16.743  -5.023  18.547  44.379 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    635.35      18.27   34.77  < 2e-16 ***
## b1hip       -32464.72    1895.32  -17.13 5.84e-15 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 23.05 on 24 degrees of freedom
## Multiple R-squared:  0.9244, Adjusted R-squared:  0.9212 
## F-statistic: 293.4 on 1 and 24 DF,  p-value: 5.839e-15
par(mfrow=c(2,2))
plot(mod3)

Respuesta

Se hizo el ajuste del modelo siguiendo dos caminos. Por un lado, se hizo un ajuste polinomial de grado 2 que mejora la predicción del modelo al tener un R cuadrado de 0,9378 y mejora el comportamiento de los supuestos (normalidad y residuales), a la vez que se conserva un nivel de significancia alto. Por otro lado, se hizo un ajuste hiperbólico, que también mejora el modelo y sus supuestos, y el R cuadrado pasa a ser de 0.9244.

Punto 9.

De ser necesario compare el ajuste y supuestos del modelo inicial y el transformado.

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

plot(mod2)

plot(mod3)

Respuesta

Como se ha mencionado, el modelo ajustado mejora el desempeño del modelo y mejora el comporta miento de los supuestos en cuanto a normalidad y la aleatoriedad de los residuales. Siendo el polinomial el que mejores resultados da para la aleatoriedad y el hiperbólico para la normalidad. Sin embargo, ambos modelos ajustados logran pasar el R cuadrado, o la magnitud de lo que explican de la variable dependiente, de 0.8446 a 0,9378 y 0.9244 respectivamente. Lo que muestra el efecto positivo del ajuste.