Con este taller se busca generar un modelo de regresion lineal para modelar el precio de las viviedas en funcion del area construida.
Antes de iniciar la modelación de la regresión lineal del precio de la vivienda en función del area construida, se realiza el analisis exploratorio de las variables para entender su comportamiento inicial.
Analizando los principales grafico descriptivos para la variable Area Construida podemos evidencia que las distribucion presenta una asimetria positiva, estando mayormente concentrada en areas por dejabo de los 100\(M^2\). Las vivienda con mas de 180\(M^2\) parecen ser las de menor presencia en la base analizada.
n | min | primer_cuantil | mediana | media | tercer_cuantil | max | sd | CV | faltantes |
26 | 80 | 86 | 97 | 115.747 | 130 | 195 | 35.543 | 30.707 | 0 |
En cuanto a las estadisticas descriptivas se puede evidencia que efectivamente hay una asimetria hacia los valores más pequeños de las distribución. El 50% de las viviendas analizadas tienen un area construida entre los 80\(M^2\) a los 97\(M^2\), el area promedio de las viviendas de la base es de 115.7\(M^2\), en cuando a la variabilidad de la informacion, esta presenta un coeficiente de variación del 30.7%, por lo que podria pensarse que para esta variable le mediana es un valor más representativo.
Al analizar los principales grafico descriptivos para la variable que hace referencia al Precio de la vivienda se puede evidenciar es una distribución bimodal, donde se tiene una distribucion para las vivienda con un precio por debajo de los \(\$350MM\) y para aquellos que superan este valor. Las distribucion presenta una asimetria positiva, estando mayormente para viviendas mas economicas.
n | min | primer_cuantil | mediana | media | tercer_cuantil | max | sd | CV | faltantes |
26 | 240 | 251.25 | 305 | 332.077 | 395 | 480 | 82.144 | 24.736 | 0 |
En cuanto a las estadisticas descriptivas se puede evidencia que efectivamente hay una asimetria hacia los valores más pequeños de las distribución. El 50% de las viviendas analizadas tienen un precio entre los \(\$240MM\) a los \(\$305MM\), el precio promedio de las viviendas consideradas dentro de la base es de \(\$332.1MM\), en cuando a la variabilidad de la informacion, esta presenta un coeficiente de variación del 24.7%, lo cual nos dice que la información presenta una variabilidad moderada.
gr <- ggplot(datos, aes(y= precio_millon, x = Area_contruida))
gr <- gr + geom_point()
gr <- gr + geom_smooth()
gr <- gr + theme_classic()
gr <- gr + labs(title = 'Grafico de Dispersión',
subtitle = 'Precio de la vivienda Vs. Area Construida',
x = 'Area Construida',
y = 'Precio en millones')
gr <- gr + theme(plot.title = element_text(face = "bold",
size = 12,
hjust = 0.5),
plot.subtitle = element_text(size = 10,
hjust = 0.5),
legend.position="bottom",
legend.title = element_text( size = 10),
legend.key.size = unit(0.5, "cm"),
legend.key.width = unit(0.5,"cm"),
legend.text = element_text( size = 10))
ggplotly(gr)
Realizando el grafico de dispersión para las variables analizadas, se observa que existe una relación entre estas dos, donde se ve que a medida que incrementa el area, el precio tambien parace incrementar, pero esto no es permanente, a partir de aproximadamente los \(175M^2\) el precio pareciera comenzar a estabilizarse, es decir, aunque el area aumente, el precio no crecerá en la mismas proporción.
Al revisar la correlacion lineal entre estas dos variables se obtiene un indicador del 91.9%, lo que nos daria pensar que existe el area estaria explicando de manera lineal el comportamiento del precio de las viviendas.
modelo = lm(datos$precio_millon ~ datos$Area_contruida)
Al realizar la estimación del precio de la vivienda en funcion del area construida, se obtiene el siguiente modelo \[ Precio = 86.234 + 2.124*Area\_Construida + e \] Donde:
\(\beta_0\)= 86.234: Este valor se puede interpretar como el precio del lote, es decir, cuando no se considera el area construida del lugar
\(\beta_1\) = 2.124: Este valor hace referencia a que por cada metro cuadrado adicional construido el precio de la vivienda incrementa en 2.124MM
summary(modelo)
##
## Call:
## lm(formula = datos$precio_millon ~ datos$Area_contruida)
##
## 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_contruida 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
La prueba de hipotesis realizada sobre el \(\beta_1\) nos da un valor p < 5% por lo que tenemos evidencia estadistica que nos hace pensar que este parametro es significativo dentro del modelo, dado que su coeficiente se puede pensar que es diferente a 0.
Al estimar el intervalo de confianza para \(\beta_1\), obtenemos lo siguiente: \[IC_{95\%} = [1.740 ;2.508] \]
confint(modelo)[2,]
## 2.5 % 97.5 %
## 1.740170 2.507771
Con este podemos llegar a la misma conclusión de la prueba de hipotesis, dado que los valores posible que puede tomar \(\beta_1\) con una confianza del 95% se encuentran por encima de 0.
s=summary(modelo)
s$r.squared
## [1] 0.8446152
El \(R^2\) del modelo es del 84.46%, lo que significa que el area construida explica el 84.46% de la variabilidad de los precios de las viviendas. Lo cual nos permitiria pensar que el modelo propuesto me permitiria modelar el comportamiento de precio de la vivienda.
precio_110 = 86.234 + (2.124*110);precio_110
## [1] 319.874
Usando el modelo estimado anteriormente para calcular el valor de una vivienda de 110\(M^2\), este nos arroja un valor de \(\$319.9MM\), al compararlo con una oferta de \(\$200MM\) para una vivienda en la misma zona incialmente se podria ver como una muy buena oferta, dado que el valor de esta esta por debajo en un \(37.48\%\) con respecto al valor promedio esperado. Sin embargo, se deben considerar otras variables que esten generando esa oferta, por ejemplo, quizas el menor precio se deba a que el apartamento no se encuentra en las mejores condiciones, o no cuenta con ciertos servicios que normalmente si tendria un apartamento de esa zona, estar en un edificio con ascensor, parqueadero propio, gimnasio, entre otros.
gr1 <- ggplot(data = datos, aes(datos$precio_millon, modelo$residuals)) +
geom_point() + geom_smooth(color = "firebrick") +
geom_hline(yintercept = 0) + theme_classic() +
labs(title = "",
x = 'Precio de la vivienda',
y = 'Residuos')
residuos <- data.frame(modelo$residuals)
colnames(residuos)[1] <- "Residuos"
gr2 <- ggplot(residuos,aes(sample = Residuos)) + stat_qq() + stat_qq_line() +
labs(title = "QQplot", x = 'Cuantiles teoricos', y = 'Cuantiles muestrales') +
scale_x_continuous(limits = c(-3,3)) + theme_classic() +
theme(axis.text.x = element_text(size = 5),
axis.text.y = element_text(size = 5),
plot.title = element_text(size = 9, face = "bold", hjust = 0.5),
plot.subtitle = element_text(size = 8, hjust = 0.5, color = 'blue'))
ggarrange(gr1, gr2, labels = c("Homogeneidad", "Normalidad"))
Al analizar la validación de los supuestos sobre el modelo, se puede observar que si bien los residuos parecieran seguir una distribucion normal, el grafico donde se comparamos los residuales Vs el precio de las viviendas, se observa que el modelo lineal no parecer recoger de la mejor manera el comportamiento del precio.
De acuerdo a lo anterior, lo ideal seria transformar la variable independiente o dependiente para ver si lo que observamos se puede corregir.
Depues de validar con diferenes transformaciones tanto para el Area Construida como para el precio de la vivienda, evidenciamos que el problema sigue persistiendo.
Dado lo anterior, lo más probable es que los datos se ajustan a un modelo no lineal, que por el comportamiento de los errores este podria ser un modelo polinomico.