library(readxl)
Datos_Vivienda <- read_excel ("Datos_Vivienda.xlsx")
#Estimamos modelo de regresión simple
mod1=lm(precio_millon~Area_contruida, data=Datos_Vivienda)
summary (mod1)
##
## Call:
## lm(formula = precio_millon ~ Area_contruida, data = Datos_Vivienda)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2659.88 -120.78 -47.55 67.27 1330.10
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 157.47636 4.13640 38.07 <2e-16 ***
## Area_contruida 1.58018 0.01831 86.30 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 238.7 on 8317 degrees of freedom
## Multiple R-squared: 0.4725, Adjusted R-squared: 0.4724
## F-statistic: 7448 on 1 and 8317 DF, p-value: < 2.2e-16
table(Datos_Vivienda$Zona)
##
## Zona Centro Zona Norte Zona Oeste Zona Oriente Zona Sur
## 124 1920 1198 351 4726
mod2=lm(precio_millon~Zona, data = Datos_Vivienda)
summary (mod2)
##
## Call:
## lm(formula = precio_millon ~ Zona, data = Datos_Vivienda)
##
## Residuals:
## Min 1Q Median 3Q Max
## -592.58 -200.61 -85.61 93.48 1594.39
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 309.69 27.78 11.149 < 2e-16 ***
## ZonaZona Norte 35.91 28.66 1.253 0.210
## ZonaZona Oeste 367.89 29.18 12.608 < 2e-16 ***
## ZonaZona Oriente -81.16 32.31 -2.512 0.012 *
## ZonaZona Sur 116.82 28.14 4.152 3.33e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 309.3 on 8314 degrees of freedom
## Multiple R-squared: 0.1147, Adjusted R-squared: 0.1143
## F-statistic: 269.3 on 4 and 8314 DF, p-value: < 2.2e-16
#Aquí se debe colocar en primer lugar la zona que quiero sea mi base o referencia, en este caso zona sur
Datos_Vivienda$Zona2=factor(Datos_Vivienda$Zona,levels = c("Zona Sur","Zona Norte","Zona Centro","Zona Oeste","Zona Oriente")) #cambieme la base a la variable zona, en leveles, la primera zona que se ponga, será la nueva base
#Se estima un modelo 3 con ese cambio de base
mod3=lm(precio_millon~Zona2,data=Datos_Vivienda)
summary (mod3)
##
## Call:
## lm(formula = precio_millon ~ Zona2, data = Datos_Vivienda)
##
## Residuals:
## Min 1Q Median 3Q Max
## -592.58 -200.61 -85.61 93.48 1594.39
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 426.518 4.499 94.795 < 2e-16 ***
## Zona2Zona Norte -80.910 8.371 -9.665 < 2e-16 ***
## Zona2Zona Centro -116.825 28.139 -4.152 3.33e-05 ***
## Zona2Zona Oeste 251.062 10.005 25.093 < 2e-16 ***
## Zona2Zona Oriente -197.988 17.112 -11.570 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 309.3 on 8314 degrees of freedom
## Multiple R-squared: 0.1147, Adjusted R-squared: 0.1143
## F-statistic: 269.3 on 4 and 8314 DF, p-value: < 2.2e-16
ZONA BASE = SUR
El precio de las viviendas ofertadas en el norte, son 80,9 millones más baratas que las ofertadas en el sur.
El precio de las viviendas ofertadas en el centro, son 116,8 millones más baratas que las ofertadas en el sur.
El precio de las viviendas ofertadas en el oeste, son 251.06 millones más caras que las ofertadas en el sur.
El precio de las viviendas, ofertadas en el oriente, son 197 millones más baratas que las ofertadas en el sur.
#Aquí se debe colocar en primer lugar la zona que quiero sea mi base o referencia, en este caso zona Norte
Datos_Vivienda$Zona3=factor(Datos_Vivienda$Zona,levels = c("Zona Norte","Zona Sur","Zona Centro","Zona Oeste","Zona Oriente")) #cambieme la base a la variable zona, en leveles, la primera zona que se ponga, será la nueva base
#Se estimad un modelo 3 con ese cambio de base
mod3a=lm(precio_millon~Zona3,data=Datos_Vivienda)
summary (mod3a)
##
## Call:
## lm(formula = precio_millon ~ Zona3, data = Datos_Vivienda)
##
## Residuals:
## Min 1Q Median 3Q Max
## -592.58 -200.61 -85.61 93.48 1594.39
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 345.608 7.059 48.959 < 2e-16 ***
## Zona3Zona Sur 80.910 8.371 9.665 < 2e-16 ***
## Zona3Zona Centro -35.915 28.660 -1.253 0.21
## Zona3Zona Oeste 331.972 11.388 29.150 < 2e-16 ***
## Zona3Zona Oriente -117.078 17.956 -6.520 7.42e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 309.3 on 8314 degrees of freedom
## Multiple R-squared: 0.1147, Adjusted R-squared: 0.1143
## F-statistic: 269.3 on 4 and 8314 DF, p-value: < 2.2e-16
ZONA BASE = NORTE
El precio de las viviendas ofertadas en la zona sur, es 80.9 millones más costosa que las ofertadas en la zona norte.
El precio de las viviendas ofertadas en la zona centro, es 35 millones más barata que las ofertadas en la zona norte.
El precio de las viviendas ofertadas en la zona oeste, es 331 millones mas costosa que las ofertadas en la zona norte.
El precio de las viviendas ofertadas en la zona oriente, es 117 millones masbarata que las ofertadas en la zona norte
Este modelo no tiene efectos principales por separado, solo interacciones. Eso significa que:
*El efecto del área construida sobre el precio depende completamente de la zona.
*Cada zona tiene su propia pendiente (su propio efecto del área construida sobre el precio).
*El intercepto (153.06) no tiene una interpretación directa porque no hay efecto principal de zona ni de área construida.
mod4=lm(precio_millon~Zona:Area_contruida,data = Datos_Vivienda)
summary (mod4)
##
## Call:
## lm(formula = precio_millon ~ Zona:Area_contruida, data = Datos_Vivienda)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1975.44 -100.02 -36.59 59.20 1231.75
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 153.06019 3.66977 41.708 < 2e-16 ***
## ZonaZona Centro:Area_contruida 0.82955 0.08644 9.597 < 2e-16 ***
## ZonaZona Norte:Area_contruida 1.22910 0.02630 46.736 < 2e-16 ***
## ZonaZona Oeste:Area_contruida 2.51865 0.02963 85.009 < 2e-16 ***
## ZonaZona Oriente:Area_contruida 0.36841 0.04686 7.862 4.26e-15 ***
## ZonaZona Sur:Area_contruida 1.60997 0.01817 88.597 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 211.4 on 8313 degrees of freedom
## Multiple R-squared: 0.5865, Adjusted R-squared: 0.5862
## F-statistic: 2358 on 5 and 8313 DF, p-value: < 2.2e-16
NOTACada coeficiente representa cuánto aumenta el precio (en millones) por cada m² adicional, dependiendo de la zona:
Ejemplo: En la Zona Oeste, cada metro cuadrado adicional aumenta el precio en 2.52 millones de pesos. En cambio, en la Zona Oriente, el mismo aumento solo incrementa el precio en 0.37 millones.
Evaluación del modelo
R² = 0.5865: El modelo explica aproximadamente el 58.6% de la variabilidad en el precio, lo cual es muy aceptable.
p-value < 2.2e-16: El modelo es estadísticamente significativo
Conclusión:Este modelo muestra que el impacto del área construida en el precio varía mucho según la zona. Por ejemplo, ampliar un apartamento en la Zona Oeste genera mucho más valor que hacerlo en la Zona Oriente.
par(mfrow=c(1,1))
plot(mod4)
1. Residuos frente a valores ajustados (gráfico superior izquierdo)
Objetivo: Evaluar si los errores se distribuyen aleatoriamente. Se observa una leve curvatura, especialmente en los valores ajustados más altos, lo que podría indicar que el modelo no captura del todo bien ciertas relaciones no lineales. Además, se percibe una mayor dispersión en estos mismos puntos, lo que sugiere la presencia de heterocedasticidad, es decir, que la varianza de los residuos no es constante.
2. Gráfico Q-Q (gráfico superior derecho)
Objetivo: Verificar si los residuos siguen una distribución normal. En general, los datos se ajustan razonablemente bien a la normalidad, aunque hay desviaciones notables en las colas, lo que indica que los residuos extremos no siguen completamente esta distribución.
3. Scale-Location (gráfico inferior izquierdo)
Objetivo: Comprobar la homocedasticidad, es decir, si los errores tienen una varianza constante. La tendencia ascendente de la línea roja al final sugiere que la varianza de los residuos se incrementa a medida que lo hacen los valores ajustados, lo cual refuerza la posibilidad de heterocedasticidad.
4. Residuos vs leverage (gráfico inferior derecho)
Objetivo: Identificar puntos con alta influencia sobre el modelo. Aunque se detectan algunas observaciones con leverage elevado (como la número 3324), ninguna parece superar un umbral crítico de influencia (como una distancia de Cook mayor a 1). Aun así, estas observaciones podrían analizarse con mayor detalle.
Conclusión general:
El modelo es funcional en términos generales, aunque podría mejorarse aplicando una transformación a alguna variable, como el logaritmo del área. Existen señales de heterocedasticidad y de no normalidad en los extremos. También es recomendable examinar ciertas observaciones que podrían estar ejerciendo una influencia significativa.
mod5=lm(precio_millon~log(Area_contruida),data = Datos_Vivienda)
summary (mod5)
##
## Call:
## lm(formula = precio_millon ~ log(Area_contruida), data = Datos_Vivienda)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1094.39 -115.52 -1.52 64.52 1234.98
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1339.30 18.38 -72.87 <2e-16 ***
## log(Area_contruida) 360.20 3.70 97.35 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 224.7 on 8317 degrees of freedom
## Multiple R-squared: 0.5326, Adjusted R-squared: 0.5326
## F-statistic: 9478 on 1 and 8317 DF, p-value: < 2.2e-16
Interpretacion
El coeficiente asociado a log(Área construida), que es de aproximadamente 360.20, indica que un aumento del 1% en el área construida se relaciona con un incremento cercano a 3.6 millones de pesos en el precio estimado de la vivienda. Esto se debe a que un incremento del 1% equivale aproximadamente a un cambio de 0.00995 en el logaritmo natural del área, y al multiplicar este valor por el coeficiente se obtiene un efecto aproximado de 3.58 millones. En términos más amplios, un aumento del 10% en el área construida se asocia con un alza de alrededor de 36 millones en el precio. Además, esta relación no es lineal: si se duplica el tamaño del inmueble, el precio no se duplica, pero sí aumenta significativamente, en este caso cerca de 250 millones de pesos (resultado de multiplicar el coeficiente por el logaritmo de 2). El uso del logaritmo en esta variable permite representar mejor la relación entre tamaño y valor, reduciendo el peso de los valores extremos y ajustando la estimación a una dinámica más realista del mercado inmobiliario.
mod6=lm(log(precio_millon)~(Area_contruida),data = Datos_Vivienda)
summary (mod6)
##
## Call:
## lm(formula = log(precio_millon) ~ (Area_contruida), data = Datos_Vivienda)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.2620 -0.3400 -0.0083 0.3191 1.4653
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.287e+00 8.571e-03 616.91 <2e-16 ***
## Area_contruida 3.161e-03 3.794e-05 83.32 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4947 on 8317 degrees of freedom
## Multiple R-squared: 0.4549, Adjusted R-squared: 0.4549
## F-statistic: 6942 on 1 and 8317 DF, p-value: < 2.2e-16
El coeficiente de 0.003161 asociado al área construida indica que por cada metro cuadrado adicional, el precio de la vivienda aumenta en promedio un 0.316%. Esto significa que, manteniendo constantes las demás variables del modelo, cualquier incremento unitario en el tamaño construido tiene un efecto proporcional en el valor del inmueble. En términos prácticos, un aumento de 10 metros cuadrados en el área construida se traduce en un incremento aproximado del 3.16% en el precio estimado de la vivienda. Esta relación sugiere que el tamaño del inmueble tiene una influencia positiva y sostenida sobre su valor de mercado.
par(mfrow=c(1,1))
plot(mod6)
El modelo con la variable dependiente “y” transformada mediante logaritmo no presenta una mejora en el ajuste, ya que el R-cuadrado disminuye del 53% al 45%. Sin embargo, los supuestos de linealidad y normalidad se cumplen de forma más adecuada a nivel gráfico. Al predecir con este modelo transformado, el resultado corresponde al logaritmo del precio estimado, por lo que es necesario aplicar la función exponencial para obtener el valor en pesos. Por ejemplo, si se desea estimar el precio de una vivienda con un área construida de 20 metros cuadrados, el modelo entregará log(precio), y al aplicar la exponencial, se obtendría el precio estimado correspondiente