Carga del dataset “Viviendas”.
## # A tibble: 8,322 × 13
## id zona piso estrato preciom areaconst parqueaderos banios habitaciones
## <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1147 Zona … <NA> 3 250 70 1 3 6
## 2 1169 Zona … <NA> 3 320 120 1 2 3
## 3 1350 Zona … <NA> 3 350 220 2 2 4
## 4 5992 Zona … 02 4 400 280 3 5 3
## 5 1212 Zona … 01 5 260 90 1 2 3
## 6 1724 Zona … 01 5 240 87 1 3 3
## 7 2326 Zona … 01 4 220 52 2 2 3
## 8 4386 Zona … 01 5 310 137 2 3 4
## 9 1209 Zona … 02 5 320 150 2 4 6
## 10 1592 Zona … 02 5 780 380 2 3 3
## # ℹ 8,312 more rows
## # ℹ 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
Se evidencia que la variable piso presenta algunas inconsistencia, por lo cual se procede a corregir su tipo y a reemplazar el piso con el valor 1 por defecto. También se reemplaza los valores de los NA de los parqueaderos por la cantidad de 0.
## # A tibble: 8,322 × 13
## id zona piso estrato preciom areaconst parqueaderos banios habitaciones
## <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1147 Zona … 1 3 250 70 1 3 6
## 2 1169 Zona … 1 3 320 120 1 2 3
## 3 1350 Zona … 1 3 350 220 2 2 4
## 4 5992 Zona … 2 4 400 280 3 5 3
## 5 1212 Zona … 1 5 260 90 1 2 3
## 6 1724 Zona … 1 5 240 87 1 3 3
## 7 2326 Zona … 1 4 220 52 2 2 3
## 8 4386 Zona … 1 5 310 137 2 3 4
## 9 1209 Zona … 2 5 320 150 2 4 6
## 10 1592 Zona … 2 5 780 380 2 3 3
## # ℹ 8,312 more rows
## # ℹ 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
Se procede a generar la tabla de asociación para un análisis previo:
Se percibe una correlación moderada entre el precio de la vivienda, el área contruida y la cantidad de parqueaderos, lo cual podría influir en los analisis próximos.
Filtro de los 3 primeros registros de apartamentos.
| id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1212 | Zona Norte | 1 | 5 | 260 | 90 | 1 | 2 | 3 | Apartamento | acopi | -76.51350 | 3.45891 |
| 1724 | Zona Norte | 1 | 5 | 240 | 87 | 1 | 3 | 3 | Apartamento | acopi | -76.51700 | 3.36971 |
| 2326 | Zona Norte | 1 | 4 | 220 | 52 | 2 | 2 | 3 | Apartamento | acopi | -76.51974 | 3.42627 |
## id zona piso estrato
## Min. : 3 Length:5100 Min. : 1.00 Min. :3.000
## 1st Qu.:2180 Class :character 1st Qu.: 1.00 1st Qu.:4.000
## Median :4158 Mode :character Median : 3.00 Median :5.000
## Mean :4284 Mean : 3.65 Mean :4.727
## 3rd Qu.:6556 3rd Qu.: 5.00 3rd Qu.:6.000
## Max. :8317 Max. :12.00 Max. :6.000
## preciom areaconst parqueaderos banios
## Min. : 58.0 Min. : 35.0 Min. : 0.000 Min. :0.000
## 1st Qu.: 175.0 1st Qu.: 68.0 1st Qu.: 1.000 1st Qu.:2.000
## Median : 279.0 Median : 90.0 Median : 1.000 Median :2.000
## Mean : 366.9 Mean :112.8 Mean : 1.301 Mean :2.617
## 3rd Qu.: 430.0 3rd Qu.:130.0 3rd Qu.: 2.000 3rd Qu.:3.000
## Max. :1950.0 Max. :932.0 Max. :10.000 Max. :8.000
## habitaciones tipo barrio longitud
## Min. :0.000 Length:5100 Length:5100 Min. :-76.59
## 1st Qu.:3.000 Class :character Class :character 1st Qu.:-76.54
## Median :3.000 Mode :character Mode :character Median :-76.53
## Mean :2.971 Mean :-76.53
## 3rd Qu.:3.000 3rd Qu.:-76.52
## Max. :9.000 Max. :-76.46
## latitud
## Min. :3.334
## 1st Qu.:3.380
## Median :3.419
## Mean :3.419
## 3rd Qu.:3.453
## Max. :3.498
| Var1 | Freq |
|---|---|
| Apartamento | 5100 |
Nota: Aunque hay una relación positiva clara, se puede observar que la relación entre el precio y el área construida podría no ser perfectamente lineal. En particular, para áreas más grandes, el incremento en el precio parece ser más disperso, lo que sugiere que un modelo lineal simple podría no capturar adecuadamente la relación para todas las propiedades.
##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = datos_regresion)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1884.66 -53.65 -3.61 45.30 1028.85
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -211.02021 13.32957 -15.83 <2e-16 ***
## areaconst 2.19809 0.04186 52.52 <2e-16 ***
## estrato 51.05448 2.67830 19.06 <2e-16 ***
## habitaciones -40.10636 3.29257 -12.18 <2e-16 ***
## parqueaderos 55.39086 2.96114 18.71 <2e-16 ***
## banios 51.90627 3.02972 17.13 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 134.1 on 5094 degrees of freedom
## Multiple R-squared: 0.7852, Adjusted R-squared: 0.785
## F-statistic: 3723 on 5 and 5094 DF, p-value: < 2.2e-16
Pr: Se puede deducir a partir del valor arrojado en las probabilidades de cada variable que hay suficiente evidencia para rechazar la hipótesis nula, por lo que las variables analizadas tienen un impacto significativo en el precio de la vivienda.
R² (0.7852): El modelo explica el 78.52% de la variabilidad en el precio de las viviendas, lo que indica que el ajuste del modelo es bastante bueno. Por otro lado, todavía hay un 21.55% de la variabilidad que no se explica por este modelo, lo que sugiere que hay otros factores que podrían estar influyendo en el precio.
Ajuste R² ajustado (0.785): Dado que este valor es muy similar al R², significa que la cantidad de predictores no está causando un sobreajuste significativo del modelo.
Área contruida: El modelo indica que por cada metro cuadro adicional el costo podría aumentar en 2.19809, donde el Pr es < 2e-16 el cual es bastante bajo, por lo que podríamos decir que esta variable tiene un efecto significativo en la variable dependiente, por tanto el área construida es relevante y tiene un impacto importante y positivo sobre el precio de la vivienda. Este valor tiene sentido, pues es un valor promedio que se esperaría obtener teniendo en cuenta otra variables como el estrato.
Estrato: En este caso el modelo indica que por cada estrato que la vivienda aumente, el precio de la vivienda aumentará en 51.05448 millones. Este valor puede reflejar un valor muy acorde a lo que se esperaría en el aumento de un estrato en la ciudad.
Habitaciones: En el caso de las habitaciones el coeficiente es negativo, lo que indica que añadir una habitación reduce el precio en -40.10636 millones. Esto interpretación puede verse como contradictoria pues se esperaría que entre más habitaciones que el apartamento tuviese, este aumentaría su precio. Posiblemente esto pueda deberse a que no se esperaría que la mayoría de las viviendas de cierto tamaño no deberían tener una cantidad excesiva de habitaciones, pues esto restaría área en otros espacios, por lo cual esto puede tener sentido.
Parqueaderos: Cada parqueadero adicional se encuentra asociado a un aumento de 55.39086 millones en el precio de la propiedad. Esto tiene sentido pues la adición de un parqueadero puede interprestarse como algo ostentoso, por lo cual se ve reflejado en un aumento significativo.
Baños: Cada baño que se adicionara a la vivienda tendría un aumento en el valor de 51.90627 millones. Esto se entiende como algo lógico pues las propiedades con más baños suelen ser generalmente más grnades y lujosas.
Existen varias posibles explicaciones para el 21.48% de la variabilidad que no es explicada por el modelo:
Se podría analizar incluir otras variables a analizar como: antiguedad de la vivienda, la vista o panorámica puede ser importante también, tendencias de mercado, entre otras.
El modelo de regresión lineal múltiple supone que las variable dependiente (el precio) y las variables independientes es lineal, por lo cual sería útil experimerar con transformaciones no lineales, pues existen relaciones no lineales como el precio y el área contruida, las cuales observamos con anterioridad que nos precisamente lineales.
Aunque no se ve un patrón curvo claro, hay algo de dispersión en los valores más altos, lo que dice que la relación entre algunas variables y el precio puede no ser completamente lineal para todo el rango de valores. Esto podría indicar que la linealidad es aceptable para gran parte del modelo, pero podría mejorar con ajustes.
Sugerencias:
Considerar transformaciones no lineales en algunas variables (por ejemplo el precio o del área construida) para ver si el ajuste mejora.
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: residuals(modelo)
## D = 0.14076, p-value < 2.2e-16
## alternative hypothesis: two-sided
Dado que el p-valor es menor que 0.05, se rechaza la hipótesis nula. Esto significa que hay evidencia estadística suficiente para concluir que los residuos no siguen una distribución normal.
## areaconst estrato habitaciones parqueaderos banios
## 2.389055 1.942693 1.404124 2.000596 2.971488
Como es posible observar en los resultados, existe una multicolinealidad no muy alta (el vlaor es inferior a 5), por lo cual no sugiere un ajuste en el modelo.
En el gráfico, se puede observar que los residuos aumentan a medida que los valores ajustados crecen, lo que quiere decir que la varianza de los residuos no es constante.
##
## studentized Breusch-Pagan test
##
## data: modelo
## BP = 1418.5, df = 5, p-value < 2.2e-16
Dado que el p-valor es menor que 0.05 lo cual es extremadamente bajo, se rechaza la hipótesis nula. Esto significa que la varianza de los residuos no es constante, y los resultados del modelo podrían no ser confiables debido a este problema.
Sugerencias:
Se puedes aplicar transformaciones a la variable dependiente para corregir el impacto de la heterocedasticidad (no homoscedasticidad) en el modelo.
Partición de los datos de forma aleatoria donde 70% sea un set para entrenar el modelo y 30% para prueba.
##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = train_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1840.38 -53.50 -4.20 44.26 1041.71
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -226.30512 15.93730 -14.200 <2e-16 ***
## areaconst 2.14633 0.05009 42.851 <2e-16 ***
## estrato 55.54428 3.21236 17.291 <2e-16 ***
## habitaciones -36.53433 3.91433 -9.333 <2e-16 ***
## parqueaderos 55.00665 3.57936 15.368 <2e-16 ***
## banios 47.39269 3.63592 13.035 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 134.9 on 3566 degrees of freedom
## Multiple R-squared: 0.7753, Adjusted R-squared: 0.775
## F-statistic: 2461 on 5 and 3566 DF, p-value: < 2.2e-16
## Valores_Reales Predicciones
## 1 240 325.728641
## 2 220 202.676801
## 3 385 367.683864
## 4 100 19.821873
## 5 170 200.941392
## 6 130 9.043487
Nota: En las filas 4 y 6 son muy diferentes de los valores reales, por lo que esto puede indicar que el modelo no está capturando bien la relación entre las variables predictoras y el precio en estos casos. Estas diferencias sugieren que el modelo tiene problemas para predecir precios bajos de manera efectiva.
RMSE (Error Cuadrático Medio):
## [1] 132.7288
Esto sugiere que las predicciones del modelo se desvían en promedio en 132.73 respecto a los valores reales, y puesto que este valor es algo elevado, esto quiere decir que los errores de la predicción podrían ser significativos en algunos casos, especialmente si la variable de precios tiene un rango más estrecho.
Error Absoluto Medio (MAE):
## [1] 81.06247
Este valor indica que el modelo está cometiendo errores de alrededor de 81 unidades en promedio, lo que puede ser significativo dependiendo del rango de precios en el conjunto de datos.
R²:
## [1] 0.8045773
Esto es un valor bastante alto, lo que sugiere que el modelo es aceptable para capturar la relación entre las variables independientes (área construida, estrato, habitaciones, parqueaderos y baños) y el precio. Por otro lado, hay un 19.54% de la variabilidad en los precios que no está explicada por el modelo, lo que indica que otras variables o factores que podrían estar influyendo en el precio.