Muy buen día María, respecto a la consulta realizada por la empresa internacional con motivo de la compra de la casa y el apartamento te comparto la siguiente información extraida de nuestra base de datos. Te recuerdo las variables con las que disponemos son las siguientes:
| Variables del conjunto de datos de viviendas | ||
| Descripción y tipo de variable | ||
| Variable | Descripción | Tipo de variable |
|---|---|---|
| zona | Ubicación de la vivienda (Zona Centro, Zona Norte…) | Categórica nominal |
| piso | Piso que ocupa la vivienda (primer piso, segundo piso…) | Ordinal |
| estrato | Estrato socioeconómico (3, 4, 5, 6…) | Ordinal |
| preciom | Precio de la vivienda en millones de pesos | Cuantitativa continua |
| areaconst | Área construida | Cuantitativa continua |
| parqueaderos | Número de parqueaderos | Cuantitativa discreta |
| banios | Número de baños | Cuantitativa discreta |
| habitaciones | Número de habitaciones | Cuantitativa discreta |
| tipo | Tipo de vivienda (Casa, Apartamento…) | Categórica nominal |
| barrio | Barrio de ubicación (20 de Julio, Álamos…) | Categórica nominal |
| longitud | Coordenada geográfica (longitud) | Cuantitativa continua |
| latitud | Coordenada geográfica (latitud) | Cuantitativa continua |
A continuación se tienen los 3 primeros datos:
## # A tibble: 3 × 13
## id zona piso estrato preciom areaconst parqueaderos banios habitaciones
## <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1209 Zona N… 02 5 320 150 2 4 6
## 2 1592 Zona N… 02 5 780 380 2 3 3
## 3 4057 Zona N… 02 6 750 445 NA 7 6
## # ℹ 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
Te comento María que la base de datos cuenta con unos errores en la misma dado que mira lo siguiente: El primer gráfico muestra los puntos por latitud y longitud de las casas de la Zona Norte y al lado derecho se observan los datos por Zonas
## Warning: Removed 3 rows containing missing values or values outside the scale range
## (`geom_point()`).
Se puede observar que en los mapas que al usar las coordenadas
geográficas de las viviendas filtradas los resultados mostraron una
distribución evidentemente al norte pero tambien unos puntos que se
encuentran dentro de las zonas que no son de interés para la empresa.
Esto puede deberse a errores de digitación de las coordenadas ó elección
erronea de la zona. Más adelante se trata este tema a profundidad con
que hacer con estas coordenadas.
#Análisis exploratorio de datos
Las variables que se van a emplear para este modelo son el precio de la casa en función del área construida, estrato, número de cuartos, número de parqueaderos, número de baños. En estos datos tenemos que los precios de vivienda rondan de los 89 a 1940 millones de pesos colombianos, el área va de 30 \(m^2\) a 1440 \(m^2\). Se tiene tambien que esta zona solo registra estratos del 3 al 6. Resulta un tanto curioso los valores de los baños con mínimo 0 baños y máximo de 10 años e igualmente con las habitaciones desde 0 hasta 10.
## preciom areaconst estrato banios
## Min. : 89.0 Min. : 30.0 Min. :3.000 Min. : 0.000
## 1st Qu.: 261.2 1st Qu.: 140.0 1st Qu.:3.000 1st Qu.: 2.000
## Median : 390.0 Median : 240.0 Median :4.000 Median : 3.000
## Mean : 445.9 Mean : 264.9 Mean :4.202 Mean : 3.555
## 3rd Qu.: 550.0 3rd Qu.: 336.8 3rd Qu.:5.000 3rd Qu.: 4.000
## Max. :1940.0 Max. :1440.0 Max. :6.000 Max. :10.000
##
## habitaciones parqueaderos
## Min. : 0.000 Min. : 1.000
## 1st Qu.: 3.000 1st Qu.: 1.000
## Median : 4.000 Median : 2.000
## Mean : 4.507 Mean : 2.182
## 3rd Qu.: 5.000 3rd Qu.: 3.000
## Max. :10.000 Max. :10.000
## NA's :287
Se observa de igual manera que no hay datos faltantes en el modelo.
## preciom areaconst estrato banios habitaciones parqueaderos
## 0 0 0 0 0 287
Las variables del modelo presentan el siguiente comportamiento
Cuando hablamos del área construida contra el precio podemos observar que entre más área mayor el precio, la concentración del mercado es bastante fuerte entre los 100 \(m^2\) y 400 \(m^2\) de igual manera se ve mucha variabilidad luego de los 600 \(m^2\) dado que pueden entrar en juego variables como el lujo o el barrio en específico. El valor alejado de la casa de 1400 \(m^2\) con un precio inferior a los 500 millones de pesos parece no ser realista respecto a los demás datos asi como pueda ser que en la segmentación de datos el termino casa tambien se llegara a emplear para bodegas o terrenos con amplio espacio pero poca construcción.
Se puede observar la segmentación del precio a partir del estrato, donde este va en aumento. Se puede observar que por ejemplo es poco probable encontrar una casa estrato 6 por un precio medio de una casa de estrato 3. El estrato 3 presenta más agrupación que los demás estratos. El estrato 5 presenta varios datos atipicos asi como en el caso de los estratos 5 y 6 una gran variabilidad respecto a los precios de las casas en estrato 3 y 4. Estos datos atípicos se eliminaran del modelo para evitar confusiones al modelo.
Respecto al número de baños y el precio se puede decir que no parece ser tan influyente y puede que incluso llegue a tener multicolinealidad respecto al estrato.
Se observa una tendencia positiva moderada: en promedio, las viviendas con mayor número de habitaciones tienden a tener precios más altos. Esto es razonable, ya que un mayor número de habitaciones suele estar asociado a viviendas más grandes o con mejores características.
Una vez se revisan estas variables, se procede a ver las correlaciones que hay entre estas variables:
El modelo identifica al área construida como el predictor más influyente del precio con una correlación de 0.73, seguida por el estrato con un valor de 0.61. El estrato actúa como un ancla de valor que segmenta el mercado de forma ascendente, aunque presenta una varianza creciente en los niveles 5 y 6, donde se concentran la mayoría de los valores atípicos que superan los 1500 en precio. Por otro lado, variables como el número de baños muestran una correlación moderada (0.52), evidenciando que el precio tiende a estabilizarse o dispersarse después de los 6 baños, mientras que el número de habitaciones resulta ser el predictor menos robusto con apenas un 0.32.
#Modelo de regresión
Basado en los hallazgos anteriores, el modelo de regresión lineal múltiple propuesto para estimar el precio de la vivienda toma la siguiente forma funcional:
\[Precio = \beta_0 + \beta_1 Area + \beta_2 Estrato + \beta_3 Habitaciones + \beta_4 Parqueaderos + \beta_5 Baños + \epsilon\]
Donde: * \(\beta_0\): Representa el intercepto del modelo. * \(\beta_i\): Representa el efecto marginal de cada variable independiente sobre el precio, manteniendo las demás constantes. * \(\epsilon\): Es el término de error aleatorio.
##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = datosmodelo1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -784.29 -77.56 -16.03 47.67 978.61
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -238.17090 44.40551 -5.364 1.34e-07 ***
## areaconst 0.67673 0.05281 12.814 < 2e-16 ***
## estrato 80.63495 9.82632 8.206 2.70e-15 ***
## habitaciones 7.64511 5.65873 1.351 0.177
## parqueaderos 24.00598 5.86889 4.090 5.14e-05 ***
## banios 18.89938 7.48800 2.524 0.012 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 155.1 on 429 degrees of freedom
## (287 observations deleted due to missingness)
## Multiple R-squared: 0.6041, Adjusted R-squared: 0.5995
## F-statistic: 130.9 on 5 and 429 DF, p-value: < 2.2e-16
Al momento de modelar se observa que la presencia de valores extremos (como -784 y 978) indica que hay observaciones que el modelo no ajusta bien, lo cual es común en datos de precios.
Respecto a los coeficientes se tiene que por cada unidad adicional de área construida, el precio aumenta en promedio 0.6767 unidades. Muy significativo tenemos que Al aumentar en un nivel el estrato socioeconómico, el precio se incrementa en promedio 80.63 unidades. Cada habitación adicional añade 7.645 unidades al precio, pero no es estadísticamente significativo (p = 0.177 > 0.05). Esto podría deberse a que el efecto de las habitaciones ya está recogido por el área construida o porque en la muestra no hay suficiente variabilidad.Por cada puesto de parqueadero adicional, el precio aumenta en promedio 24.01 unidades. Altamente significativo (p < 0.001). Cada baño extra incrementa el precio en 18.90 unidades. Es significativo al nivel del 5% (p = 0.012).
El modelo sugiere que el área construida, el estrato, el número de parqueaderos y el número de baños son factores relevantes para explicar el precio. Las habitaciones, en cambio, no aportan significativamente en este modelo (quizás por colinealidad con el área). El ajuste es aceptable (R² ≈ 60%), pero aún queda un 40% de variabilidad no explicada, por lo que podrían faltar otras variables importantes (ubicación, antigüedad, etc.).
Es importante recordar que se excluyeron 287 observaciones con datos faltantes, lo que podría afectar la representatividad de los resultados. Sería conveniente investigar si esos faltantes introducen algún sesgo.
##¿Cómo mejorarlo? El modelo anterior no cuenta con una limpieza de datos atipicos e igualmente inicialmente una interpolación a partir de coordenadas con la cual saber acerca de los NA de la zona que tiene la base inicial de las viviendas de Cali. Se puede mejorar de igual manera realizando el cambio del intercepto cambiando los estratos por variables dummy o redefiniendo esta como los metros cuadrados construidos a sus valores menos el minimo o el promedio de los datos.
#Validación de supuestos Para la validación de los supuestos del modelo de regresión lineal múltiple se revisan los siguientes supuestos:
Los residuales positivos indican que el modelo subestimó el precio real
en esas cantidades. Que los tres valores ajustados sean iguales (1000)
sugiere que esas observaciones comparten las mismas características en
las variables predictoras (misma área, estrato, etc.), pero sus precios
reales son distintos, lo que apunta a que hay factores no incluidos en
el modelo que influyen en el precio.
Si estos residuales son grandes en comparación con el error estándar residual (155.1), podrían ser valores atípicos o casos mal explicados. Por ejemplo, 405 es más del doble del error típico, lo que indica que esas observaciones se alejan mucho de lo esperado. Sería útil identificarlas y examinar si tienen características especiales (ubicación, calidad, etc.) que el modelo no está capturando.
##
## Shapiro-Wilk normality test
##
## data: residuals(modelo)
## W = 0.85246, p-value < 2.2e-16
El gráfico de los residuales revela que el modelo de regresión presenta desviaciones importantes respecto a los supuestos teóricos, lo que afecta la precisión de las inferencias y la validez de las predicciones individuales.Los residuales indican que el modelo actual, aunque explica un 60% de la variabilidad, presenta problemas de ajuste en las colas y falta de normalidad. Abordar estos aspectos mediante transformaciones y un análisis más detallado de los casos atípicos permitirá obtener estimaciones más fiables y una mejor comprensión de los factores que determinan el precio. De igual manera el valor p observado en el test de Shapiro-Wilk muestra que los residuos no tienen una distribución normal.
##
## studentized Breusch-Pagan test
##
## data: modelo
## BP = 80.281, df = 5, p-value = 7.33e-16
Tanto el gráfico como el resultado del test Breusch-Pagan muestran que existe heterocedasticidad dado que el gráfico no muestra una dispersión similar en todo el gráfico y que el p valor esta por mucho debajo del 0.05 Se podria mejorar con una transformación logaritmica del precio o un modelo GLS.
##
## Durbin-Watson test
##
## data: modelo
## DW = 1.7615, p-value = 0.005472
## alternative hypothesis: true autocorrelation is greater than 0
La independencia muestra que hay una autocorrelación debil o nula. Por ese lado se puede decir que almenos en cuanto a la independencia de los errores el modelo es aceptable.
## areaconst estrato habitaciones parqueaderos banios
## 1.460998 1.307757 1.721015 1.226334 1.967421
#Predicciones del precio de la casa solicitada
## 1
## 312.101
El modelo estima que el precio de la casa con esas caracteristicas ronda los 312 millones de pesos. La empresa al contar con un crédito máximo de 350 millones se le buscan las mejores opciones para este.
## # A tibble: 5 × 14
## id zona piso estrato preciom areaconst parqueaderos banios habitaciones
## <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1025 Zona N… <NA> 3 310 265 2 3 3
## 2 981 Zona N… <NA> 4 310 100 2 4 5
## 3 1114 Zona N… <NA> 4 310 120 1 4 4
## 4 4458 Zona N… 02 4 315 270 2 4 4
## 5 1209 Zona N… 02 5 320 150 2 4 6
## # ℹ 5 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>,
## # diferencia <dbl>
#Modelo para el escenario 2
## preciom areaconst estrato banios
## Min. : 75.0 Min. : 40.00 Min. :3.00 Min. :0.000
## 1st Qu.: 175.0 1st Qu.: 65.00 1st Qu.:4.00 1st Qu.:2.000
## Median : 245.0 Median : 85.00 Median :5.00 Median :2.000
## Mean : 297.3 Mean : 97.47 Mean :4.63 Mean :2.488
## 3rd Qu.: 335.0 3rd Qu.:110.00 3rd Qu.:5.00 3rd Qu.:3.000
## Max. :1750.0 Max. :932.00 Max. :6.00 Max. :8.000
##
## habitaciones parqueaderos
## Min. :0.000 Min. : 1.000
## 1st Qu.:3.000 1st Qu.: 1.000
## Median :3.000 Median : 1.000
## Mean :2.966 Mean : 1.415
## 3rd Qu.:3.000 3rd Qu.: 2.000
## Max. :6.000 Max. :10.000
## NA's :406
## preciom areaconst estrato banios habitaciones parqueaderos
## 0 0 0 0 0 406
##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = datosmodelo2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1092.02 -42.28 -1.33 40.58 926.56
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -261.62501 15.63220 -16.736 < 2e-16 ***
## areaconst 1.28505 0.05403 23.785 < 2e-16 ***
## estrato 60.89709 3.08408 19.746 < 2e-16 ***
## habitaciones -24.83693 3.89229 -6.381 2.11e-10 ***
## parqueaderos 72.91468 3.95797 18.422 < 2e-16 ***
## banios 50.69675 3.39637 14.927 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 98.02 on 2375 degrees of freedom
## (406 observations deleted due to missingness)
## Multiple R-squared: 0.7485, Adjusted R-squared: 0.748
## F-statistic: 1414 on 5 and 2375 DF, p-value: < 2.2e-16
##
## Shapiro-Wilk normality test
##
## data: residuals(modelo2)
## W = 0.79118, p-value < 2.2e-16
##
## studentized Breusch-Pagan test
##
## data: modelo2
## BP = 754.81, df = 5, p-value < 2.2e-16
##
## Durbin-Watson test
##
## data: modelo2
## DW = 1.5333, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
## areaconst estrato habitaciones parqueaderos banios
## 2.066518 1.545162 1.429280 1.737878 2.529494
## 1
## 675.0247
## # A tibble: 5 × 14
## id zona piso estrato preciom areaconst parqueaderos banios habitaciones
## <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 7512 Zona S… <NA> 5 670 300 3 5 6
## 2 4394 Zona S… 03 5 690 486 2 4 4
## 3 5273 Zona S… 12 6 660 224. 2 5 4
## 4 4266 Zona S… 05 6 700 250 2 4 5
## 5 5306 Zona S… 12 5 650 275 2 5 5
## # ℹ 5 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>,
## # diferencia <dbl>
Para la segunda solicitud se analizó el mercado de apartamentos ubicados en la zona sur de la ciudad, considerando las características solicitadas por el cliente: área construida de aproximadamente 300 m², 5 habitaciones, 3 baños y 3 parqueaderos, en estratos 5 o 6.
El modelo de regresión estimó un precio aproximado de r round(prediccion2,2) millones de pesos para una vivienda con estas características.
Dado que el cliente cuenta con un crédito preaprobado de 850 millones de pesos, se filtraron en la base de datos aquellos apartamentos que cumplen con esta restricción y presentan características similares.
A partir de este filtrado se identificaron cinco ofertas potenciales, las cuales fueron representadas en un mapa para analizar su ubicación dentro de la zona sur de la ciudad.