María es propietaria de la agencia inmobiliaria C&A (Casas y Apartamentos) ubicada en la ciudad de Cali. Actualmente, el mercado de bienes raíces en la ciudad ha presentado una desaceleración debido a factores económicos y sociales, lo que ha reducido la actividad de compra y venta de viviendas. Sin embargo, se espera que esta situación mejore en el futuro cercano gracias a la disponibilidad de crédito por parte de instituciones financieras que están impulsando el sector de la construcción y la adquisición de vivienda.
En este contexto, una empresa internacional ha solicitado a la agencia asesoría para la compra de dos viviendas destinadas a alojar a dos de sus empleados y sus respectivas familias en la ciudad. Para cada caso se han especificado ciertas características deseadas de las viviendas, tales como el tipo de propiedad, área construida, número de parqueaderos, número de baños, número de habitaciones, estrato socioeconómico y zona de ubicación. Además, se cuenta con un monto de crédito preaprobado para cada vivienda, el cual establece una restricción presupuestal para la selección de las propiedades.
Con el fin de brindar una recomendación informada, se utilizarán técnicas de modelación estadística basadas en regresión lineal múltiple para analizar la relación entre el precio de las viviendas y sus características estructurales y de ubicación. Para ello se empleará una base de datos de viviendas comercializadas recientemente en la ciudad, la cual contiene información relevante como área construida, número de habitaciones, baños, parqueaderos, estrato, zona y tipo de vivienda, entre otras variables.
A partir de este análisis se buscará estimar modelos que permitan explicar y predecir el precio de las viviendas en función de sus características. Con base en estos resultados se evaluará si las condiciones solicitadas por la empresa internacional son coherentes con los montos de crédito disponibles y se formularán recomendaciones sobre el tipo de vivienda que podría ajustarse mejor a cada caso.
| Nombre | Descripción | Clasificación por naturaleza |
|---|---|---|
| id | Llave registro único | Cuantitativa discreta |
| zona | ubicación de la vivienda : Zona Centro, Zona Norte,… | Cualitativa nominal |
| piso | piso que ocupa la vivienda : primer piso, segundo piso… | Cuantitativa discreta |
| estrato | estrato socio-económico : 3,4,5,6 | Cualitativa 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 | Cualitativa nominal |
| barrio | barrio de ubicación de la vivienda : 20 de Julio, alamos,.. | Cualitativa nominal |
| longitud | coordenada geográfica | Cuantitativa continua |
| latitud | coordenada geográfica | Cuantitativa continua |
## [1] 8322 13
Se cuenta con un dataset de 8322 registros y 13 variables o atributos.
El primer paso en el procesamiento y limpieza de los datos fue identificar los registros duplicados. Partiendo de un total de 8322 registros, aplicamos la función ‘duplicated’ de R. se encontraron un total de 1 registro duplicados, los cuales son removidos para quedar con 8321 registros.
Los errores en los datos y valores atípicos se identificaron a partir de gráficas y tablas que permiten tener una visión completa y complementaria para evitar que se omitan datos que deben ser tratados; para esto se debe asegurar que se aplica el gráfico correcto por cada tipo de variable; por lo tanto, se hace división del análisis entre variables Cualitativas o categóricas (incluyendo las cuantitativas discretas de pocos valores) y las variables Cuantitativas continuas y discretas (con muchos valores).
Para este tipo de variables se escogen las gráficas de barras al ser por excelencia la mejor forma de representarlas.
En la Figura 1, se pueden observar las gráficas de la 1.1 a la 1.6, donde aparentemente las variables parecen presentar valores dentro del rango esperado según el contexto de cada variable; solo se observa en algunas graficas la etiqueta “NA” que será tratada más adelante. La variable “barrio” no fue considerada dentro de estas graficas ya que presenta demasiadas categorías (>400) y no se hace legible su interpretación.
Figura 1: Gráficas de barras
Para las variables cuantitativas, si bien se pueden representar con histogramas, no son tan buenas para identificar datos atípicos, por lo que se utilizaron mejor graficas de cajas.
En la Figura 2, se pueden observar las gráficas de la 2.1 y 2.2, donde estas variables presentan una gran cantidad de datos atípicos que se remontan unos con otros (para más detalle ver tabla 2.1), dificultando identificar la cantidad de estos. Analizando la lógica de los valores para estas variables, si bien valores altos para “preciom” o “areaconst” son poco comunes, siguen siendo valores posibles, por lo que no se observan inconsistencias en los valores o rango que estos están tomando.
Figura 2: Graficas de Cajas
| Num_Inconsistencias | Num_Atipicos | |
|---|---|---|
| preciom | 0 | 552 |
| areaconst | 0 | 382 |
NOTA IMPORTANTE: como se está trabajando con el mismo dataset de la actividad pasada, el detalle profundo del análisis exploratorio de los datos AED se relaciona al detalle en el Anexo 4
## # A tibble: 3 × 10
## zona estrato preciom areaconst parqueaderos banios habitaciones tipo latitud
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <dbl>
## 1 Zona… 5 320 150 2 4 6 Casa 3.48
## 2 Zona… 5 780 380 2 3 3 Casa 3.49
## 3 Zona… 6 750 445 4 7 6 Casa 3.39
## # ℹ 1 more variable: longitud <dbl>
En este 1er paso se realiza el filtro al dataset de viviendas para quedar solo con los registros correspondientes a “Casa” en la variable “tipo” y a “Zona Norte” en la variable “zona”. Se presenta tabla donde se observa el top 3 de los registros de la información filtrada base1
table(base1$tipo)
##
## Casa
## 722
table(base1$zona)
##
## Zona Norte
## 722
con el código table(base1$[nombre_variable]) podemos comprobar cuantos registros hay por cada una de las categorías de la variable seleccionada. para los siguientes casos, se observa que solo hay 722 registros tanto para para “zona” como para “tipo” donde solo hay categorías únicas de “casa” y “Zona Norte”
Figura 4.1 - Ubicación Viviendas
En la figura 4.1 se puede observar que las viviendas filtradas para la Zona Norte, si bien están ubicadas en su mayoría en esta zona, se observan casos en los que no necesariamente están dentro de dicha zona; esto puede deberse a varios motivos, por ejemplo ya sea por la imprecisión a la hora de registrar los datos de coordenadas, diferencia en los límites establecidos para cada uno de las zona o por ejemplo al manejo interno de la compañía en la nomenclatura de zonas Vs los establecidos realmente en bases de datos de la ciudad.
A continuación se presenta un análisis exploratorio de datos de la variable respuesta (precio de la vivienda) en función de las diversas variables predictoras utilizando gráficos interactivos:
| zona | n | precio_promedio | precio_min | Q1 | precio_mediana | Q3 | precio_max | desviacion_estandar | coef_var |
|---|---|---|---|---|---|---|---|---|---|
| Zona Norte | 722 | 445.91 | 89 | 261.25 | 390 | 550 | 1940 | 268.36 | 0.6 |
En general este análisis exploratorio muestra que el precio de venta de las viviendas tiene mayor asociación positiva con variables como Area Construida y Estrato, presentando coeficientes de 0.687 y 0.61 respectivamente, los cuales se pueden considerar como moderados, lo que significa que estas variables pueden aportar más para la predicción del precio en el modelo de rlm; otras variables como numero de baños y numero de habitaciones presentan un coeficiente de correlación débil o muy bajo de 0.264 para ambas variables, los cual no son tan significativas en describir el comportamiento del precio de venta.
Con respecto a la relación del precio y la zona, se observan datos no muy dispersos (coef var de 60%), la vivienda más barata cuesta 89 (unidad de dinero), donde el 25% de las viviendas presentan un precio de al menos 261.25 (unidad de dinero), el 50% de las viviendas presentan un precio de 390 (unidad de dinero), sin embargo la media es 445.91 (unidad de dinero), por lo que en este segmento se pueden encontrar viviendas con precios de ventas atipicos o outliers tal como se ve en la gráfica. el 75% de las viviendas valen 550 (unidad de dinero) y la vivienda más costosa cuesta 1940 (unidad de dinero), en parte confirmando porque la media es más alta que la mediana.
A continuación se implementa un modelo de regresión lineal múltiple para predecir la variable respuesta “precio de la vivienda” en función de otras variables como son:
de forma general quedaría así:
\[ precio=f(area,estrato,num habitaciones,num parqueaderos,num banños) \]
Luego de correr el modelo, se obtienen el siguiente cuadro resumen:
##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = base1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -863.38 -79.63 -15.77 44.20 1028.48
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -229.92058 28.98531 -7.932 8.28e-15 ***
## areaconst 0.76550 0.04353 17.585 < 2e-16 ***
## estrato 78.62555 7.12646 11.033 < 2e-16 ***
## habitaciones 1.12658 4.02604 0.280 0.779693
## parqueaderos 33.14104 5.44883 6.082 1.93e-09 ***
## banios 20.17681 5.31167 3.799 0.000158 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 155.2 on 716 degrees of freedom
## Multiple R-squared: 0.6679, Adjusted R-squared: 0.6656
## F-statistic: 288 on 5 and 716 DF, p-value: < 2.2e-16
se parte de la siguiente regla:
p-value < 0.05 → variable significativa
p-value ≥ 0.05 → variable no significativa
Partiendo de esta regla y según la tabla anterior, todas las variables menos “numero de habitaciones” son significativas para el modelo ya que tienen un p-value menos a 0.05.
Para el caso de la variable “numero de habitaciones”, cuyo p-value es 0.779, esto es > 0.05, podemos concluir que no es estadísticamente significativa en el modelo, esto significa que no aporta información adicional al modelo cuando consideramos las otras variables. Es puede tener sentido en este contexto, ya que “generalmente” el número de habitaciones suele estar correlacionada con el área construida.
Area Construida
Coeficinte 0.7655
A partir de los resultados anteriores, podemos interpretar que si mantuviéramos constantes las otras variables predictoras, un incremento de una unidad en el área construida está asociado con un aumento promedio de 0.77 millones (unidades de dinero) en el precio de la vivienda. esto puede tener sentido porque las viviendas más grandes suelen ser más costosas.
Estrato
Coeficiente 78.63
A partir de los resultados anteriores, podemos interpretar que si mantuviéramos constantes las otras variables predictoras, un incremento de una unidad en el estrato socioeconómico, está asociado con un aumento promedio de 78.63 millones (unidades de dinero) en el precio de la vivienda. esto puede tener sentido porque es coherente con lo que se observa en el mercado inmobiliario.
Numero Habitaciones
Coeficiente 1.126 (pero no significativo)
El número de habitaciones no resulta estadísticamente significativo en este modelo, lo que nos indica que incluyendo las otras variables, esta variable, no aporta información adicional relevante para explicar el precio de la vivienda. cómo se mencionó anteriormente, esto tiene sentido ya que el número de habitaciones está relacionado con el área construida
Numero Parqueaderos
Coeficiente 33.14
A partir de los resultados anteriores, podemos interpretar que si mantuviéramos constantes las otras variables predictoras, un incremento de una unidad en el número de parqueaderos, está asociado con un aumento promedio de 33.14 millones (unidades de dinero) en el precio de la vivienda. esto puede tener sentido principalmente en zonas urbanas, para este caso es la ciudad de Cali.
Numero Baños
Coeficiente 20.17
A partir de los resultados anteriores, podemos interpretar que si mantuviéramos constantes las otras variables predictoras, un incremento de una unidad en el número de baños, está asociado con un aumento promedio de 20.14 millones (unidades de dinero) en el precio de la vivienda. esto puede tener sentido ya que simplemente refleja la realidad del mercado.
el coeficiente R^2 de 0.6679 indica que aproximadamente el 66.8% de la variabilidad en el precio de las viviendas es explicada por las variables contempladas en este modelo.
El F-estadístico global de 288 con p-value < 0.05 (2.2e-16), el cual nos dice su el modelo completo tiene capacidad explicativa, permite concluir que el modelo tiene buena capacidad explicativa.
Si se elimina la variable número de habitaciones, puede que el R2 se mantenga o incluso baje un poco, sin embargo, puede que el R2 ajustado si mejore, esto indicaría que el modelo sin la variable número de habitaciones es más eficiente.
Se puede dar una revisión más a profundidad al tema de “multicolinealidad” a variables como area construida, numero habitaciones y numero de baños, sin embargo, en el análisis exploratorio de los datos, se observa como ninguna variable presenta un coeficiente mayor a 0.8, por lo que no se puede afirmar que exista multicolinealidad fuerte
en general el modelo podría mejorarse evaluando diferentes escenarios y sobre todo validando los supuestos del modelo de regresión, tales como el mencionado anteriormente de multicolinealidad, evaluaciones alternativas eliminando variables no significativas, evaluar la capacidad predictiva del modelo mediante técnicas de validación cruzada. Asimismo, el análisis de residuos y la identificación de observaciones influyentes permiten verificar la validez de los supuestos del modelo y mejorar su capacidad explicativa.
A continuación se muestra el resultado de la evaluación de los supuestos básicos de un modelo de regresión lineal, donde si buen puede que alguno no se cumpla, no se entrara a hacer ajustes o transformaciones necesarias para que cumpla ya que no es el objetivo de este ejercicio.
En este grafico se observa que los residuos están dispersos aleatoriamente alrededor de 0, (aunque es de resaltar que las dispersión de los residuos aumenta cuando el precio predicho aumenta, pero esto puede estar más relacionado con heterocedasticidad y no con falta de linealidad), no se presentan patrones sistemáticos y no se observa una curva clara, por lo que se puede concluir que el supuesto de linealidad parece razonablemente cumplirse, esto indica que la relación entre la variable respuesta y las variables explicativas es aproximadamente lineal.
En la validación de este supuesto, lo que espera verse en este grafico Q-Q de normalidad de residuos es que los puntos estén alineados aproximadamente sobre la línea diagonal sin descuacones fuertes en los extremos, sin embargo en este grafico se observa que en la parte central los puntos siguen muy bien la línea diagonal, sin embargo en los extremos o colas, espacialmente en la cola superior, los puntos se desvían de la línea. Se pueden observar algunos pintos marcados (208, 513 y 632) que corresponde a residuos grandes.
De lo anterior se concluye entonces que la normalidad se cumple aproximadamente en el centro de la distribución pero hay desviaciones en las colas, con valores atipicos más grandes de los que se esperaría en una desviación normal. Si bien se puede considerar una normalidad de residuos razonablemente aceptable, puede que para otros fines deba revisarse más a detalle dichos valores atipicos, aplicar transformaciones o utilizar otros modelos.
A simple vista, se puede observar en este grafico que el supuesto de homocedasticidad no se está cumpliendo completamente ya que en este tipo de grafico (Scale-Location) esperamos que los puntos estén dispersos de forma relativamente uniforme, que la línea roja sea aproximadamente horizontal y que no se observe aumento o disminución sistemática de la dispersión, de las cuales ninguno de estos 3 principios se cumple.
En esta grafica se observa que la línea roja tiene una pendiente positiva y a medida que aumentan los valores ajustados (precio estimado), aumenta la dispersión de los residuos. además los puntos están más concentrados en la parte izquierda y la dispersión se abre hacia la derecha. Por lo tanto, tal como se sospechaba en el supuesto anterior, se está presentando heterocedasticidad.
En este grafico se utiliza la distancia de Cook para detectar observaciones influyentes, donde se mide principalmente el impacto sobre el modelo si se eliminara determinada observación, o mejor dicho, identifica observaciones que tienen demasiada influencia en la estimación de los coeficientes del modelo.
Para este caso puntual se observan 3 registros que destacados (632,513 y 186) donde la observación 632 es a que tendría mayor impacto en el modelo. dichas observaciones podrían corresponder a viviendas con precios muy altos o muy bajos, viviendas con características poco comunes (Areas grandes con pocas habitaciones) o posibles valores atipicos.
## areaconst estrato habitaciones parqueaderos banios
## 1.585075 1.468551 1.620809 1.381668 1.961217
Se parte de los resultados de VIF (Variance Inflation Factor) para evaluar de forma correcta la multicolinealidad, donde se tienen las siguientes reglas:
Con base en dichas reglas de interpretación, todas las variables están entre 1 y 5 VIF, por lo que en este supuesto se puede concluir que se presenta multicolinealidad baja o aceptable.
Con base en las características de la primera solicitud:
y el modelo previamente desarrollado:
\[ preciom=β0+β1areaconst+β2estrato+β3habitaciones+β4parqueaderos+β5banios \]
se procederá a predecir el valor del precio de la vivienda para ver si se ajusta con el valor del crédito aprobado.
## [1] "vivienda para Estrato 4"
## 1
## 315.6817
## [1] "vivienda para Estrato 5"
## 1
## 394.3072
Tal como se puede observar, cuando ingresamos al modelo las características de la vivienda, en este caso teniendo en cuenta que sea estrato 4, vemos que nos da como predicción del valor de la vivienda por 315.68 millones, es decir, que con las características que se solicita, se puede encontrar una vivienda con las condiciones deseadas donde se podrá comprar con el crédito preaprobado.
Para el caso donde hacemos la predicción del precio pero teniendo presente que sea estrato 5, se observa que la predicción del precio es 394.3 millones, superando el valor del crédito preaprobado, por lo que una vivienda con las características antes mencionadas en este estrato no será posible conseguirla.
A continuación se presentan las sugerencias de viviendas que se ajustan al monto preaprobado del crédito, teniendo en cuenta las siguientes condiciones:
tenemos como resultado una lista de 8 viviendas que cumplen con los requisitos detalladas en la siguiente tabla:
## # A tibble: 8 × 7
## preciom precio_predicho areaconst habitaciones banios parqueaderos estrato
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 265 307. 162 4 3 1 4
## 2 275 307. 190 3 2 1 4
## 3 340 316. 158 3 2 2 4
## 4 600 327. 160 5 4 1 4
## 5 340 327. 162 4 4 1 4
## 6 330 329. 165 4 4 1 4
## 7 500 338. 160 4 3 2 4
## 8 260 350. 150 3 4 2 4
Para tener una mejor visual, se presenta la ubicación exacta de las viviendas de la tabla anterior con su ubicación exacta en el mapa y una breve descripción al pasar el mouse sobre cada opción.
## # A tibble: 3 × 10
## zona estrato preciom areaconst parqueaderos banios habitaciones tipo latitud
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <dbl>
## 1 Zona… 4 290 96 1 2 3 Apar… 3.45
## 2 Zona… 3 78 40 1 1 2 Apar… 3.4
## 3 Zona… 6 875 194 2 5 3 Apar… 3.46
## # ℹ 1 more variable: longitud <dbl>
En este 1er paso se realiza el filtro al dataset de viviendas para quedar solo con los registros correspondientes a “Apartamento” en la variable “tipo” y a “Zona Sur” en la variable “zona”. Se presenta tabla donde se observa el top 3 de los registros de la información filtrada base2
table(base2$tipo)
##
## Apartamento
## 2787
table(base2$zona)
##
## Zona Sur
## 2787
con el código table(base2$[nombre_variable]) podemos comprobar cuantos registros hay por cada una de las categorías de la variable seleccionada. para los siguientes casos, se observa que solo hay 2787 registros tanto para para “zona” como para “tipo” donde solo hay categorías únicas de “Apartamento” y “Zona Sur”
Figura 7.1 - Ubicación Viviendas
En la figura 7.1 se puede observar que las viviendas filtradas para la Zona Sur, si bien están ubicadas en su mayoría en esta zona, se observan casos en los que no necesariamente están dentro de dicha zona; esto puede deberse a varios motivos, por ejemplo ya sea por la imprecisión a la hora de registrar los datos de coordenadas, diferencia en los límites establecidos para cada uno de las zona o por ejemplo al manejo interno de la compañía en la nomenclatura de zonas Vs los establecidos realmente en bases de datos de la ciudad.
A continuación se presenta un análisis exploratorio de datos de la variable respuesta (precio de la vivienda) en función de las diversas variables predictoras utilizando gráficos interactivos:
| zona | n | precio_promedio | precio_min | Q1 | precio_mediana | Q3 | precio_max | desviacion_estandar | coef_var |
|---|---|---|---|---|---|---|---|---|---|
| Zona Sur | 2787 | 297.29 | 75 | 175 | 245 | 335 | 1750 | 191.55 | 0.64 |
En general este análisis exploratorio muestra que el precio de venta de las viviendas tiene mayor asociación positiva con variables como Area Construida, Nro Baños y Estrato, presentando coeficientes de 0.758, 0.72 y 0.673 respectivamente, los cuales se pueden considerar como moderados-altos, lo que significa que estas variables pueden aportar más para la predicción del precio en el modelo de rlm; otras variables como numero de habitaciones presentan un coeficiente de correlación débil o muy bajo de 0.264, lo cual no son tan significativas en describir el comportamiento del precio de venta.
Con respecto a la relación del precio y la zona, se observan datos no muy dispersos (coef var de 64%), la vivienda más barata cuesta 75 millones (unidad de dinero), donde el 25% de las viviendas presentan un precio de al menos 175 millones (unidad de dinero), el 50% de las viviendas presentan un precio de 245 millones (unidad de dinero), sin embargo la media es 297 millones (unidad de dinero), por lo que en este segmento se pueden encontrar viviendas con precios de ventas atipicos o outliers tal como se ve en la gráfica. el 75% de las viviendas valen 335 millones (unidad de dinero) y la vivienda más costosa cuesta 1750 (unidad de dinero), en parte confirmando porque la media es más alta que la mediana.
A continuación se implementa un modelo de regresión lineal múltiple para predecir la variable respuesta “precio de la vivienda” en función de otras variables como son:
de forma general quedaría así:
\[ precio=f(area,estrato,num habitaciones,num parqueaderos,num banños) \]
Luego de correr el modelo, se obtienen el siguiente cuadro resumen:
##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = base2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1194.88 -38.40 -2.56 37.93 931.36
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -268.02884 13.08317 -20.487 < 2e-16 ***
## areaconst 1.40366 0.04897 28.664 < 2e-16 ***
## estrato 61.63779 2.69254 22.892 < 2e-16 ***
## habitaciones -19.32758 3.37406 -5.728 1.12e-08 ***
## parqueaderos 57.86343 3.29687 17.551 < 2e-16 ***
## banios 48.54336 3.00716 16.143 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 94.37 on 2781 degrees of freedom
## Multiple R-squared: 0.7577, Adjusted R-squared: 0.7573
## F-statistic: 1740 on 5 and 2781 DF, p-value: < 2.2e-16
se parte de la siguiente regla:
p-value < 0.05 → variable significativa
p-value ≥ 0.05 → variable no significativa
Partiendo de esta regla y según la tabla anterior, todas las variables son significativas para el modelo ya que tienen un p-value menos a 0.05.
A diferencia del modelo para el caso de vivienda 1, la variable Num habitaciones para el caso 2 si aporta informacion adicional al modelo cuando se consideran las otras variables.
Area Construida
Coeficinte 1.403
A partir de los resultados anteriores, podemos interpretar que si mantuviéramos constantes las otras variables predictoras, un incremento de una unidad en el área construida está asociado con un aumento promedio de 1.403 millones (unidades de dinero) en el precio de la vivienda. esto puede tener sentido porque las viviendas más grandes suelen ser más costosas.
Estrato
Coeficiente 61.63
A partir de los resultados anteriores, podemos interpretar que si mantuviéramos constantes las otras variables predictoras, un incremento de una unidad en el estrato socioeconómico, está asociado con un aumento promedio de 61.63 millones (unidades de dinero) en el precio de la vivienda. esto puede tener sentido porque es coherente con lo que se observa en el mercado inmobiliario.
Numero Habitaciones
Coeficiente -19.32
A partir de los resultados anteriores, podemos interpretar que si mantuviéramos constantes las otras variables predictoras, un incremento de una unidad en el estrato socioeconómico, está asociado con una disminucion promedio de 19.32 millones (unidades de dinero) en el precio de la vivienda. Esto se debera interpretar a la luz de un conocimiento mas detallado y especializado en el mercado inmobiliario, pero podria significar que personas que buscan casas grandes por ejemplo, quieren habitaciones grandes, entonces para un tamaño determinado de la vivienda, aumentar el numero de habitaciones conservando la misma area construida implicaria habitaciones mas pequeñas.
Numero Parqueaderos
Coeficiente 57.86
A partir de los resultados anteriores, podemos interpretar que si mantuviéramos constantes las otras variables predictoras, un incremento de una unidad en el número de parqueaderos, está asociado con un aumento promedio de 57.86 millones (unidades de dinero) en el precio de la vivienda. esto puede tener sentido principalmente en zonas urbanas, para este caso es la ciudad de Cali.
Numero Baños
Coeficiente 48.54
A partir de los resultados anteriores, podemos interpretar que si mantuviéramos constantes las otras variables predictoras, un incremento de una unidad en el número de baños, está asociado con un aumento promedio de 48.54 millones (unidades de dinero) en el precio de la vivienda. esto puede tener sentido ya que simplemente refleja la realidad del mercado.
el coeficiente R^2 de 0.7577 indica que aproximadamente el 75.77% de la variabilidad en el precio de las viviendas es explicada por las variables contempladas en este modelo.
El F-estadístico global de 1740 con p-value < 0.05 (2.2e-16), el cual nos dice que el modelo completo tiene capacidad explicativa.
Si se elimina la variable número de habitaciones, puede que el R2 se mantenga o incluso baje un poco, sin embargo, puede que el R2 ajustado si mejore, esto indicaría que el modelo sin la variable número de habitaciones es más eficiente.
Se puede dar una revisión más a profundidad al tema de “multicolinealidad” a variables como area construida, numero habitaciones y numero de baños, sin embargo, en el análisis exploratorio de los datos, se observa como ninguna variable presenta un coeficiente mayor a 0.8, por lo que no se puede afirmar que exista multicolinealidad fuerte
en general el modelo podría mejorarse evaluando diferentes escenarios y sobre todo validando los supuestos del modelo de regresión, tales como el mencionado anteriormente de multicolinealidad, evaluaciones alternativas eliminando variables no significativas, evaluar la capacidad predictiva del modelo mediante técnicas de validación cruzada. Asimismo, el análisis de residuos y la identificación de observaciones influyentes permiten verificar la validez de los supuestos del modelo y mejorar su capacidad explicativa.
A continuación se muestra el resultado de la evaluación de los supuestos básicos de un modelo de regresión lineal, donde si buen puede que alguno no se cumpla, no se entrara a hacer ajustes o transformaciones necesarias para que cumpla ya que no es el objetivo de este ejercicio.
En este grafico se observa que los residuos están dispersos aleatoriamente alrededor de 0, (aunque es de resaltar que las dispersión de los residuos aumenta cuando el precio predicho aumenta, pero esto puede estar más relacionado con heterocedasticidad y no con falta de linealidad), no se presentan patrones sistemáticos y no se observa una curva clara, por lo que se puede concluir que el supuesto de linealidad parece razonablemente cumplirse, esto indica que la relación entre la variable respuesta y las variables explicativas es aproximadamente lineal.
En la validación de este supuesto, lo que espera verse en este grafico Q-Q de normalidad de residuos es que los puntos estén alineados aproximadamente sobre la línea diagonal sin descuacones fuertes en los extremos, sin embargo en este grafico se observa que en la parte central los puntos siguen muy bien la línea diagonal, sin embargo en los extremos o colas, espacialmente en la cola superior, los puntos se desvían de la línea. Se pueden observar algunos pintos marcados (208, 513 y 632) que corresponde a residuos grandes.
De lo anterior se concluye entonces que la normalidad se cumple aproximadamente en el centro de la distribución pero hay desviaciones en las colas, con valores atipicos más grandes de los que se esperaría en una desviación normal. Si bien se puede considerar una normalidad de residuos razonablemente aceptable, puede que para otros fines deba revisarse más a detalle dichos valores atipicos, aplicar transformaciones o utilizar otros modelos.
A simple vista, se puede observar en este grafico que el supuesto de homocedasticidad no se está cumpliendo completamente ya que en este tipo de grafico (Scale-Location) esperamos que los puntos estén dispersos de forma relativamente uniforme, que la línea roja sea aproximadamente horizontal y que no se observe aumento o disminución sistemática de la dispersión, de las cuales ninguno de estos 3 principios se cumple.
En esta grafica se observa que la línea roja tiene una pendiente positiva y a medida que aumentan los valores ajustados (precio estimado), aumenta la dispersión de los residuos. además los puntos están más concentrados en la parte izquierda y la dispersión se abre hacia la derecha. Por lo tanto, tal como se sospechaba en el supuesto anterior, se está presentando heterocedasticidad.
En este grafico se utiliza la distancia de Cook para detectar observaciones influyentes, donde se mide principalmente el impacto sobre el modelo si se eliminara determinada observación, o mejor dicho, identifica observaciones que tienen demasiada influencia en la estimación de los coeficientes del modelo.
Para este caso puntual se observan 3 registros que destacados (632,513 y 186) donde la observación 632 es a que tendría mayor impacto en el modelo. dichas observaciones podrían corresponder a viviendas con precios muy altos o muy bajos, viviendas con características poco comunes (Areas grandes con pocas habitaciones) o posibles valores atipicos.
## areaconst estrato habitaciones parqueaderos banios
## 2.073124 1.608360 1.425023 1.589392 2.470040
Se parte de los resultados de VIF (Variance Inflation Factor) para evaluar de forma correcta la multicolinealidad, donde se tienen las siguientes reglas:
Con base en dichas reglas de interpretación, todas las variables están entre 1 y 5 VIF, por lo que en este supuesto se puede concluir que se presenta multicolinealidad baja o aceptable.
Con base en las características de la primera solicitud:
y el modelo previamente desarrollado:
\[ preciom=β0+β1areaconst+β2estrato+β3habitaciones+β4parqueaderos+β5banios \]
se procederá a predecir el valor del precio de la vivienda para ver si se ajusta con el valor del crédito aprobado.
## [1] "vivienda para Estrato 4"
## 1
## 683.8414
## [1] "vivienda para Estrato 5"
## 1
## 745.4791
Tal como se puede observar, cuando ingresamos al modelo las características de la vivienda, en este caso teniendo en cuenta que sea estrato 4, vemos que nos da como predicción del valor de la vivienda por 315.68 millones, es decir, que con las características que se solicita, se puede encontrar una vivienda con las condiciones deseadas donde se podrá comprar con el crédito preaprobado.
Para el caso donde hacemos la predicción del precio pero teniendo presente que sea estrato 5, se observa que la predicción del precio es 394.3 millones, superando el valor del crédito preaprobado, por lo que una vivienda con las características antes mencionadas en este estrato no será posible conseguirla.
A continuación se presentan las sugerencias de viviendas que se ajustan al monto preaprobado del crédito, teniendo en cuenta las siguientes condiciones:
tenemos como resultado una lista de 8 viviendas que cumplen con los requisitos detalladas en la siguiente tabla:
## # A tibble: 2 × 7
## preciom precio_predicho areaconst habitaciones banios parqueaderos estrato
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 530 719. 256 5 5 3 5
## 2 670 762. 300 6 5 3 5
Para tener una mejor visual, se presenta la ubicación exacta de las viviendas de la tabla anterior con su ubicación exacta en el mapa y una breve descripción al pasar el mouse sobre cada opción.
Código utilizado para revisar en consola las frecuencias de las variables cuantitativas
# Mostrar resultados de valores atípicos por variable
cat("Resultados del análisis multivariado:\n")
## Resultados del análisis multivariado:
for (var in names(resultados_multivariado)) {
cat(paste("Variable: ", var, "\n"))
cat(" Límites: ", resultados_multivariado[[var]]$Limites, "\n")
cat(" Inconsistencias: ", resultados_multivariado[[var]]$Inconsistencias, "\n")
cat(" Atípicos: ", resultados_multivariado[[var]]$Atipicos, "\n\n")
}
## Variable: preciom
## Límites: -260 1020
## Inconsistencias:
## Atípicos: 1400 1400 1150 1200 1100 1130 1850 1950 1050 1200 1400 1100 1190 1106 1300 1350 1350 1050 1250 1150 1050 1050 1300 1200 1220 1100 1090 1126 1100 1300 1700 1500 1700 1300 1200 1300 1200 1200 1350 1200 1200 1380 1850 1300 1200 1600 1200 1195 1200 1700 1400 1800 1200 1500 1300 1100 1125 1400 1400 1120 1200 1450 1450 1250 1380 1350 1450 1370 1250 1195 1200 1480 1100 1700 1700 1400 1750 1600 1150 1150 1550 1100 1561 1400 1700 1600 1550 1100 1050 1650 1100 1200 1680 1500 1250 1550 1100 1600 1150 1300 1800 1500 1500 1600 1100 1600 1200 1400 1240 1700 1350 1150 1150 1150 1600 1500 1280 1200 1100 1800 1800 1200 1500 1200 1200 1150 1200 1500 1200 1100 1800 1700 1800 1400 1700 1800 1650 1500 1200 1400 1900 1800 1200 1100 1400 1350 1700 1500 1100 1280 1250 1250 1250 1050 1200 1200 1250 1200 1255 1590 1100 1390 1350 1590 1350 1650 1090 1385 1150 1150 1200 1250 1400 1450 1250 1200 1300 1400 1250 1400 1100 1500 1150 1800 1100 1200 1050 1080 1100 1200 1250 1200 1100 1700 1650 1250 1800 1200 1400 1800 1500 1390 1385 1600 1440 1300 1133 1600 1077 1090 1100 1180 1250 1800 1500 1250 1200 1200 1200 1200 1250 1300 1400 1400 1400 1280 1750 1350 1100 1100 1200 1400 1400 1400 1400 1150 1100 1500 1050 1200 1320 1180 1400 1100 1400 1300 1200 1200 1200 1850 1100 1500 1370 1400 1250 1050 1350 1180 1850 1300 1400 1850 1200 1200 1850 1100 1300 1500 1400 1300 1300 1250 1650 1900 1600 1700 1700 1700 1200 1150 1250 1600 1600 1600 1800 1200 1398 1700 1250 1500 1400 1480 1650 1800 1300 1400 1300 1600 1500 1100 1550 1100 1200 1450 1450 1200 1300 1450 1300 1300 1200 1700 1100 1170 1200 1250 1200 1280 1200 1700 1800 1250 1300 1280 1160 1200 1100 1700 1850 1280 1350 1400 1150 1600 1700 1250 1300 1600 1750 1050 1050 1200 1100 1350 1250 1270 1900 1850 1400 1400 1300 1150 1250 1900 1580 1500 1200 1200 1280 1350 1350 1200 1900 1900 1400 1100 1150 1500 1300 1300 1300 1280 1590 1300 1800 1300 1300 1800 1400 1200 1300 1300 1700 1280 1700 1900 1350 1200 1350 1600 1200 1150 1680 1100 1360 1100 1300 1200 1500 1800 1100 1330 1200 1200 1900 1500 1300 1600 1700 1900 1500 1500 1100 1600 1999 1600 1350 1530 1650 1940 1950 1300 1051 1078 1200 1103 1580 1500 1100 1270 1100 1160 1350 1500 1900 1600 1800 1550 1300 1150 1830 1200 1200 1850 1584 1100 1500 1550 1100 1950 1400 1500 1300 1250 1250 1200 1150 1200 1350 1350 1150 1226 1150 1300 1150 1250 1250 1150 1450 1200 1220 1850 1900 1850 1800 1350 1200 1220 1250 1350 1800 1050 1100 1300 1800 1270 1149 1200 1200 1550 1250 1750 1600 1400 1300 1200 1150 1400 1090 1500 1400 1400 1583 1250 1150 1080 1200 1180 1250 1400 1350 1050 1400 1500 1290 1330 1330 1350 1801 1200 1800 1230 1110 1330 1200 1395 1100 1250 1200 1400 1600 1590 1400 1450 1200 1400 1400 1500 1500 1250 1650 1600 1200 1200 1400 1050 1100 1100 1550 1400 1650 1800
##
## Variable: areaconst
## Límites: -143.5 452.5
## Inconsistencias:
## Atípicos: 455 480 480 550 540 460 595 480 960 500 752 463 460 750 487 1365 520 900 700 660 600 1000 730 467 520 520 870 650 500 540 760 530 530 485 490 930 560 724 1000 520 960 500 530 800 520 505 619 1050 490 520 500 588 1040 500 910 540 600 460 480 500 480 630 836 500 464 510 500 610 640 520 534 900 1000 520 1586 535 850 480 620 600 590 500 540 550 800 600 600 600 600 480 800 660 600 600 600 550 600 530 530 542 470 517 780 700 1188 500 500 1000 500 500 500 550 500 460 616 600 750 486 600 1200 750 500 550 453 610 454 600 750 500 551 500 550 700 584 476 552 600 520 600 480 550 550 470 470 605 550 600 500 460 700 1745 455 607 500 520 495 573 728 850 460 650 736 468 736 463 920 480 503 503 503 500 500 600 600 536 500 560 470 457 460 490 640 455 520 520 838 550 500 597 474.63 500 500 460 600 530 460 500 590 495 500 800 487 700 489 800 483 670 600 510 510 530 806 537 540 600 1500 455 463 500 550 619 565 1500 619 461 619 600 720 596 570 1000 462 480 520 844 835 1000 575 500 500 469 1090 550 833 565 600 619 700 650 619 619 800 850 1100 465 700 619 1250 550 700 500 550 461 470 550 1000 619 650 503 980 480 740 980 480 900 1092 773 1600 500 500 765 700 510 472 500 800 500 583 560 759 480 510 502 900 500 700 530 500 776 850 734 734 500 490 624 792 552 520 454 1200 453 600 950 496 650 455 453 470 800 525 453 463 615 500 628 638 550 550 480 500 480 457 459 459 475 475 474 720 480 825 637 530 740 739 627 487 470 500 487 630 487 467 741 500 490 500 455 455 900 500 484 600 475 640 640 480 480 932 465 496 942 496 523.3 660 730 520 588 500 1440 537 507 460
Código para realizar la prueba de Little a los faltantes
# datos_complemento3 <- dplyr::select(datos_limpio1,
# parqueaderos
# ,preciom)
#
# littles_test <- mcar_test(datos_complemento3)
littles_test <- mcar_test(datos_limpio1)
littles_test
## # A tibble: 1 × 4
## statistic df p.value missing.patterns
## <dbl> <dbl> <dbl> <int>
## 1 2212. 36 0 6
metodo mice - Multivariate Imputation by Chained Equations
# datos_original <- datos_limpio1
# imputacion <- mice(datos_limpio1, method = "pmm", m = 5)
# datos_imputados <- complete(imputacion)
La Grafica 3.1 permite visualizar que variables presentan datos faltantes y su proporción. En esta, a primera vista se observa que solo las variables piso y parqueadero presentan 2635 y 1602 registros respectivamente.
Grafica 3.1 Variables que tienen datos faltantes
Para comprobar y visualizar mejor estos datos, se utiliza la **Grafica 3.2* de matriz de patrones de faltantes, que muestra la cantidad y distribución de dichos faltantes entre las variables.
En esta grafica se puede evidenciar que en realidad todas las variables tienen al menos 1 faltante o en la mayoría de los casos 2 faltantes.
Grafica 3.2 Matriz de patrones de datos faltantes
En resumen, los datos faltantes y su frecuencia relativa se pueden observar más detalladamente en la tabla 3.3
| Faltantes | Porcentaje % | |
|---|---|---|
| piso | 2637 | 31.69 |
| parqueaderos | 1604 | 19.28 |
| id | 2 | 0.02 |
| zona | 2 | 0.02 |
| estrato | 2 | 0.02 |
| areaconst | 2 | 0.02 |
| banios | 2 | 0.02 |
| habitaciones | 2 | 0.02 |
| tipo | 2 | 0.02 |
| barrio | 2 | 0.02 |
| longitud | 2 | 0.02 |
| latitud | 2 | 0.02 |
| preciom | 1 | 0.01 |
Se por las gráficas 3.2 y 3.3, se puede comprobar que los datos contienen 1 fila totalmente vacía y otra solo con un valor en preciom, por lo que al ser registros prácticamente vacíos, se procede a eliminarlos. Esto nos deja con un dataframe de 8319 registros y 13 variables.
## [1] 8319 13
Como se revisó anteriormente, la variable “piso” presenta una gran cantidad de datos faltantes (>30%), por lo que se determina no utilizar esta variable en adelante debido a que una imputación podría afectar fuertemente la variación real de los datos y segar el modelo.
Para la variable “parqueadero”, si bien un 19.28% sigue siendo un porcentaje alto de faltantes, se considera hacer una imputación de datos. Para eso, se hace en primer lugar, un análisis de correlación entre variables para tener un mejor entendimiento de los datos.
Figura 3.4 Matriz de correlación entre variables.
Se observa una asociación positiva alta (0.7) entre la variable parqueadero y la variable preciom, sin embargo, se considera hacer la prueba de little para asegurar que el comportamiento de los datos faltantes sigue un patro MCAR Ver anexo 2.
El resultado del valor - p de la prueba fue < a 0.0001, que es menor al límite 0.05, esto significa que se descarta la hipótesis nula de que los datos faltantes siguen un comportamiento MCAR para la variable parqueadero. Esto nos deja en el escenario que probablemente sean MAR debido a la correlación de 0.7 que tienen con preciom. Debido a lo anterior, no es correcto utilizar una imputación con media o mediana sino una imputación múltiple (mice)
Partiendo de lo anterior, la prueba de Little indica que el patrón de datos faltantes no es completamente aleatorio (MCAR). Por lo tanto, se justifica el uso de imputación múltiple bajo el supuesto MAR. Revisar Anexo 3 para más detalle.
Una vez imputados los valores faltantes en la variable parqueadero, se revisar la distribución de densidad con el fin de corroborar que no se haya alterado su distribución inicial, para esto revisar
Finalmente, se quitan variables que no agregan valor para futuros modelos como id, tambien la variable barrio por tener tantas categorías (>400) y las variables de coordenadas (latitud y longitud). El resumen final de las variables es:
## zona estrato preciom areaconst
## Length:8319 Min. :3.000 Min. : 58.0 Min. : 30.0
## Class :character 1st Qu.:4.000 1st Qu.: 220.0 1st Qu.: 80.0
## Mode :character Median :5.000 Median : 330.0 Median : 123.0
## Mean :4.634 Mean : 433.9 Mean : 174.9
## 3rd Qu.:5.000 3rd Qu.: 540.0 3rd Qu.: 229.0
## Max. :6.000 Max. :1999.0 Max. :1745.0
## parqueaderos banios habitaciones tipo
## Min. : 1.00 Min. : 0.000 Min. : 0.000 Length:8319
## 1st Qu.: 1.00 1st Qu.: 2.000 1st Qu.: 3.000 Class :character
## Median : 1.00 Median : 3.000 Median : 3.000 Mode :character
## Mean : 1.76 Mean : 3.111 Mean : 3.605
## 3rd Qu.: 2.00 3rd Qu.: 4.000 3rd Qu.: 4.000
## Max. :10.00 Max. :10.000 Max. :10.000
## latitud longitud
## Min. :3.333 Min. :-76.59
## 1st Qu.:3.381 1st Qu.:-76.54
## Median :3.416 Median :-76.53
## Mean :3.418 Mean :-76.53
## 3rd Qu.:3.452 3rd Qu.:-76.52
## Max. :3.498 Max. :-76.46