Regresión Lineal Simple

Datos cuantitativos

En la regresión simple (mod1), me dice que el precio de la vivienda se incrementa casi $1.600.000 por cada mts2 adicional de área construida.

library(readxl)
Datos_Vivienda <- read_excel("C:/Users/luisi/Downloads/Datos_Vivienda.xlsx")
View(Datos_Vivienda)

#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

Variable Dummy o cualitativa

Pero si cambiamos la regresión con una variable cualitativa, como por ejemplo zona. Aparecen todas las zonas? Si hacemos un tabla cuantas zonas deberian aparecer?

table(Datos_Vivienda$Zona)
## 
##  Zona Centro   Zona Norte   Zona Oeste Zona Oriente     Zona Sur 
##          124         1920         1198          351         4726

Se estima un modelo 2 con variable dummy

El modelo 2 estima el precio promedio de la vivienda en función de la zona geográfica, comparando cada zona con una zona de referencia (categoría base:la que no se muestra en la salida de R).

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

SOn 5 categorías, pero siempre se toma n-1. En este caso, se muestran 4 y se toma como zona base al centro.

El modelo explica en un 11% la variabilidad del precio promedio de la vivienda.

Precio vivienda = Bo + B1ZN + B2ZO+ B3ZOR + B4ZS

Interpretemos : B3 –> -81.16

En promedio, el precio de las viviendas ofertadas en la zona oriente, valen 81 millones menos que las ofertadas en ela zona centro-

B2 —>367 El rpecio de las viviendas ofertadas en la zona oeste, es 367 millones más que las ofertadas en la zona centro

B1–> 35.91

El precio de las viviendas ofertadas en la zona norte, es 35 millones más costosa que las ofertadas en la zona centro.

Interpretación

Los coeficientes que aparecen son diferencias respecto a esa zona base (centro).

Intercepto (309.69): Es el precio promedio de las viviendas ofertadas en la zona centro de Cali.

Zona Norte: En promedio, las viviendas cuestan 35.91 millones más que en la zona centro, pero no es estadísticamente significativo.

Zona Oeste: En promedio, cuestan 367.89 millones más que en la zona base, y es altamente significativo.

Zona Oriente: Cuestan 81.16 millones menos que en la zona base, y esta diferencia es significativa (p = 0.012).

Zona Sur: Cuestan 116.82 millones más que la zona base, también muy significativo.

R² = 0.1147, R² ajustado = 0.1143: El modelo explica alrededor del 11.5% de la variación del precio. Es un nivel bajo, lo que sugiere que la variable Zona por sí sola no es suficiente para explicar el precio.

Cambio de base o referencia

Si yo quiero cambiar de base, por ejemplo no zona centro si no zona sur.Habria que hacer adaptación a la categoria base:

#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

INTERPRETACIÓN MODELO 3

ZONA BASE= SUR

B1–> -80.9

El precio de las viviendas ofertadas en el norte, son 80,9 millones más baratas que las ofertadas en el sur.

B2–> El precio de las viviendas ofertadas en el centro, son 116,8 millones más baratas que las ofertadas en el sur.

b3–> 251.06 El precio de las viviendas ofertadas en el oeste, son 251.06 millones más caras que las ofertadas en el sur.

B4–>-197

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

INTERPRETACIÓN MODELO 3.A

B1 –> 80.9 El precio de las viviendas ofertadas en la zona sur, es 80.9 millones más costosa que las ofertadas en la zona norte.

B2–> -35.9

El precio de las viviendas ofertadas en la zona centro, es 35 millones más barata que las ofertadas en la zona norte.

B3 –> 331.9 El precio de las viviendas ofertadas en la zona oeste, es 331 millones mas costosa que las ofertadas en la zona norte.

B4 –> -117

El precio de las viviendas ofertadas en la zona oriente, es 117 millones masbarata que las ofertadas en la zona norte

Cómo se interpretaría el modelo 3?

Modelo de Regresión Lineal Múltiple

Efecto interacción: cuantitativas y cualitativas

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.

Validación de supuestos

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

1. Residuos vs Ajustados (arriba izquierda) ¿Qué busca?: Ver si los errores (residuos) están distribuidos aleatoriamente.

Hay una ligera curvatura, especialmente con valores altos ajustados, lo que sugiere cierta no linealidad o algún efecto no capturado por el modelo. También hay más dispersión de los residuos para valores ajustados altos → posible heterocedasticidad (varianza no constante).

2. Q-Q Plot (arriba derecha) ¿Qué busca?: Ver si los residuos siguen una distribución normal.

Hay desviaciones marcadas en las colas (residuos extremos), lo que indica que los residuos no son perfectamente normales. Sin embargo, para la mayoría de los datos, la normalidad es razonable.

3. Scale-Location (abajo izquierda) ¿Qué busca?: Comprobar si la varianza de los residuos es constante (homocedasticidad). La línea roja sube al final, lo cual sugiere que la varianza de los errores aumenta con el valor ajustado → otra señal de heterocedasticidad.

4. Residuos vs Leverage (abajo derecha) ¿Qué busca?: Detectar observaciones influyentes (outliers con alto impacto).

Hay pocos puntos con valores altos de leverage (como la observación 3324), pero ninguno parece estar más allá del umbral crítico (cooking distance > 1), por lo que no hay influencia extrema aparente, aunque vale la pena revisar esos puntos.

Conclusión general

*El modelo parece razonable en general, perO Podría beneficiarse de transformar alguna variable (como log del área). Tiene indicios de heterocedasticidad y no normalidad en los residuos extremos. Algunas observaciones tienen alta influencia y deben revisarse más a fondo.

Transformación de modelo

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

Interpretación log(Área_contruida) tiene un coeficiente de 360.20: Esto significa que por cada 1% de aumento en el área construida, el precio estimado aumenta en aproximadamente 3.6 millones de pesos.

¿Por qué? Un aumento del 1% en el área se aproxima a un cambio de log(1.01) ≈ 0.00995, y 360.2 × 0.00995 ≈ 3.58.

En resumen:

Un incremento del 10% en el área construida está asociado con un aumento en el precio de aproximadamente 36 millones.

El precio de la vivienda crece de forma proporcional al tamaño: si duplicas el área construida, el precio no se duplica, pero aumenta en 360.2 × log(2) ≈ 250 millones. Esta transformación suaviza las diferencias extremas entre viviendas grandes y pequeñas, y capta mejor la relación no lineal entre tamaño y precio.

INTERPRETACIÓN MODELO 6

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 área construida tiene un coeficiente de 0.003161, lo que significa que por cada aumento en 1 metro cuadrado del área construida, el precio de la vivienda se incrementa en 0.316%.

En resumen, un incremento de 10 m2 en el área construida, está asociado con un aumento en el precio de la vivienda en aproximadamente un 3.16%.

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

Como se puede observar el modelo con la variable “y” transformada con logaritmo no mejora el ajuste, pues pasa de 53% a 45% el R -squared, sin embargo, los supuestos de linealidad y normalidad a nivel grafico se ajustan mejor.

¿Que pasa al predecir con este modelo transformado, por ejemplo cual seria el precio de la vivienda estimado con un área construida de 20 metros?

y_log=predict(mod6,list(Area_contruida=20))
exp(y_log)
##        1 
## 210.7561

Una vivienda con 20 metros de área construida, tiene un precio de 210 millones de pesos.

Ya que se aplica la sigt ecuación:

Log (precio_millon) = 5.287 +0.003161Area_contruida

Log (precio_millon) = 5.287 + 0.00316(20)

Log (precio_millon) = 5,3502

precio_millon = 210.7