.
Informe C&A para asesoría en la compra de dos viviendas en la ciudad de Cali - Colombia, conforme las siguientes especificaciones del cliente:
Se anexan a este informe el análisis exploratorio y la limpieza de la base de datos realizados previamente para la creación de modelos requeridos. Ver sección ANEXOS.
.
Filtro de ofertas de casas de la zona norte de la ciudad.
Análisis exploratorio de correlación del precio, en función del área construida, estrato, número de baños, número de habitaciones y zona donde se ubica la vivienda.
Modelo de regresión lineal múltiple precio = f(área construida, estrato, cant. cuartos, cant. parqueaderos, cant. baños.
Validación de supuestos del modelo e interpretación de resultados.
Predicción del precio de vivienda con las características de la primera solicitud.
Top 5 de ofertas para la vivienda 1, considerando el precio máximo (350 millones).
Pasos 1 al 6 para la segunda solicitud que, considerando el precio máximo($850 millones).
.
Una vez realizado en análisis exploratorio y la limpieza de la base, se tiene como resultante el siguiente dataset. Para evidenciar los resultados de estas dos etapas, consultar los ANEXOS de este informe.
## # A tibble: 6 × 12
## id zona estrato preciom areaconst parqueaderos banios habitaciones tipo
## <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
## 1 1147 Zona O… 3 250 70 1 3 6 Casa
## 2 1169 Zona O… 3 320 120 1 2 3 Casa
## 3 1350 Zona O… 3 350 220 2 2 4 Casa
## 4 5992 Zona S… 4 400 280 3 5 3 Casa
## 5 1212 Zona N… 5 260 90 1 2 3 Apar…
## 6 1724 Zona N… 5 240 87 1 3 3 Apar…
## # ℹ 3 more variables: barrio <chr>, longitud <dbl>, latitud <dbl>
. .
Pintando las viviendas de acuerdo al atributo zona (color) y a las coordenadas (punto en el mapa), se evidencia que el atributo ZONA no es confiable pues las viviendas están distribuidas por todo el mapa, indistinto de la zona en la que están catalogadas en el dataset, de tal forma que por ejemplo los puntos celestes que corresponden a viviendas de la zona SUR, están presentes en todo el territorio y NO centralizadas en la parte sur del mapa.
Dado lo anterior, se define crear una función que permita determinar, de acuerdo a las coordenadas de cada vivienda, cuál sería la zona real a la que pertenece, teniendo en cuenta la latitud/longitud, y los límites APROXIMADOS de las zonas de Cali:
Zona Norte: Límite Noroeste: (3.495, -76.550) Límite Noreste: (3.495, -76.485) Límite Sureste: (3.450, -76.485) Límite Suroeste: (3.450, -76.550)
Zona Sur: Límite Suroeste: (3.345, -76.550) Límite Sureste: (3.345, -76.485) Límite Noreste: (3.385, -76.485) Límite Noroeste: (3.385, -76.550)
Zona Oriente: Límite Noreste: (3.420, -76.485) Límite Sureste: (3.345, -76.485) Límite Suroeste: (3.345, -76.440) Límite Noroeste: (3.420, -76.440)
Zona Occidente: Límite Noroeste: (3.495, -76.550) Límite Noreste: (3.450, -76.550) Límite Sureste: (3.385, -76.550) Límite Suroeste: (3.345, -76.550)
El nuevo mapa, evidencia una mejor delimitación de viviendas en sus respectivas zonas:
. . Una vez ajustado el dataset, se procede con los demás puntos del informe.
.
## Total
## 1 Casas en Norte: 707
Según el dataset ajustado, a partir de los atributos ZONA_CORRECTA y Tipo se realiza un filtro opteniendo un total de 707 registros que coinciden con las características definidas, es decir, casas en la zona norte de Cali.
. .
## Estrato Cant. Casas
## 1 3 246
## 2 4 140
## 3 5 252
## 4 6 69
La distribución de casas entre los estratos 3, 4, 5, y 6 sugiere que la Zona Norte es un área socioeconómicamente diversa. Esto podría indicar la presencia de subzonas o barrios con diferentes niveles de desarrollo económico y acceso a servicios.
Los estratos 3 y 5 presentan el mayor número de casas ofertadas, con 246 y 252 viviendas respectivamente. Esto sugiere que estos estratos pueden ser los más representativos en la Zona Norte, lo que podría estar relacionado con un segmento significativo de la población que pertenece a la clase media.
El estrato 6, asociado con los niveles socioeconómicos más altos, tiene una menor representación con solo 69 casas. Esto podría indicar que, aunque hay presencia de viviendas de lujo, la Zona Norte no es predominantemente una zona de alta exclusividad.
. . * Precio
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 85.0 250.0 380.0 461.9 565.0 1950.0
El análisis de la estadística descriptiva del precio por metro cuadrado de las viviendas tipo CASA en la zona Norte de Cali revela una amplia variabilidad en los valores. El precio mínimo observado es de 85.0, indicando la existencia de propiedades con un valor significativamente bajo en comparación con el resto. El primer cuartil (250) muestra que el 25% de las casas tienen un precio por metro cuadrado inferior a este valor, sugiriendo una considerable proporción de viviendas relativamente más accesibles. La mediana, situada en 380.0, refleja el punto medio del mercado, mientras que la media es algo más elevada (cerca de 462), lo cual sugiere la presencia de algunas propiedades con precios considerablemente altos que elevan el promedio. Este hecho se confirma al observar el tercer cuartil (565), donde el 75% de las casas tienen un precio menor a este valor, y un precio máximo de 1950, lo que evidencia la existencia de propiedades de lujo o en ubicaciones privilegiadas dentro de esta zona. En conjunto, estos datos subrayan una diversidad significativa en los precios por metro cuadrado, con un mercado que abarca desde opciones más económicas hasta propiedades de alto costo. . .
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 30.0 140.0 240.0 264.5 339.0 1500.0
El análisis del área construida para las viviendas tipo CASA en la zona Norte de Cali muestra una amplia variabilidad. El área mínima registrada es de 30 metros cuadrados, lo que indica la presencia de viviendas pequeñas en esta zona. El primer cuartil es de 140 metros cuadrados, lo que significa que el 25% de las casas tienen un área construida menor a este valor. La mediana, que es el punto medio de la distribución, es de 240 metros cuadrados, lo que sugiere que la mayoría de las viviendas tienen un tamaño moderado. La media es de 264.5 metros cuadrados, ligeramente superior a la mediana, lo que sugiere la influencia de algunas casas con áreas significativamente grandes. El tercer cuartil es de 339 metros cuadrados, indicando que el 75% de las casas tienen un área construida menor a este valor. Finalmente, el área máxima registrada es de 1500 metros cuadrados, destacando la existencia de viviendas considerablemente grandes en la zona; probablemente esas menor proporción de viviendas con gran metraje, son las que corresponden a la minoría de precios elevados evidenciados en el análisis anterior.
. .
## preciom areaconst parqueaderos banios habitaciones
## preciom 1.0000000 0.6920114 0.5206380 0.5404510 0.2730668
## areaconst 0.6920114 1.0000000 0.3878597 0.5150308 0.4300456
## parqueaderos 0.5206380 0.3878597 1.0000000 0.3982902 0.2105063
## banios 0.5404510 0.5150308 0.3982902 1.0000000 0.5940070
## habitaciones 0.2730668 0.4300456 0.2105063 0.5940070 1.0000000
. .
La alta correlación entre preciom (precio por metro cuadrado) y areaconst (área construida) sugiere que a medida que aumenta el área construida, también lo hace el precio por metro cuadrado. Esto indica que el tamaño de la vivienda es un factor determinante en la valoración del inmueble. Para el modelo predictivo, areaconst se presenta como una de las variables más importantes.
Aunque la cantidad de baños y parqueaderos también tienen una relación significativa con el precio, su impacto es moderado en comparación con el área construida. Esto sugiere que los compradores valoran estos atributos, pero no con la misma intensidad que el tamaño de la vivienda. Ambos atributos deberían incluirse en el modelo predictivo, pero su peso podría ser menor.
La correlación más baja entre habitaciones y preciom indica que el número de habitaciones tiene un impacto relativamente bajo en la determinación del precio por metro cuadrado. Esto puede deberse a que el número de habitaciones está indirectamente relacionado con el área construida o a que los compradores no ven este atributo como un factor crítico en comparación con otros. En el modelo predictivo, esta variable podría tener un peso menor, y su inclusión podría depender del impacto que tenga en la mejora de las predicciones.
A nivel de las variables independientes se evidencia una alta correlación entre baños y habitaciones sugiere que las viviendas con más habitaciones tienden a tener más baños, lo cual es intuitivo. Sin embargo, esta relación también podría indicar colinealidad entre estas variables, lo que podría afectar la interpretación de los coeficientes en un modelo de regresión múltiple.
A continuación se presenta el análisis exploratorio de la variable respuesta (precio de la vivienda), en función del área construida, estrato, número de baños, número de habitaciones y zona donde se ubica la vivienda.
Existe una relación positiva entre el área construida y el precio. Esto significa que a medida que el área construida aumenta, también tiende a aumentar el precio. Este es un comportamiento esperado. La mayor concentración de puntos se encuentra en el rango de 0 y 400 metros cuadrados.
Se evidencia también la presencia de outliers, especialmente en las áreas construidas muy grandes. Para áreas construidas mayores a 800, la variabilidad en el precio es aún más pronunciada. Estos puntos representan propiedades que tienen un precio mucho mayor o menor que el esperado para su tamaño, lo que podría ser causado por características especiales de esas propiedades, como ubicación privilegiada, estado de la construcción, entre otras.
Existe una tendencia positiva entre el estrato socioeconómico y el precio de las propiedades, de tal forma que a medida que aumenta el estrato, también lo hace el precio. Este es un comportamiento esperado, ya que los estratos más altos generalmente corresponden a áreas más exclusivas con propiedades de mayor valor.
La dispersión de los datos también aumenta con el estrato, lo que podría sugerir que en los estratos más altos hay una mayor diversidad en el tipo de propiedades disponibles, desde propiedades más “estándar” hasta algunas de lujo.
A medida que aumenta el estrato, la mediana del precio es la más alta, y el rango intercuartílico es el más amplio, lo que confirma una mayor variabilidad en los precios de las propiedades los estratos más altos.
Hay una tendencia a que los precios aumenten a medida que el número de baños incrementa, especialmente después de 2 baños. Sin embargo, la variabilidad es alta, lo que significa que no siempre más baños se traducen directamente en un precio más alto. Para propiedades con hasta 6 baños, se observa una mayor concentración de datos, pero a partir de 7 baños, las observaciones son menos frecuentes.
Similar al gráfico de los baños, se observa que los precios tienden a aumentar a medida que aumenta el número de habitaciones. Los puntos están más concentrados en propiedades con 2 a 4 habitaciones, donde la mayoría de las propiedades parecen estar valoradas. A partir de 6 habitaciones, las propiedades tienden a tener precios más altos, pero nuevamente, hay una gran variabilidad.
La mayoría de los precios se concentran en el rango entre 250 y 570 millones, con una mediana cercana a 400. Hay algunos valores atípicos que alcanzan hasta 2000 millones, lo que indica que hay propiedades significativamente más caras en esta zona. La amplitud de la caja sugiere una variabilidad moderada en los precios dentro de esta zona, con algunos precios mucho más bajos y otros muy altos.
A continuación se estima el modelo de regresión lineal precio = f(área construida, estrato, número de cuartos, número de parqueaderos, número de baños , analizando si los coeficientes son estadísticamente significativos y los resultados son lógicos. Adicionalmente se analiza el coeficiente R2, y se evalúan potenciales ajustes al modelo para mejorarlo.
##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = casas_norte)
##
## Residuals:
## Min 1Q Median 3Q Max
## -846.93 -76.49 -17.80 40.73 1027.82
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 21.74586 21.04681 1.033 0.30186
## areaconst 0.76936 0.04939 15.576 < 2e-16 ***
## estrato4 58.02952 19.81375 2.929 0.00351 **
## estrato5 100.52903 18.54264 5.422 8.15e-08 ***
## estrato6 390.93794 29.01492 13.474 < 2e-16 ***
## habitaciones -7.00940 5.10550 -1.373 0.17022
## parqueaderos 41.35804 5.78125 7.154 2.14e-12 ***
## banios 29.01081 6.40552 4.529 6.97e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 175.5 on 699 degrees of freedom
## Multiple R-squared: 0.6809, Adjusted R-squared: 0.6777
## F-statistic: 213 on 7 and 699 DF, p-value: < 2.2e-16
.
Intercepto: El intercepto es 21.75, lo que indica que cuando todas las variables independientes (areaconst, estrato, habitaciones, parqueaderos, banios) son iguales a cero, el modelo predice un precio por metro cuadrado de cerca de 22 millones, lo cual no tiene una interpretación realista en este contexto. Esto sugiere que el intercepto es más un ajuste matemático que una variable interpretativa en el modelo.
areaconst (Área construida): Con un coeficiente de 0.76936, esto indica que, manteniendo constantes las demás variables, cada metro cuadrado adicional construido incrementa el precio en aproximadamente 0.77 millones. Dado que el valor de p es bajo, este resultado es altamente significativo, sugiriendo que el área construida es un factor clave en la determinación del precio.
estrato 4: Las viviendas en estrato 4 tienen un precio promedio 58.03 unidades mayor que las viviendas en estrato 3 (el estrato de referencia), manteniendo las demás variables constantes. Este efecto es significativo.
estrato 5: Las viviendas en estrato 5 tienen un precio promedio 100.53 unidades mayor que las viviendas en estrato 3, lo que también es significativo.
estrato 6: Las viviendas en estrato 6 tienen un precio promedio 390.94 unidades mayor que las viviendas en estrato 3, siendo este un efecto muy significativo.
habitaciones: El coeficiente es -7.01, lo que sugiere que, al mantener constantes las demás variables, un aumento en el número de habitaciones en realidad disminuiría ligeramente el precio, aunque este resultado no es estadísticamente significativo. Adicionalmente es contraintuitivo y podría sugerir multicolinealidad o que el número de habitaciones está capturando algún otro efecto en el modelo.
parqueaderos: Con un coeficiente de 41.35804, cada parqueadero adicional incrementa el precio en 41.6 millones. Este resultado es significativo, lo que sugiere que los parqueaderos tienen un impacto positivo en el precio.
banios: Con un coeficiente de 29.01, cada baño adicional incrementa el precio en cerca de 30 millones. Este resultado también es significativo.
. .
R²: El valor de R² es 0.6777, lo que indica que aproximadamente el 68% de la variabilidad en el precio se explica por las variables independientes en el modelo. Este es un valor aceptable, pero no extremadamente alto, sugiriendo que hay otros factores no incluidos en el modelo que podrían estar influyendo en el precio (hay un 34% de la variabilidad que no está explicada por estas variables).
Error Estándar Residual: El error estándar residual es 175.5, lo que proporciona una medida de la desviación típica de los residuos. Esto sugiere que, en promedio, las predicciones del modelo pueden desviarse en 175.5 millones del valor real del precio por metro cuadrado.
. .
EN RESUMEN,
Las variables areaconst, estrato (factorizado), parqueaderos, y banios son altamente significativas, lo que indica que son importantes para predecir el precio por metro cuadrado de las casas en la zona norte de Cali. El número de habitaciones no es estadísticamente significativa, lo que podría indicar que, en este modelo no tiene un impacto claro en el precio, o podría estar capturando algún efecto confuso con otras variables.
Podrían explorarse algunas mejoras al modelo, como por ejemplo:
Transformaciones: Probar transformaciones logarítmicas de las variables, especialmente del precio.
Eliminar Variables Insignificantes: eliminar la variable habitaciones si sigue sin ser significativa después de probar modelos ajustados.
Modelo no lineal: Dado que el R² no es extremadamente alto, podrían explorarse modelos no lineales o de machine learning.
Validación del Modelo: Sería útil realizar una validación cruzada para verificar la robustez del modelo y asegurarse de que los resultados obtenidos no estén sobreajustados a los datos específicos de la muestra.
. .
. . A continuación se realiza la validación de supuestos del modelo para casas del norte. . . * Linealidad:
Los residuos parecen estar distribuidos en torno a la línea roja (cero) sin un patrón obvio de tendencia ascendente o descendente. Esto sugiere que el modelo no presenta problemas significativos de no linealidad, lo que es un buen indicio de que la relación entre las variables independientes y la variable dependiente es, en general, correctamente capturada por el modelo.
Hay una ligera tendencia a que los residuos se agrupen más estrechamente en ciertos rangos de los valores ajustados, especialmente en los valores más bajos, y se disperse más en los valores ajustados más altos. Esto puede indicar una posible violación de la homocedasticidad, donde los residuos no tienen una varianza constante. En otras palabras, el modelo puede estar sobreestimando o subestimando las observaciones en ciertos rangos de valores de la variable dependiente (preciom).
En cuanto a los Outliers, hay algunos puntos que parecen estar bastante lejos de la mayoría de los residuos.Estos outliers pueden estar influyendo en los resultados del modelo y sugieren que podría ser útil explorar estos puntos más a fondo para ver si son errores de entrada o si representan casos especiales que no se ajustan bien al modelo general.Podría ser útil revisar los casos outliers para ver si deben ser tratados de alguna manera (por ejemplo, eliminados o modelados por separado).
Se aplica el test de Breusch-Pagan para confirmar si existe heteroscedasticidad. Un valor p bajo (generalmente < 0.05) sugiere que hay heteroscedasticidad.
##
## studentized Breusch-Pagan test
##
## data: modelo
## BP = 117.86, df = 7, p-value < 2.2e-16
Dado que el valor p es muy bajo (< 2.2e-16), se rechaza la hipótesis nula de homocedasticidad. Esto indica que hay evidencia significativa de que los residuos del modelo presentan heterocedasticidad, por tanto puede afectar la precisión de las estimaciones de los coeficientes y, por ende, las inferencias que se pueden hacer a partir de esos coeficientes.
: Los residuos parecen seguir una distribución que se aproxima a la normal, con la mayor concentración de ralrededor del valor central. La forma es simétrica, con una ligera asimetría hacia la derecha, lo que indica una cola larga en ese costado. No parece haber una desviación relevante, lo que sugiere que el supuesto de normalidad de los residuos se cumple, por tanto se esperaría que las inferencias y predicciones del modelo sean confiables, al menos en términos de este supuesto.
##
## Durbin-Watson test
##
## data: modelo
## DW = 1.7728, p-value = 0.0009882
## alternative hypothesis: true autocorrelation is greater than 0
Aunque el valor de DW (1.7728) no es extremadamente bajo, el p-valor (0.0009882) es muy pequeño lo que indica que la autocorrelación es estadísticamente significativa. La presencia de autocorrelación positiva en los residuos puede sugerir que el modelo no ha capturado toda la estructura de los datos o que hay algún patrón en los errores que no ha sido modelado adecuadamente.
Con el modelo identificado, se predice el precio de la vivienda con las características de la primera solicitud.
## 1 2
## 304.9891 347.4886
Como ambas viviendas tienen las mismas características excepto el estrato, los precios predichos reflejan la diferencia en el valor del estrato. La vivienda en el estrato 5 tiene un precio predicho más alto (347.4886 ) que la del estrato 4 (304.9891 ). Esto sugiere que en el modelo, el estrato tiene un efecto positivo en el precio de la vivienda, lo que es consistente con lo que se esperaría en un contexto real.
A continuación se sugieren potenciales ofertas que responden a la solicitud de la vivienda 1, dado el crédito pre-aprobado de máximo 350 millones de pesos.
## Total
## 1 Apartamentos en Sur: 1460
Según el dataset provisto, a partir de los atributos Zona y Tipo se realiza un filtro opteniendo un total de 1460 registros que coinciden con las características definidas, es decir, apartamentos en la zona sur de Cali.
## Estrato Cant. Aptos
## 1 3 124
## 2 4 452
## 3 5 696
## 4 6 188
En la zona sur de Cali, la oferta de apartamentos es mayor en estratos medios-altos (4 y 5) en comparación con estratos más bajos (3) o más altos (6). Esto puede indicar una preferencia o demanda más alta en estratos medios-altos y una menor oferta o demanda en otros estratos. Para obtener un análisis más detallado, se recomienda considerar factores adicionales como precios, características demográficas y tendencias del mercado.
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 70.0 195.0 255.0 290.7 328.0 1750.0
El análisis de la distribución de precios de los apartamentos en la zona sur de Cali revela una notable variabilidad en los precios, que van desde un mínimo de 70 millones hasta un máximo de 1750 millones. La mayoría de los apartamentos se agrupan en el rango de precios medio, con el primer cuartil en 195 millones, la mediana en 255 millones, y el tercer cuartil en 328 millones. Esto sugiere que la mayoría de los apartamentos tienen precios entre 195 y 328 millones, con una media ligeramente superior en 290.7 millones, indicando que hay una tendencia general hacia precios más altos que la mediana. La gran diferencia entre el mínimo y el máximo precios, y la dispersión visible en el histograma, apunta a una oferta variada que incluye tanto opciones más accesibles como de alto valor. Esta diversidad en los precios puede reflejar diferencias en la ubicación, tamaño, y características de los apartamentos en la zona, así como variaciones en la demanda y oferta del mercado inmobiliario.
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 40.0 72.0 87.0 101.2 108.0 932.0
El análisis de la distribución del área de los apartamentos en la zona sur de Cali muestra una considerable variabilidad en las dimensiones, con áreas que van desde un mínimo de 40 m² hasta un máximo de 932 m². La mayoría de los apartamentos tienen áreas en el rango medio, con el primer cuartil en 72 m², la mediana en 87 m², y el tercer cuartil en 108 m². La media, que es de 101.2 m², sugiere que, en promedio, los apartamentos tienden a ser un poco más grandes que la mediana, indicando una ligera inclinación hacia áreas más amplias. La amplia diferencia entre el área mínima y máxima, junto con la dispersión observada en el histograma, sugiere una oferta diversa que incluye tanto apartamentos compactos como espaciosos. Esta variabilidad en el área puede reflejar diferentes tipos de propiedades y configuraciones disponibles en la zona, adaptándose a diversas necesidades y preferencias de los residentes.
library(corrplot)
library(GGally)
ggpairs(aptos_sur[, c("preciom", "areaconst", "parqueaderos", "banios", "habitaciones")], title = "Matriz de Dispersion Completa")correlacion_matriz_sur <- cor(aptos_sur[, c("preciom", "areaconst", "parqueaderos", "banios", "habitaciones")])
table_correlacion_sur <- as.table(correlacion_matriz_sur)
print(table_correlacion_sur)## preciom areaconst parqueaderos banios habitaciones
## preciom 1.0000000 0.7027564 0.6527951 0.6654141 0.3083633
## areaconst 0.7027564 1.0000000 0.5378631 0.6455166 0.4191185
## parqueaderos 0.6527951 0.5378631 1.0000000 0.5181822 0.2790392
## banios 0.6654141 0.6455166 0.5181822 1.0000000 0.5175880
## habitaciones 0.3083633 0.4191185 0.2790392 0.5175880 1.0000000
El análisis de la matriz de correlación revela varias relaciones importantes entre las variables en el dataset de apartamentos. Existe una alta correlación positiva entre el precio (preciom) y el área construida (areaconst), con un coeficiente de 0.70, lo que indica que los apartamentos más grandes tienden a tener precios más altos. También se observa una fuerte correlación entre el precio y el número de baños (banios) (0.67), así como con el número de parqueaderos (parqueaderos) (0.65), sugiriendo que los apartamentos con más baños y parqueaderos suelen tener precios más altos. La correlación entre área construida y número de baños es significativa (0.65), lo que implica que los apartamentos con mayor área tienden a tener más baños. Sin embargo, la correlación entre el precio y el número de habitaciones es moderada (0.31), indicando que, aunque hay una relación, no es tan fuerte como con otras variables. Estas relaciones reflejan cómo características específicas como el tamaño y las comodidades de los apartamentos influyen en su precio, lo cual es crucial para entender la estructura del mercado inmobiliario en la zona.
En el análisis exploratorio de la variable respuesta (precio del apartamento), en función del área construida, estrato, número de baños, número de habitaciones y zona donde se ubica la vivienda, se evidencia:
Existe una relación positiva entre el área construida y el precio. Esto significa que a medida que el área construida aumenta, también tiende a aumentar el precio. Este es un comportamiento esperado. La mayor concentración de puntos se encuentra en el rango de 0 y 200 metros cuadrados.
Se evidencia también la presencia de outliers, especialmente en las áreas construidas mayores a 200 m2 donde la variabilidad en el precio es más pronunciada. Estos puntos representan propiedades que tienen un precio mucho mayor o menor que el esperado para su tamaño, lo que podría ser causado por características especiales de esas propiedades, como ubicación privilegiada, estado de la construcción, entre otras.
Existe una tendencia positiva entre el estrato socioeconómico y el precio de las propiedades, de tal forma que a medida que aumenta el estrato, también lo hace el precio. Este es un comportamiento esperado.
La dispersión de los datos también aumenta de manera muy pronunciada en el estrato 6, lo que podría sugerir que en ese segmento hay una mayor diversidad en el tipo de propiedades disponibles.
Hay una tendencia general de que el precio aumenta a medida que aumenta la cantidad de baños, sin embargo, existe una gran variabilidad en los precios para cada cantidad de baños, lo que indica que la cantidad de baños por sí sola no explica totalmente el precio.
Los puntos parecen estar más concentrados en el rango de 2 a 4 baños, lo que representa que estos son los números más comunes para los apartamentos en la zona Sur.
Similar al gráfico anterior, hay una tendencia alcista en el precio alineada con la cantidad de habitaciones. La mayoría de los apartamentos parecen tener entre 2 y 4 habitaciones. En las viviendas con 5 y 6 habitaciones hay algo de variabilidad respecto al comportamiento, identificando posibles outliers u otras variables que inciden de manera importante en el precio de esas viviendas.
La mayoría de los precios se concentran en el rango entre 200 y 330 millones, con una mediana cercana a 250. Hay algunos valores atípicos que alcanzan hasta 1750 millones, lo que indica que hay propiedades significativamente más caras en esta zona.
##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = aptos_sur)
##
## Residuals:
## Min 1Q Median 3Q Max
## -771.56 -40.08 -2.61 38.39 883.80
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -33.09840 14.57121 -2.271 0.023263 *
## areaconst 0.94915 0.05652 16.792 < 2e-16 ***
## estrato4 34.80711 9.54489 3.647 0.000275 ***
## estrato5 55.92914 9.52213 5.874 5.28e-09 ***
## estrato6 198.62594 12.13506 16.368 < 2e-16 ***
## habitaciones -11.46758 4.76465 -2.407 0.016217 *
## parqueaderos 69.54966 4.91558 14.149 < 2e-16 ***
## banios 42.65729 4.24252 10.055 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 91.34 on 1452 degrees of freedom
## Multiple R-squared: 0.7205, Adjusted R-squared: 0.7192
## F-statistic: 534.8 on 7 and 1452 DF, p-value: < 2.2e-16
Intercepto: El intercepto es –33.09, lo que sugiere que cuando todas las variables independientes son cero, el modelo predice un valor negativo de precio, lo que no es interpretable en este contexto por tanto el intercepto no tiene un significado práctico en este modelo.
Área Construida: El coeficiente es 0.94915, lo que significa que por cada metro cuadrado adicional, el precio del metro cuadrado aumenta en promedio en 0.95 millones. Este es un resultado significativo con un valor p < 2e-16, lo que indica que hay una fuerte relación positiva entre el área construida y el precio.
Estrato 4: El coeficiente es 34.81, lo que implica que por cada incremento en el estrato, el precio del metro cuadrado aumenta en promedio en 34.81 millones, respecto al estrato 3 (referencia).
Estrato 5: El coeficiente es 55.93 , lo que implica que por cada incremento en el estrato, el precio del metro cuadrado aumenta en promedio en 55.93 millones, respecto al estrato 3 (referencia).
Estrato 6: El coeficiente es 198.63, lo que implica que por cada incremento en el estrato, el precio del metro cuadrado aumenta en promedio en 198.63 millones, respecto al estrato 3 (referencia).
Habitaciones: El coeficiente es -11.47, lo que sugiere que por cada habitación adicional, el precio del metro cuadrado disminuye en promedio en más de 11 millones. Este resultado es contraintuitivo.
parqueaderos: El coeficiente es 69.56, lo que indica que la presencia de cada parqueadero adicional aumenta en promedio el precio del metro cuadrado en casi 70 millones. Este resultado es también altamente significativo.
Baños: El coeficiente es 42.66, indicando que cada baño adicional aumenta en promedio el precio del metro cuadrado en más de 42 millones. Este coeficiente también es muy significativo.
R-cuadrado: Es 0.7205, lo que indica que aproximadamente el 72% de la variabilidad en el precio del metro cuadrado se explica por las variables independientes incluidas en el modelo. Esto sugiere un buen nivel de ajuste.
R-cuadrado ajustado: Es 0.7192, muy cercano al R-cuadrado original, lo que indica que el modelo no está sobreajustado y las variables independientes explican bien la variabilidad en los datos.
Error Estándar Residual: Es de 91.34, lo que significa que, en promedio, las predicciones del modelo tienen un error de aproximadamente 91.34 millones de precio del metro cuadrado.
El modelo de regresión lineal múltiple muestra que el precio de los apartamentos está significativamente influenciado por la mayoría de las variables consideradas, con un buen nivel de explicación de la variabilidad en los precios (R^2 de 0.7205). Los coeficientes tienen el signo esperado, excepto la cantidad de habitaciones, que presenta un comportamiento contraintuitivo, por tanto requeriría un mayor análisis para entender su comportamiento.
Realice la validación de supuestos del modelo_sur e interprete los resultados (no es necesario corregir en caso de presentar problemas, solo realizar sugerencias de que se podría hacer).
En el gráfico se observa que hay una mayor dispersión de residuos a medida que los valores ajustados aumentan. Esto sugiere que el modelo podría estar subestimando la variabilidad de los precios más altos, lo que podría indicar una posible heterocedasticidad, es decir que el modelo podría estar siendo menos preciso para predecir precios más altos.
Conviene entonces evaluar una transformación de variables (por ejemplo, logaritmo del precio) para estabilizar la varianza o probar un modelos alternativo.
##
## studentized Breusch-Pagan test
##
## data: modelo_sur
## BP = 377.95, df = 7, p-value < 2.2e-16
El resultado del test (BP = 377.95), confirma que hay evidencia significativa de heterocedasticidad en el modelo. Esto significa que las varianzas de los errores no son constantes, lo que podría afectar la confiabilidad de las estimaciones de los coeficientes y sus inferencias.
Los residuos parecen estar bastante concentrados cerca de cero, lo cual es bueno, pero hay una dispersión a ambos lados.Se observa una ligera asimetría hacia la derecha, y presencia de valores residuales extremos, nconfirmando los ya evidenciados problemas de heterocedasticidad o la influencia de valores atípicos en el modelo.
Si los residuos estuvieran distribuidos normalmente, se esperaría una forma de campana más suave y simétrica, por tanto el histograma sugiere que los residuos no siguen perfectamente una distribución normal.
##
## Durbin-Watson test
##
## data: modelo_sur
## DW = 1.7693, p-value = 4.121e-06
## alternative hypothesis: true autocorrelation is greater than 0
Con un valor de 1.7693, está levemente por debajo de 2. Esto sugiere una ligera autocorrelación positiva en los residuos, lo cual viola uno de los supuestos básicos de la regresión lineal clásica (dependencia de los errores en la regresión lineal).
La autocorrelación en los residuos puede afectar la validez de las inferencias que se hagan a partir del modelo, especialmente en lo que respecta a los errores estándar y las pruebas de significancia.
Con el modelo_sur identificado se predice el precio de la vivienda con las características de la segunda solicitud.
## 1 2
## 586.8598 729.5566
El modelo predice que la vivienda en estrato 6 tendrá un precio más alto que la vivienda en estrato 5, manteniendo constantes las demás características (área construida, número de habitaciones, parqueaderos y baños). Este es un resultado esperable, ya que generalmente, los inmuebles en estratos más altos tienden a tener un valor mayor debido a factores como la ubicación, infraestructura, y nivel de ingresos en la zona. La diferencia en el precio predicho entre las dos viviendas es de más de 142 millones.
A continuación se sugieren potenciales ofertas que responden a la solicitud de la vivienda 2, dado el crédito pre-aprobado de máximo 850 millones de pesos.
Se evidencia que solo 2 ofertas de vivienda en la zona sur, cumplen con las características requeridas por el cliente.
1. Diversidad Socioeconómica:
En la zona Norte, la distribución de casas revela una marcada diversidad socioeconómica. La presencia significativa de viviendas en los estratos 3 y 5 sugiere que esta zona alberga principalmente a la clase media. Sin embargo, la existencia de casas en estrato 6 indica que también hay áreas de mayor exclusividad, aunque no predominan en la zona.
Por su parte la oferta de apartamentos en la zona sur de Cali evidenció ser muy amplia, con 1,460 registros analizados, entre los estratos 3 a 6. La distribución de precios y áreas construidas varía significativamente, lo que indica una gama diversa de opciones disponibles para los compradores. La mayoría de los apartamentos están en estratos medios-altos (4 y 5).
2. Variabilidad en Precios y Áreas:
El análisis de precios por metro cuadrado y áreas construidas en la ZONA NORTE, muestra una amplia variabilidad, con precios que oscilan desde valores considerablemente bajos hasta muy elevados, y áreas que varían desde pequeñas casas hasta grandes propiedades. Esto sugiere un mercado heterogéneo que ofrece opciones tanto accesibles como de lujo, dependiendo del tamaño y la ubicación de la vivienda.
En la zona SUR, los precios de los apartamentos varían desde los 70 hasta 1,750 millones. La mayoría de los apartamentos se concentran en un rango medio de precios, con una media de 290.7 millones. Esta dispersión sugiere una oferta que incluye tanto opciones más accesibles como de alto valor. Las áreas construidas varían considerablemente, desde 40 m² hasta 932 m². La mayoría de los apartamentos tienen áreas en el rango medio, con una media de 101.2 m². Esta diversidad en el tamaño de los apartamentos indica que hay opciones disponibles para diferentes necesidades y preferencias.
3. Variables Predictivas:
4. Modelo Lineal con Limitaciones:
El modelo de regresión aplicado a LAS CASAS DE LA ZONA NORTE, muestra un R² de 0.6777, lo que significa que aproximadamente el 68% de la variabilidad en los precios se explica por las variables independientes incluidas en el modelo. Aunque este valor es aceptable, indica que hay otros factores no considerados en el modelo que podrían estar influyendo en los precios de las viviendas. Además, la prueba de Breusch-Pagan sugiere la presencia de heterocedasticidad en los residuos del modelo, lo que podría afectar la precisión de las estimaciones de los coeficientes. Esta situación subraya la necesidad de aplicar posibles ajustes o considerar modelos más robustos que manejen mejor la variabilidad de los residuos.
El modelo de regresión aplicado a LOS APARTAMENTOS DE LA ZONA SUR, tiene un buen ajuste, con un R-cuadrado de 0.7205, indicando que aproximadamente el 72% de la variabilidad en los precios es explicada por las variables del modelo. Los coeficientes de las variables principales, como el área construida, el estrato y el número de baños, son significativos y tienen el signo esperado. Sin embargo, el coeficiente negativo para el número de habitaciones es contraintuitivo y requiere una investigación adicional para comprender su comportamiento. Se detectó heterocedasticidad en el modelo, con los residuos mostrando una mayor dispersión a medida que aumentan los valores ajustados. Esto puede afectar la precisión de las estimaciones del modelo. Adicionalmente, el test de Durbin-Watson indica una ligera autocorrelación positiva en los residuos, lo que podría afectar la validez de las inferencias del modelo. Esto sugiere que los residuos no son completamente independientes, lo que puede influir en la precisión de las estimaciones.
5. Posibles Mejoras a los Modelos: Conviene explorar transformaciones de variables, como el uso de logaritmos, para mejorar la linealidad y reducir la heterocedasticidad. Además, podría ser beneficioso investigar modelos no lineales o de machine learning que puedan capturar de manera más efectiva las complejidades del mercado inmobiliario de Cali. Adicionalmente conviene aplica la validación cruzada a los modelos.
El dataframe tiene 8322 registros y 13 variables. En primera instancia se evidencia que existen algunos valores faltantes en varias columnas.
En la revisión y reconocimiento preliminar de la base de datos, se identificó que algunas de esas variables no se encontraban estadarizadas durante la captura de la data, por lo que se hace necesario realizar la limpieza y depuración de los registros.
## id zona piso estrato
## Min. : 1 Length:8322 Length:8322 Min. :3.000
## 1st Qu.:2080 Class :character Class :character 1st Qu.:4.000
## Median :4160 Mode :character Mode :character Median :5.000
## Mean :4160 Mean :4.634
## 3rd Qu.:6240 3rd Qu.:5.000
## Max. :8319 Max. :6.000
## NA's :3 NA's :3
## preciom areaconst parqueaderos banios
## Min. : 58.0 Min. : 30.0 Min. : 1.000 Min. : 0.000
## 1st Qu.: 220.0 1st Qu.: 80.0 1st Qu.: 1.000 1st Qu.: 2.000
## Median : 330.0 Median : 123.0 Median : 2.000 Median : 3.000
## Mean : 433.9 Mean : 174.9 Mean : 1.835 Mean : 3.111
## 3rd Qu.: 540.0 3rd Qu.: 229.0 3rd Qu.: 2.000 3rd Qu.: 4.000
## Max. :1999.0 Max. :1745.0 Max. :10.000 Max. :10.000
## NA's :2 NA's :3 NA's :1605 NA's :3
## habitaciones tipo barrio longitud
## Min. : 0.000 Length:8322 Length:8322 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 : 3.605 Mean :-76.53
## 3rd Qu.: 4.000 3rd Qu.:-76.52
## Max. :10.000 Max. :-76.46
## NA's :3 NA's :3
## latitud
## Min. :3.333
## 1st Qu.:3.381
## Median :3.416
## Mean :3.418
## 3rd Qu.:3.452
## Max. :3.498
## NA's :3
Los datos de vivienda ofertados pertenecen a los estratos socioeconómicos más altos (entre 3 y 6).Dado que la mediana es 5, se identifica que la mayoría de las propiedades pertenecen a ese estrato. Adicionalmente existiendo 3 valores faltantes, podría requerir imputación basada en otras variables como zona o barrio.
El preciom, que representa el precio de las propiedades en millones, es de aproximadamente 433.9 millones en su media, con un mínimo de 58 millones y un máximo de 1999 millones, indicando una gran variabilidad en los precios de las propiedades. Adicionalmente, dado que la mediana es 330 millones, pero la media es 433.9 millones, se infiere que hay propiedades con precios muy altos que sesgan la media hacia arriba.Finalmente, hay 2 valores faltantes, que son pocos pero críticos, ya que el precio es una variable clave.
A nivel del área construida (en metros cuadrados), se observa un rango que va desde 30 m² hasta 1745 m². Dado que la media de 174.9 m² es mayor que la mediana es 123 m², sugiere la presencia de propiedades con áreas construidas muy grandes que sesgan la media. Adicionalmente hay 3 valores faltantes que deben revisarse y posiblemente imputarse.
La mayoría de las viviendas tienen entre 2 baños, 3 habitaciones y 3 parqueaderos.
A nivel de la variable Piso se decide excluir del análisis debido que presenta inconsistencias que pueden añadir ruido, pues no es consistente que una casa esté por ejemplo ubicada en el piso 10.
OJOooooooooooooooooooooooooooooooooo PISO EXCLUIR DEL ANÁLISIS DATOS FALTANTES … SOLO A PARQUEADEROS CON MÉODO CART
## id zona piso estrato preciom areaconst
## 3 3 2638 3 2 3
## parqueaderos banios habitaciones tipo barrio longitud
## 1605 3 3 3 3 3
## latitud
## 3
Todos los atributos tienen datos faltantes, sin embargo en el caso de piso y parqueaderos el volumen es considerablemente mayor (2.638 y 1.605, respectivamente).
Adicionalmente se evidencias 3 registros que casi en su totalidad están incopletos, por tanto en la limpieza se procederá a eiminarlos:
# 1. Identificar si existen registros con datos faltantes en todos los atributos
faltantes_todos_atributos <- vivienda[, !names(vivienda) %in% c("piso", "parqueaderos")]
indices_na <- which(rowSums(is.na(faltantes_todos_atributos)) > 0)
registros_na <- vivienda[indices_na, ]
print(registros_na)## # A tibble: 3 × 13
## id zona piso estrato preciom areaconst parqueaderos banios habitaciones
## <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 NA <NA> <NA> NA NA NA NA NA NA
## 2 NA <NA> <NA> NA NA NA NA NA NA
## 3 NA <NA> <NA> NA 330 NA NA NA NA
## # ℹ 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
# Identificar filas duplicadas en el dataframe 'vivienda'
duplicados <- vivienda[duplicated(vivienda), ]
duplicadosSe evidencia que aparecen duplicados de registros NA evidenciados en el punto anterior. Una vez estos se eliminen, se corrige también la duplicidad.
# Eliminar los registros donde 'id' es NA
vivienda2 <- vivienda2[!is.na(vivienda2$id), ]
dim(vivienda2)## [1] 8319 12
library(VIM)
calcular_moda <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
vivienda2$parqueaderos <- kNN(vivienda2, variable = "parqueaderos", k = 10, numFun = calcular_moda)$parqueaderos
#metodos = make.method(vivienda2)
#metodos ["parqueaderos"] = "cart"
#metodos [names(metodos) != "parqueaderos"] = ""
#imputacion = mice(vivienda2, method = metodos, m = 1, maxit = 10, seed = 123)
#vivienda2 = complete(imputacion)Confirmación de inexistencia de datos faltantes:
## id zona estrato preciom areaconst parqueaderos
## 0 0 0 0 0 0
## banios habitaciones tipo barrio longitud latitud
## 0 0 0 0 0 0
# Contar cuántos registros tienen valor cero en cada variable
cero_counts <- sapply(vivienda2, function(x) sum(x == 0, na.rm = TRUE))
print(cero_counts)## id zona estrato preciom areaconst parqueaderos
## 0 0 0 0 0 0
## banios habitaciones tipo barrio longitud latitud
## 45 66 0 0 0 0
Dado que no es factible que una vivienda cuente con cero baños y habitaciones, se procede a imputar la moda.
# Función para calcular la moda
calculate_mode <- function(x) {
unique_x <- unique(x)
unique_x[which.max(tabulate(match(x, unique_x)))]
}
# Calcular la moda sin contar los ceros
mode_habitaciones <- calculate_mode(vivienda2$habitaciones[vivienda2$habitaciones != 0])
mode_banios <- calculate_mode(vivienda2$banios[vivienda2$banios != 0])
# Imputar la moda en 'habitaciones' y 'banios' donde el valor es 0
vivienda2$habitaciones[vivienda2$habitaciones == 0] <- mode_habitaciones
vivienda2$banios[vivienda2$banios == 0] <- mode_banios
cero_counts <- sapply(vivienda2, function(x) sum(x == 0, na.rm = TRUE))
print(cero_counts)## id zona estrato preciom areaconst parqueaderos
## 0 0 0 0 0 0
## banios habitaciones tipo barrio longitud latitud
## 0 0 0 0 0 0
# Se corrigen todos los nombres de los barrios y se llevan a minúscula
vivienda2$barrio <- tolower(vivienda2$barrio)
# Se eliminan las tildes
vivienda2$barrio <- iconv(vivienda2$barrio, to = "ASCII//TRANSLIT")
# Se hace limpieza de los nombres de los barrios
vivienda2 <- vivienda2 %>%
mutate(barrio = ifelse(barrio == "agua blanca", "aguablanca", barrio),
barrio = ifelse(barrio == "alf?crez real", "alferez real", barrio),
barrio = ifelse(barrio == "alfonso lopez i", "alfonso lopez", barrio),
barrio = ifelse(barrio == "arboledas", "arboleda", barrio),
barrio = ifelse(barrio == "cali bella", "calibella", barrio),
barrio = ifelse(barrio == "cali canto", "calicanto", barrio),
barrio = ifelse(barrio == "calicanto viii", "calicanto", barrio),
barrio = ifelse(barrio == "ciudad mel?cndez", "ciudadela melendez", barrio),
barrio = ifelse(barrio == "ciudad melendez", "ciudadela melendez", barrio),
barrio = ifelse(barrio == "ciudadela pasoancho", "ciudadela paso ancho", barrio),
barrio = ifelse(barrio == "el tr?cbol", "el trebol", barrio),
barrio = ifelse(barrio == "ingenio i", "el ingenio i", barrio),
barrio = ifelse(barrio == "ingenio", "el ingenio", barrio),
barrio = ifelse(barrio == "ingenio ii", "el ingenio ii", barrio),
barrio = ifelse(barrio == "el ingenio 3", "el ingenio iii", barrio),
barrio = ifelse(barrio == "laflora", "la flora", barrio),
barrio = ifelse(barrio == "las am?cricas", "las americas", barrio),
barrio = ifelse(barrio == "las vegas de", "las vegas", barrio),
barrio = ifelse(barrio == "los alamos", "alamos", barrio),
barrio = ifelse(barrio == "alborada", "la alborada", barrio),
barrio = ifelse(barrio == "alcazares", "los alcazares", barrio),
barrio = ifelse(barrio == "mel?cndez", "melendez", barrio),
barrio = ifelse(barrio == "pampalinda", "pampa linda", barrio),
barrio = ifelse(barrio == "portales de comfandi", "portada de comfandi", barrio),
barrio = ifelse(barrio == "rep??blica de israel", "republica de israel", barrio),
barrio = ifelse(barrio == "rincon de la", "rincon de salomia", barrio),
barrio = ifelse(barrio == "san judas", "san judas tadeo", barrio),
barrio = ifelse(barrio == "tequendeme", "tequendama", barrio),
barrio = ifelse(barrio == "valle de lili", "valle del lili", barrio),
barrio = ifelse(barrio == "tequendema", "tequendama", barrio),
barrio = ifelse(barrio == "barrio 7de agosto", "7 de agosto", barrio),
barrio = ifelse(barrio == "barrio el recuerdo", "el recuerdo", barrio), barrio = ifelse(barrio == "barrio eucaristico", "eucaristico", barrio),
barrio = ifelse(barrio == "barrio obrero", "obrero", barrio),
barrio = ifelse(barrio == "barrio tranquilo y", "tranquilo", barrio),
barrio = ifelse(barrio == "base a?crea", "base aerea", barrio),
barrio = ifelse(barrio == "base a?crea", "base aerea", barrio),
barrio = ifelse(barrio == "juanamb??", "juanambu", barrio),
barrio = ifelse(barrio == "la riviera", "la rivera", barrio),
barrio = ifelse(barrio == "flora", "la flora", barrio),
barrio = ifelse(barrio == "cristales", "los cristales", barrio),
barrio = ifelse(barrio == "normandia west point", "normandia", barrio),
barrio = ifelse(barrio == "zona norte los", "zona norte", barrio))