María, tras 10 años de experiencia en el sector inmobiliario y la fundación de C&A en Cali, enfrenta un escenario de disminución de ventas debido a tensiones políticas y sociales, aunque se espera una reactivación con el apoyo de instituciones bancarias. Recientemente, recibiste una solicitud de una compañía internacional para asesorar la compra de dos viviendas en Cali: una casa en la zona norte y un apartamento en la zona sur, con créditos preaprobados de 350 y 850 millones de pesos, respectivamente. Este informe presenta un análisis basado en modelos de regresión lineal múltiple para predecir precios y sugerir ofertas potenciales, junto con recomendaciones para tu consideración.
Caso 1: Vivienda 1 (Casa, Zona Norte)
-
Características solicitadas:
Área construida de
200 m², 1 parqueadero, 2 baños, 4 habitaciones, estrato 4 o 5, crédito
preaprobado de 350 millones.
- Predicción del
modelo:
Estrato 4: ~300 millones (intervalo de
confianza 95%: 277.7 - 322.5 millones).
Estrato 5: ~382.4
millones (intervalo de confianza 95%: 350 - 414.8 millones).
El
rango para estrato 4 está dentro del presupuesto, mientras que estrato 5
excede ligeramente el límite, siendo viable solo en el extremo inferior
del intervalo.
- Ofertas potenciales:
Se identificaron 7 viviendas en la zona norte (filtrada por
coordenadas) con precios predichos ≤ 350 millones:
1. 286.68
millones (190 m², 4 hab., 2 baños, 1 parqueadero, estrato 3).
2.
315.92 millones (210 m², 3 hab., 2 baños, 0 parqueaderos, estrato
4).
3. 292.45 millones (180 m², 5 hab., 1 baño, 1 parqueadero,
estrato 3).
4. 321.33 millones (200 m², 4 hab., 1 baño, 1
parqueadero, estrato 4).
5. 308.17 millones (220 m², 3 hab., 2
baños, 0 parqueaderos, estrato 3).
- Mapa: Las ofertas están geolocalizadas en la zona norte, confirmando la corrección del filtro por coordenadas.
- Discusión:
La oferta 1 es la más
económica y cumple con el presupuesto, aunque tiene estrato 3.
La oferta 4 se alinea mejor con las características solicitadas,
pero está cerca del límite; podrías negociar un precio inferior a 350
millones.
La falta de parqueadero en algunas opciones (2 y 5)
podría ser un inconveniente, pero podría compensarse con ubicaciones
estratégicas.
- Recomendación:
Priorizar la oferta 1 (286.68 millones) por su ajuste al presupuesto
y negocia con las opciones 3 y 4 para asegurar las características
deseadas dentro del límite.
Caso 2: Vivienda 2 (Apartamento, Zona Sur)
- Características solicitadas:
Área
construida de 300 m², 3 parqueaderos, 3 baños, 5 habitaciones, estrato 5
o 6, crédito preaprobado de 850 millones.
- Predicción
del modelo:
Estrato 5: ~712.6 millones (intervalo de
confianza 95%: 686.7 - 738.5 millones).
Estrato 6: ~768.4
millones (intervalo de confianza 95%: 742.2 - 794.6 millones).
Ambos valores superan el presupuesto, pero el intervalo inferior de
estrato 5 (686.7 millones) está cerca de 850 millones.
-
Ofertas potenciales:
Se identificaron 4
viviendas en la zona sur (filtrada por coordenadas) con precios
predichos, pero ninguna cumple todos los parámetros. La mejor opción
es:
1. 542.7 millones (real: 350 millones, 300 m², 4 hab., 3
baños, 2 parqueaderos, estrato 5).
2. 581.7 millones (real: 500
millones, 320 m², 5 hab., 3 baños, 2 parqueaderos, estrato 6).
3. 660.5 millones (real: 980 millones, 310 m², 4 hab., 3 baños, 3
parqueaderos, estrato 6, Ciudad Jardín).
4. 664 millones (real:
950 millones, 330 m², 5 hab., 4 baños, 3 parqueaderos, estrato 6, Ciudad
Jardín).
- Mapa: Los apartamentos 3 y 4 están en Ciudad Jardín, un barrio exclusivo, lo que explica su alto valor real (980 y 950 millones) frente a las predicciones (660.5 y 664 millones).
- Discusión:
La oferta 1 está dentro del
presupuesto, pero falta 1 parqueadero y 1 habitación.
Las
opciones 3 y 4 exceden el presupuesto real, pero su ubicación en Ciudad
Jardín sugiere un valor del metro cuadrado más alto que el modelo no
captura.
La variabilidad entre valores reales y predichos (35.5%
a -48.4%) indica que el modelo subestima precios en zonas
exclusivas.
- Recomendación:
Negociar
la oferta 1 (542.7 millones) para incluir un parqueadero adicional o
ajusta el presupuesto. Explora barrios como Ciudad Jardín con la empresa
para justificar un crédito mayor si el valor real lo amerita.
Los modelos de regresión lineal ajustados para las zonas norte y sur
predicen precios con un R^2 de 0.6516 y 0.7472, respectivamente, pero
presentan heterocedasticidad y no normalidad, afectando la precisión.
Filtrar por coordenadas corrigió errores en el atributo zona, mejorando
la calidad de los datos.
Acciones que pueden mejorar el
modelo:
- Ajustar los modelos con transformaciones logarítmicas para
mitigar heterocedasticidad.
- Incluir variables como barrio para
capturar patrones espaciales.
Se anexan los detalles técnicos.
- Anexo 1: Estimaciones y Validación del Modelo - Zona
Norte:
Se filtra el conjunto de datos por zona norte y
tipo casa, se muestran los 3 primeros resultados y tabla resumiendo los
datos
id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1209 | Zona Norte | 02 | 5 | 320 | 150 | 2 | 4 | 6 | Casa | acopi | -76.51341 | 3.47968 |
1592 | Zona Norte | 02 | 5 | 780 | 380 | 2 | 3 | 3 | Casa | acopi | -76.51674 | 3.48721 |
4057 | Zona Norte | 02 | 6 | 750 | 445 | NA | 7 | 6 | Casa | acopi | -76.52950 | 3.38527 |
No | Variable | Stats / Values | Freqs (% of Valid) | Graph | Valid | Missing | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | id [numeric] |
|
722 distinct values | 722 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | zona [character] | 1. Zona Norte |
|
722 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3 | piso [character] |
|
|
350 (48.5%) | 372 (51.5%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 | estrato [numeric] |
|
|
722 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5 | preciom [numeric] |
|
167 distinct values | 722 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6 | areaconst [numeric] |
|
251 distinct values | 722 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7 | parqueaderos [numeric] |
|
|
435 (60.2%) | 287 (39.8%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8 | banios [numeric] |
|
11 distinct values | 722 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
9 | habitaciones [numeric] |
|
11 distinct values | 722 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10 | tipo [character] | 1. Casa |
|
722 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
11 | barrio [character] |
|
|
722 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12 | longitud [numeric] |
|
464 distinct values | 722 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
13 | latitud [numeric] |
|
462 distinct values | 722 (100.0%) | 0 (0.0%) |
Generated by summarytools 1.0.1 (R version 4.4.1)
2025-03-03
Se muestra el mapa de las viviendas filtradas.
Los puntos muestran que hay grandes inconsistencias entre la zona y las coordenadas ingresadas, lo que demuestra un error en la consignación de los datos. Sin una forma de confirmar si el error está en la zona o en las coordenadas, solo se puede suponer que una de las dos es incorrecta y hacer el filtro según el atributo que se elija. Como un error en las coordenadas mostraría puntos en lugares muy alejados de la ciudad, por ejemplo, al intercambiar latitud con longitud o al no tomar la cantidad correcta de decimales, se concluye que el error está en la clasificación del atributo zona. Para filtrar correctamente los datos, se aplicará un filtro basado en las coordenadas de cada vivienda.
Nuevo tamaño del conjunto de datos: 654
Al realizar el nuevo filtrado de las viviendas, se observa que ya no hay viviendas en zonas incorrectas; sin embargo, este método depende de una definición subjetiva de cuál es la zona norte de la ciudad. Además, el tamaño de este nuevo conjunto (654) es menor que el conjunto filtrado por el atributo zona (722), pero es un mejor conjunto de datos para entrenar el modelo, ya que las viviendas están en una misma zona espacial y el modelo no recibirá valores anómalos provenientes de viviendas en zonas erróneas.
Análisis exploratorio de datos
Matriz de correlación
En la matriz de correlación no se encuentran valores preocupantemente altos, pero hay varios que superan 0.5. El valor más alto es entre precio y área, lo cual es lógico considerando que a mayor área construida aumenta el precio de la vivienda. No se observa ninguna relación negativa, lo que coincide con la realidad.
Gráficos
En la gráfica se puede ver que el precio tiene una relación casi lineal con el área desde el inicio hasta los 1,000 millones y 500 m²; después de este umbral, los valores se dispersan y se identifican varios outliers.
Respecto al número de baños, la gran mayoría se encuentra entre 2 y 6 baños, y en rangos de precio hasta 1,000 millones.
En el número de habitaciones, la mayor distribución se encuentra entre 3 y 7 habitaciones. Un comportamiento extraño de los datos es que tanto en baños como en habitaciones hay una cantidad considerable de datos con valor cero. Aunque en el caso de los baños se deben revisar posibles errores, existe la posibilidad de que no haya baño propio en la vivienda; sin embargo, es imposible que exista una vivienda con cero habitaciones, incluso en el caso de apartaestudios, ya que siempre se tiene al menos una habitación. Por lo tanto, estos valores deben corregirse.
En la distribución por estrato, el comportamiento es el esperado: a mayor estrato, mayor es el precio de las viviendas. Se observan algunos outliers en los estratos 4 y 5 que tienen valores casi tan altos como en el estrato 6, pero es normal que existan casas con un valor mucho más alto al promedio de su estrato.
Modelo de regresión lineal multiple
Dependent variable: | |
preciom | |
areaconst | 0.7300*** |
(0.0604) | |
estrato | 83.3820*** |
(11.1841) | |
habitaciones | -14.5063** |
(6.5948) | |
parqueaderos | 43.2155*** |
(6.5132) | |
banios | 33.3522*** |
(8.9264) | |
Constant | -241.0656*** |
(50.3388) | |
Observations | 440 |
R2 | 0.6144 |
Adjusted R2 | 0.6099 |
Residual Std. Error | 181.7772 (df = 434) |
F Statistic | 138.2903*** (df = 5; 434) |
Note: | p<0.1; p<0.05; p<0.01 |
Análisis de coeficientes
Área: El valor p es menor
a 0.05, por lo que es estadísticamente significativo. El coeficiente
tiene un valor de 0.72996, lo que indica que por cada metro adicional,
el precio de la vivienda aumenta en 729,996 pesos al mantener las demás
variables constantes. Esto es lógico, ya que a mayor área construida,
mayor debe ser el valor de la vivienda.
Estrato: El valor p
es menor a 0.05, por lo que es estadísticamente significativo. El
coeficiente tiene un valor de 83.38196, lo que indica que por cada nivel
de estrato que se aumenta, el precio de la vivienda aumenta en 83.4
millones de pesos al mantener las demás variables constantes. Esto es
lógico, ya que al aumentar el estrato, el valor del metro cuadrado
también aumenta debido a las amenidades que justifican su valor.
Habitaciones: El valor p de 0.028 es menor a 0.05, por lo que es
estadísticamente significativo por un margen muy pequeño. El coeficiente
tiene un valor de -14.506, lo que indica que por cada habitación
adicional, el precio de la vivienda se reduce en 14.506 millones de
pesos al mantener las demás variables constantes. Esto se puede explicar
porque, si todas las variables se mantienen (especialmente el área), un
aumento en la cantidad de habitaciones puede llevar a divisiones
excesivas que reduzcan el valor de la vivienda.
Parqueaderos: El valor p es menor a 0.05, por lo que es
estadísticamente significativo. El coeficiente tiene un valor de 43.21,
lo que indica que por cada parqueadero adicional, el precio de la
vivienda aumenta en 43.2 millones de pesos al mantener las demás
variables constantes. Esto es lógico, ya que la cantidad de parqueaderos
es un valor agregado a las viviendas que puede o no formar parte del
área construida.
Baños: El valor p es menor a 0.05, por lo
que es estadísticamente significativo. El coeficiente tiene un valor de
33.35, lo que indica que por cada baño adicional, el precio de la
vivienda aumenta en 33.4 millones de pesos al mantener las demás
variables constantes. Esto es lógico, ya que al aumentar la cantidad de
baños se considera que la vivienda es más cómoda, además de que es uno
de los cuartos más caros de construir.
Intercepto: El
intercepto tiene un valor de -241.06555, lo que indica que el valor de
una vivienda cuando todos los coeficientes son cero es -241.1 millones;
este valor no tiene sentido porque el precio de una vivienda no puede
ser negativo. Como el intercepto es un valor dentro del modelo de
regresión matemático, puede tener valores que no tengan sentido en la
vida real, y dado que no debe existir un caso de una vivienda con área,
habitaciones, baños, etc., igual a cero, no es preocupante que el
intercepto tenga un valor negativo.
R2: El valor de R2 del
modelo es 0.6144, lo que significa que el modelo explica el 61.44% de la
variabilidad del precio. Este porcentaje no es muy favorable, y algunas
acciones que se pueden tomar para mejorar la calidad de la regresión
incluyen revisar si hay valores nulos en los datos, analizar los casos
de casas con cero baños y habitaciones, determinar si estos datos están
erróneos y eliminarlos o imputarlos para mejorar la calidad de los datos
y permitir un modelo más confiable, así como identificar y eliminar
outliers para que los datos extremos no afecten los resultados del
modelo.
Revisión de NA: Al revisar los NA dentro del conjunto
de datos, se encuentran 291 registros en piso y 214 en parqueaderos.
Campos vacios | |
---|---|
id | 0 |
zona | 0 |
piso | 291 |
estrato | 0 |
preciom | 0 |
areaconst | 0 |
parqueaderos | 214 |
banios | 0 |
habitaciones | 0 |
tipo | 0 |
barrio | 0 |
longitud | 0 |
latitud | 0 |
Los registros con piso NA fueron cambiados por 1; se consideró que la variable piso representa el piso donde se encuentra el inmueble, no la cantidad de pisos construidos, para que tenga sentido tanto para casas como apartamentos en el conjunto de datos original. Por esto, se decidió que todas las viviendas tipo casa tienen piso 1. Para parqueaderos, lo primero que se notó es que los valores van desde 1 hasta 5, lo cual es incongruente con la realidad porque hay muchas viviendas que no tienen parqueadero, independientemente de que sean casas o apartamentos. Por esto, se decidió tomar los NA como 0 para representar las viviendas que no tienen parqueadero propio. Se revisa que no queden más valores NA en los datos.
Campos vacios | |
---|---|
id | 0 |
zona | 0 |
piso | 0 |
estrato | 0 |
preciom | 0 |
areaconst | 0 |
parqueaderos | 0 |
banios | 0 |
habitaciones | 0 |
tipo | 0 |
barrio | 0 |
longitud | 0 |
latitud | 0 |
Se calcula un nuevo modelo con la data corregida.
Dependent variable: | |
preciom | |
areaconst | 0.7942*** |
(0.0538) | |
estrato | 88.9330*** |
(9.2131) | |
habitaciones | -6.7509 |
(5.3742) | |
parqueaderos | 18.5645*** |
(5.1480) | |
banios | 31.6183*** |
(6.7319) | |
Constant | -240.3317*** |
(38.6503) | |
Observations | 654 |
R2 | 0.6251 |
Adjusted R2 | 0.6222 |
Residual Std. Error | 182.7938 (df = 648) |
F Statistic | 216.1264*** (df = 5; 648) |
Note: | p<0.1; p<0.05; p<0.01 |
El nuevo modelo tiene varias diferencias respecto al anterior. Los coeficientes del intercepto, areaconst, estrato y habitaciones cambiaron sus magnitudes y p-values, pero su significancia se mantuvo. El cambio en parqueaderos es importante: su coeficiente cambió de 43.2 a 18.6 (una diferencia de -24.6) y su p-value aumentó. Esto indica que imputar los NA de parqueaderos por cero para representar las viviendas sin parqueadero parece haber sesgado el modelo, ya que se agruparon posibles ceros verdaderos con datos faltantes que no son cero, afectando el coeficiente artificialmente. El coeficiente de habitaciones también cambió y ya no es significativo para el modelo. Este nuevo modelo no parece confiable porque no es realista que el valor de una vivienda se vea afectado tan poco por la cantidad de parqueaderos, considerando el coeficiente anterior. Se va a probar una imputación alternativa de los NA de parqueaderos usando los promedios por estrato.
Dependent variable: | |
preciom | |
areaconst | 0.7662*** |
(0.0529) | |
estrato | 82.5370*** |
(8.9879) | |
habitaciones | -5.8697 |
(5.2598) | |
parqueaderos | 39.6589*** |
(6.1990) | |
banios | 28.4905*** |
(6.6178) | |
Constant | -248.8234*** |
(37.0258) | |
Observations | 654 |
R2 | 0.6403 |
Adjusted R2 | 0.6376 |
Residual Std. Error | 179.0507 (df = 648) |
F Statistic | 230.7325*** (df = 5; 648) |
Note: | p<0.1; p<0.05; p<0.01 |
En este nuevo modelo hay de nuevo diferencias en las magnitudes de
los coeficientes, pero el cambio más relevante es en parqueaderos, donde
su coeficiente tiene un valor más cercano al original. Por último, se
revisa la cantidad de registros con cero en habitaciones o baños.
Cantidad de habitaciones con valor cero:
FALSE TRUE 646 8
Cantidad de baños con valor cero:
FALSE TRUE 649 5
Nuevo
tamaño del conjunto de datos
645 Se encuentra que hay 8 habitaciones
y 5 baños con valor cero. Como la cantidad de registros totales de la
fuente de datos es 654, aún en el peor caso, donde sean 13 registros con
cero, esto representa el 1.9% de los registros. Por lo que es seguro
eliminar estos registros. Los registros resultantes son 645.
Dependent variable: | |
preciom | |
areaconst | 0.7403*** |
(0.0528) | |
estrato | 82.3220*** |
(8.9892) | |
habitaciones | -2.9819 |
(5.5054) | |
parqueaderos | 37.9534*** |
(6.1093) | |
banios | 32.5331*** |
(6.8752) | |
Constant | -268.3351*** |
(37.5142) | |
Observations | 645 |
R2 | 0.6516 |
Adjusted R2 | 0.6488 |
Residual Std. Error | 176.0662 (df = 639) |
F Statistic | 238.9828*** (df = 5; 639) |
Note: | p<0.1; p<0.05; p<0.01 |
Validación de supuestos del modelo
Los errores son
variables aleatorias normales.
Estadistico | Valor |
---|---|
Estadístico W | 0.8236 |
p-valor | 4.98383679145735e-26 |
Método | Shapiro-Wilk normality test |
Datos | residuals(modelo) |
El p-value es menor a 0.05, con este resultado se rechaza la
hipótesis nula (H0: los residuos son normales). Esto indica que los
residuos no siguen una distribución normal y no cumple con el supuesto.
Se podría aplicar una transformación logarítmica a precio (ej.
lm(log(preciom) ~ …) o usar un modelo robusto que no dependa de la
normalidad.
Los errores tienen media cero.
Prueba t para
media cero de los residuos:
Valor t: 0
Grados de libertad: 644
p-valor: 1
Intervalo de confianza 95%: -13.56028 a 13.56028
Media estimada: 0
p-value = 1, con este valor no se puede
rechazar H0: La media de los errores es cero. El valor de la media de
los errores es 9.823376e-16, que es un valor muy cercano a cero, y el
intervalo de confianza contiene el cero (-13.56028 a 13.56028).
Los errores tienen varianza constante.
Estadistico | Valor |
---|---|
Estadístico GQ | 1.7657 |
Grados de libertad 1 | 317 |
Grados de libertad 2 | 316 |
p-valor | 2.59469390109518e-07 |
Hipótesis alternativa | variance increases from segment 1 to 2 |
Con el p-value obtenido no se puede rechazar H0: La varianza de los
errores es constante, por lo que este supuesto se cumple.
Los
errores son mutuamente independientes.
statistic | p.value | method | alternative |
---|---|---|---|
1.544294 | 0 | Durbin-Watson test | true autocorrelation is greater than 0 |
Con el p-value se rechaza la H0: No hay autocorrelación. Con este
resultado se afirma que no se cumple con este supuesto. Esto se puede
dar porque la existencia de algún patrón en los datos que el modelo no
está capturando; como se trata de datos espaciales, se podría incluir
una variable como barrio al modelo para intentar capturar el posible
patrón en los datos.
Predecir el precio de la vivienda
1
Estrato | Prediccion | Límite_Inferior | Límite_Superior |
---|---|---|---|
4 | 300.10 | 277.71 | 322.49 |
5 | 382.42 | 350.03 | 414.81 |
Usando los coeficientes del modelo se hace una predicción para cada
estrato. Para el estrato 4, el modelo predice que la casa puede valer
300 millones con un intervalo de confianza al 95% desde 277.7 a 322.5
millones. Con estos valores es posible conseguir una casa que coincida
con los requerimientos. Para el estrato 5, el valor calculado es de
382.4 millones con un intervalo de confianza de 350 a 414.8 millones. En
este caso, el modelo indica que conseguir una casa con estas
características en estrato 5 es prácticamente imposible; el valor dado
por el modelo es casi 32 millones superior al crédito preaprobado, y
solo tomando el intervalo de confianza en su valor inferior se puede
cumplir con el cupo.
Encontrar viviendas usando el modelo
Se filtran los valores dentro de la zona norte según los siguientes
parámetros, buscando un rango más amplio de opciones inmobiliarias que
mostrar:
areaconst >= 180 & areaconst <= 220, # Rango de
área cercano a 200
habitaciones >= 3 & habitaciones <= 5,
# Rango de habitaciones cercano a 4
banios >= 1 & banios
<= 3, # Rango de baños cercano a 2
parqueaderos >= 0 &
parqueaderos <= 2, # Rango de parqueaderos cercano a 1
estrato
>= 4 & estrato <= 5 # Rango de estrato amplio
Con estos
parámetros solo se encontraron 2 posibles viviendas que cumplen
cercanamente con los parámetros. La segunda opción cumple con los
parámetros indicados, pero supera el valor máximo del crédito en 10
millones, mientras que la primera opción no cumple con el área por 10 m²
y por una habitación.
id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud | precio_predicho | dentro_presupuesto |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4511 | Zona Norte | 1 | 4 | 275 | 190 | 2 | 2 | 3 | Casa | acopi | -76.53198 | 3.45165 | 333.6320 | TRUE |
1222 | Zona Norte | 02 | 4 | 360 | 216 | 2 | 2 | 4 | Casa | la merced | -76.51390 | 3.48386 | 349.8972 | TRUE |
Para buscar más opciones, se tomaron las viviendas desde el estrato 3 a 5. En este caso, todas las mejores ofertas están en el estrato 3; las últimas 3 viviendas cumplen o superan los parámetros solicitados con precios mucho menores o casi iguales a las propuestas anteriores.
id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud | precio_predicho | dentro_presupuesto |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
206 | Zona Norte | 02 | 3 | 219 | 183 | 1 | 2 | 5 | Casa | la rivera | -76.48900 | 3.47500 | 202.2109 | TRUE |
391 | Zona Norte | 03 | 3 | 175 | 180 | 1 | 2 | 3 | Casa | villa del prado | -76.49500 | 3.46589 | 205.9538 | TRUE |
612 | Zona Norte | 01 | 3 | 270 | 196 | 1 | 2 | 4 | Casa | calima | -76.49994 | 3.48465 | 214.8163 | TRUE |
939 | Zona Oriente | 01 | 3 | 195 | 210 | 1 | 2 | 5 | Casa | el troncal | -76.50606 | 3.45152 | 222.1983 | TRUE |
1060 | Zona Centro | 01 | 3 | 295 | 200 | 1 | 3 | 4 | Casa | san juan bosco | -76.50887 | 3.47723 | 250.3105 | TRUE |
Resumen de los precios reales vs. predicción del modelo
Caso 1 (estratos 4 y 5)
Valor.Real | Valor.predicción | X..Var |
---|---|---|
360 | 349.9 | -2.9 |
275 | 333.6 | 17.6 |
Caso 2 (Estratos 3 a 5)
Valor.Real | Valor.predicción | X..Var |
---|---|---|
219 | 202.00 | -8.4 |
175 | 205.95 | 15.0 |
270 | 214.82 | -25.7 |
195 | 222.20 | 12.2 |
295 | 250.31 | -17.9 |
La diferencia entre el valor real y el calculado tiene una
variabilidad elevada a partir de la pequeña muestra que tenemos.
Considerando que el R2 del modelo es 0.65 y que no se cumplieron algunos
supuestos, los resultados están dentro de lo esperado y se puede
concluir que este modelo de regresión lineal podría no ser la mejor
herramienta para predecir el precio de una vivienda.
- Anexo 2: Estimaciones y Validación del Modelo - Zona
Sur:
Se filtra el conjunto de datos por zona sur y tipo
apartamento, se muestran los 3 primeros resultados y tabla resumiendo
los datos
id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud |
---|---|---|---|---|---|---|---|---|---|---|---|---|
5098 | Zona Sur | 05 | 4 | 290 | 96 | 1 | 2 | 3 | Apartamento | acopi | -76.53464 | 3.44987 |
698 | Zona Sur | 02 | 3 | 78 | 40 | 1 | 1 | 2 | Apartamento | aguablanca | -76.50100 | 3.40000 |
8199 | Zona Sur | NA | 6 | 875 | 194 | 2 | 5 | 3 | Apartamento | aguacatal | -76.55700 | 3.45900 |
No | Variable | Stats / Values | Freqs (% of Valid) | Graph | Valid | Missing | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | id [numeric] |
|
3219 distinct values | 3219 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | zona [character] |
|
|
3219 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3 | piso [character] |
|
|
1965 (61.0%) | 1254 (39.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 | estrato [numeric] |
|
|
3219 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5 | preciom [numeric] |
|
305 distinct values | 3219 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6 | areaconst [numeric] |
|
503 distinct values | 3219 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7 | parqueaderos [numeric] |
|
|
2486 (77.2%) | 733 (22.8%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8 | banios [numeric] |
|
11 distinct values | 3219 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
9 | habitaciones [numeric] |
|
11 distinct values | 3219 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10 | tipo [character] | 1. Casa |
|
3219 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
11 | barrio [character] |
|
|
3219 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12 | longitud [numeric] |
|
1604 distinct values | 3219 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
13 | latitud [numeric] |
|
1802 distinct values | 3219 (100.0%) | 0 (0.0%) |
Generated by summarytools 1.0.1 (R version 4.4.1)
2025-03-03
Se muestra el mapa de las viviendas filtradas.
Igual que en el caso anterior, hay errores de clasificación de la zona de las viviendas; se procede a hacer un filtro por coordenadas de la zona sur de la ciudad. De nuevo, se observa que ya no hay viviendas en zonas alejadas al resto. Con este método se reiteran los riesgos de tomar un límite subjetivo y que el tamaño de los registros disminuye a 2060 de los 2787 originales al filtrar por el atributo zona.
Nuevo tamaño del conjunto de datos: 2060 Análisis exploratorio de datos
Matriz de correlación
Los valores de correlación entre las variables muestran que la relación entre precio y área es muy alta (0.75), aunque al estar tan relacionadas es lógico; sin embargo, está en el rango que podría implicar multicolinealidad. Otra correlación preocupantemente alta es la de baños y precio.
Gráficos
En la gráfica se puede ver una relación casi lineal entre el precio y el área hasta las viviendas de 400 m²; de ahí en adelante, los apartamentos se dispersan.
La mayoría de los baños están entre 2 y 5, y se nota que el rango de valor de las viviendas aumenta según la cantidad de baños, lo que puede explicar por qué su correlación es tan alta.
En el número de habitaciones, la mayor distribución se encuentra entre 2 y 4 habitaciones, con solo 3 casos con más de 6. Igual que en el caso anterior, hay apartamentos con cero habitaciones y baños.
En la distribución por estrato, el comportamiento es el esperado: a
mayor estrato, mayor es el precio de las viviendas.
Modelo de regresión lineal multiple
Considerando el caso
anterior, primero se revisarán los NA.
Campos vacios | |
---|---|
id | 0 |
zona | 0 |
piso | 496 |
estrato | 0 |
preciom | 0 |
areaconst | 0 |
parqueaderos | 306 |
banios | 0 |
habitaciones | 0 |
tipo | 0 |
barrio | 0 |
longitud | 0 |
latitud | 0 |
Como en el caso anterior, hay NA en piso y parqueadero; se van a imputar usando la estrategia de promedio por estrato y eliminar los ceros de baños y habitaciones.
Dependent variable: | |
preciom | |
areaconst | 1.3591*** |
(0.0578) | |
estrato | 55.7750*** |
(3.3939) | |
habitaciones | -28.3561*** |
(4.5099) | |
parqueaderos | 91.4831*** |
(5.3514) | |
banios | 45.4091*** |
(3.9509) | |
Constant | -242.8918*** |
(17.3975) | |
Observations | 2,049 |
R2 | 0.7472 |
Adjusted R2 | 0.7466 |
Residual Std. Error | 104.2028 (df = 2043) |
F Statistic | 1,207.9530*** (df = 5; 2043) |
Note: | p<0.1; p<0.05; p<0.01 |
Análisis de coeficientes
Área: El valor p es menor
a 0.05, por lo que es estadísticamente significativo. El coeficiente
tiene un valor de 1.36, lo que indica que por cada metro adicional, el
precio de la vivienda aumenta en 1.36 millones de pesos al mantener las
demás variables constantes. Esto es lógico, ya que a mayor área
construida, mayor debe ser el valor de la vivienda.
Estrato:
El valor p es menor a 0.05, por lo que es estadísticamente
significativo. El coeficiente tiene un valor de 55.77, lo que indica que
por cada nivel de estrato que se aumenta, el precio de la vivienda
aumenta en 55.77 millones de pesos al mantener las demás variables
constantes. Esto es lógico, ya que al aumentar el estrato, el valor del
metro cuadrado también aumenta debido a las amenidades que justifican su
valor.
Habitaciones: El valor p es menor a 0.05, por lo que
es estadísticamente significativo. El coeficiente tiene un valor de
-28.35, lo que indica que por cada habitación adicional, el precio de la
vivienda se reduce en 28.35 millones de pesos al mantener las demás
variables constantes. Esto se puede explicar porque, si todas las
variables se mantienen (especialmente el área), un aumento en la
cantidad de habitaciones puede llevar a divisiones excesivas que
reduzcan el valor de la vivienda. También puede deberse a
multicolinealidad entre los atributos; se realizarán pruebas para
revisar este supuesto.
Parqueaderos: : El valor p es menor a 0.05, por lo que es
estadísticamente significativo. El coeficiente tiene un valor de 91.48,
lo que indica que por cada parqueadero adicional, el precio de la
vivienda aumenta en 91.48 millones de pesos al mantener las demás
variables constantes. Esto es lógico, ya que la cantidad de parqueaderos
es un valor agregado a las viviendas que puede o no formar parte del
área construida.
Baños: El valor p es menor a 0.05, por lo
que es estadísticamente significativo. El coeficiente tiene un valor de
45.41, lo que indica que por cada baño adicional, el precio de la
vivienda aumenta en 45.41 millones de pesos al mantener las demás
variables constantes. Esto es lógico, ya que al aumentar la cantidad de
baños se considera que la vivienda es más cómoda, además de que es uno
de los cuartos más caros de construir.
Intercepto: El
intercepto tiene un valor de -242.89183, lo que indica que el valor de
una vivienda cuando todos los coeficientes son cero es -242.9 millones;
este valor no tiene sentido porque el precio de una vivienda no puede
ser negativo. Como el intercepto es un valor dentro del modelo de
regresión matemático, puede tener valores que no tengan sentido en la
vida real, y dado que no debe existir un caso de una vivienda con área,
habitaciones, baños, etc., igual a cero, no es preocupante que el
intercepto tenga un valor negativo.
R2: El valor de R2 del
modelo es 0.7472, lo que significa que el modelo explica el 74.72% de la
variabilidad del precio. Este porcentaje es considerablemente alto, pero
no llega al 85% que se considera el valor estándar para un buen modelo
de regresión.
Pruebas de multiconlinealidad
VIF
Variable | VIF | Tolerancia | |
---|---|---|---|
areaconst | areaconst | 2.0872 | 0.4791 |
estrato | estrato | 1.5956 | 0.6267 |
habitaciones | habitaciones | 1.4180 | 0.7052 |
parqueaderos | parqueaderos | 1.9448 | 0.5142 |
banios | banios | 2.6805 | 0.3731 |
Los valores de inflación de varianza (VIF) deben ser mayores a 5 y
los valores de tolerancia deben ser menores a 0.1 probar
multicolinealidad, pero no se encontró.
Gráfica de Distribución:
En la gráfica que muestra la
distribución de viviendas según precio y área, separadas por la cantidad
de habitaciones, se observa que la relación no es lineal. Cuando las
viviendas tienen muy pocas (2) o muchas (5) habitaciones, el precio
disminuye en relación con tres o cuatro. La línea de 6 habitaciones
tiene ese comportamiento debido a la poca cantidad de registros. Con
esto, se puede afirmar que el coeficiente negativo representa el
comportamiento de las viviendas cuando tienen muy pocas o muchas
habitaciones. Validación de supuestos del modelo
Los
errores son variables aleatorias normales.
statistic | p.value | method |
---|---|---|
0.790554 | 0 | Shapiro-Wilk normality test |
El p-value es menor a 0.05, con este resultado se rechaza la
hipótesis nula (H0: los residuos son normales). Esto indica que los
residuos no siguen una distribución normal y no cumple con el supuesto.
Se podría aplicar una transformación logarítmica a precio (ej.
lm(log(preciom) ~ …) o usar un modelo robusto que no dependa de la
normalidad.
Los errores tienen media cero.
estimate | statistic | p.value | parameter | conf.low | conf.high | method | alternative |
---|---|---|---|---|---|---|---|
0 | 0 | 1 | 2048 | -4.509025 | 4.509025 | One Sample t-test | two.sided |
p-value = 1, con este valor no se puede rechazar H0: La media de los
errores es cero. El valor de la media de los errores es 93.652655e-16,
que es un valor muy cercano a cero, y el intervalo de confianza contiene
el cero (-4.509025 a 4.509025).
Los errores tienen varianza
constante.
df1 | df2 | statistic | p.value | method | alternative |
---|---|---|---|---|---|
1019 | 1018 | 0.8078901 | 0.9996632 | Goldfeld-Quandt test | variance increases from segment 1 to 2 |
Con el p-value obtenido no se puede rechazar H0: La varianza de los
errores es constante, por lo que este supuesto se cumple.
Los
errores son mutuamente independientes.
statistic | p.value | method | alternative |
---|---|---|---|
1.603633 | 0 | Durbin-Watson test | true autocorrelation is greater than 0 |
Con el p-value se rechaza la H0: No hay autocorrelación. Con este
resultado se afirma que no se cumple con este supuesto. Esto se puede
dar porque la existencia de algún patrón en los datos que el modelo no
está capturando; como se trata de datos espaciales, se podría incluir
una variable como barrio al modelo para intentar capturar el posible
patrón en los datos.
Predecir el precio de la vivienda 2
Estrato | Prediccion | Límite_Inferior | Límite_Superior |
---|---|---|---|
4 | 712.61 | 686.73 | 738.48 |
5 | 768.38 | 742.18 | 794.58 |
Usando los coeficientes del modelo se hace una predicción para cada
estrato. Para el estrato 5, el modelo predice que la casa puede valer
712.6 millones con un intervalo de confianza al 95% desde 686.7 a 738.5
millones. Con estos valores, es posible conseguir una casa que coincida
con los requerimientos. Para el estrato 6, el valor calculado es de
768.4 millones con un intervalo de confianza de 742.2 a 794.6 millones.
En este caso, el modelo indica que conseguir una casa con estas
características en estrato 6 con el cupo asignado es posible.
Se
filtran los valores dentro de la zona sur según los siguientes
parámetros, buscando un rango más amplio de opciones inmobiliarias que
mostrar:
areaconst >= 270 & areaconst <= 330, # Rango de
área cercano a 300
habitaciones >= 4 & habitaciones <= 6,
# Rango de habitaciones cercano a 5
banios >= 2 & banios
<= 4, # Rango de baños cercano a 3
parqueaderos >= 2 &
parqueaderos <= 4, # Rango de parqueaderos cercano a 3
estrato
>= 5 & estrato <= 6 # Rango de estrato amplio
Con estos
parámetros solo se encontraron 2 posibles viviendas que cumplen
cercanamente con los parámetros. La segunda opción cumple con los
parámetros indicados, pero supera el valor máximo del crédito en 10
millones, mientras que la primera opción no cumple con el área por 10 m²
y por una habitación.
id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud | precio_predicho | dentro_presupuesto |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
6175 | Zona Sur | 05 | 5 | 350 | 270 | 3 | 3 | 4 | Apartamento | capri | -76.54100 | 3.39200 | 700.1904 | TRUE |
6932 | Zona Sur | 1 | 5 | 500 | 330 | 2 | 4 | 4 | Apartamento | san fernando | -76.54600 | 3.43500 | 735.6619 | TRUE |
5578 | Zona Norte | 1 | 6 | 950 | 330 | 2 | 4 | 4 | Apartamento | ciudad jardín | -76.53729 | 3.36487 | 791.4369 | TRUE |
4962 | Zona Sur | 1 | 6 | 980 | 274 | 3 | 4 | 4 | Apartamento | ciudad jardin | -76.53400 | 3.36900 | 806.8109 | TRUE |
Con estos parámetros solo se encontraron 4 posibles viviendas que
cumplen cercanamente con los parámetros. Lamentablemente, no hay ningún
apartamento que cumpla con todos los parámetros buscados; la mejor
propuesta es la segunda, que tiene la mayor área, valiendo 350 millones
menos que el presupuesto, pero no cumple con la cantidad de parqueaderos
por 1. Tampoco cumple con la cantidad de habitaciones necesarias, pero
ningún apartamento seleccionado cumple con ese requisito. Resumen de
los precios reales vs. predicción del modelo
Valor.Real | Valor.predicción | X..Var |
---|---|---|
350 | 542.7 | 35.5 |
500 | 581.7 | 14.0 |
980 | 660.5 | -48.4 |
950 | 664.0 | -43.1 |
La diferencia entre el valor real y el calculado tiene una variabilidad aún más elevada que en el caso de la zona norte. Algo que se nota al ver el mapa es que los apartamentos 3 y 4 están ubicados en la zona de Ciudad Jardín, que es uno de los barrios más exclusivos de la ciudad. Esto es algo que el modelo no puede captar a partir de los datos, porque hay otros barrios en estrato 6 donde el valor del metro cuadrado es mucho menor comparado con el de Ciudad Jardín.