Maria comenzó como agente de bienes raíces en Cali hace 10 años. Después de laborar dos años para una empresa nacional, se traslado a Bogotá y trabajó para otra agencia de bienes raíces. Sus amigos y familiares la convencieron de que con su experiencia y conocimientos del negocio debía abrir su propia agencia. Terminó por adquirir la licencia de intermediario y al poco tiempo fundó su propia compañía, C&A (Casas y Apartamentos) en Cali. Santiago y Lina, dos vendedores de la empresa anterior aceptaron trabajar en la nueva compaña. En la actualidad ocho agentes de bienes raíces colaboran con ella en C&A.
Actualmente las ventas de bienes raíces en Cali se han visto disminuidas de manera significativa en lo corrido del año. Durante este periodo muchas instituciones bancarias de ahorro y vivienda están prestando grandes sumas de dinero para la industria y la construcción comercial y residencial. Cuando el efecto producto de las tensiones políticas y sociales disminuya, se espera que la actividad económica de este sector se reactive.
Hace dos días, María recibió una carta solicitando asesoría para la compra de dos viviendas por parte de una compañía internacional que desea ubicar a dos de sus empleados con sus familias en la ciudad. Las solicitudes incluyen las siguientes condiciones:
| Características | Vivienda.1 | Vivienda.2 |
|---|---|---|
| Tipo | Casa | Apartamento |
| Área construida | 200 | 300 |
| Parqueaderos | 1 | 3 |
| Baños | 2 | 3 |
| Habitaciones | 4 | 5 |
| Estrato | 4 o 5 | 5 o 6 |
| Zona | Norte | Sur |
| Crédito preaprobado | 350 millones | 850 millones |
| Paso | Descripción.de.la.Tarea | Metodología.para.Obtener.los.Datos |
|---|---|---|
| 1 | Filtro de la base de datos para incluir solo casas de la zona norte | Seleccionar registros donde el tipo de vivienda sea ‘Casa’ y la zona sea ‘Norte’. |
| 2 | Análisis exploratorio de datos enfocado en la correlación | Utilizar el paquete plotly en R para crear gráficos interactivos. |
| 3 | Estimación de un modelo de regresión lineal múltiple | Utilizar el paquete stats en R para ajustar un modelo de regresión lineal. |
| 4 | Validación de supuestos del modelo | Aplicar diagnósticos como gráficos de residuos y pruebas de normalidad. |
| 5 | Predicción del precio de la vivienda | Utilizar el modelo estimado para predecir el precio de la vivienda. |
| 6 | Selección de ofertas potenciales | Identificar viviendas que se ajusten al presupuesto. |
| 7 | Repetir pasos del 1 al 6 para la segunda solicitud | Repetir el proceso para la segunda solicitud: Apartamentos en zona sur. |
La base de datos contiene en total 8.322 registros de viviendas, y reúne 13 características de estas, donde se identifican datos geográficos (zona, longitud, latitud, barrio), cantidad de baños, parqueaderos y habitaciones, e información como el piso, estrato, precio y área construida.
En la tabla 3.1 se describen y clasifican las variables, de acuerdo a su naturaleza.
| NombreVariable | Descripcion | TipoVariable | Escala |
|---|---|---|---|
| id | Identificador númerico de la vivienda | Cualitativa | Nominal |
| zona | Punto cardinal donde se ubica la vivienda | Cualitativa | Nominal |
| piso | Piso donde se ubica la vivienda | Cuantitativa | Discreta |
| estrato | Estrato de la vivienda | Cualitativa | Ordinal |
| preciom | Precio de la vivienda | Cuantitativa | Continuo |
| areaconst | Área construida de la vivienda | Cuantitativa | Continuo |
| parqueaderos | Número de parqueaderos en la vivienda | Cuantitativa | Discreta |
| banios | Número de baños e la vivienda | Cuantitativa | Discreta |
| habitaciones | Número de habitaciones en la vivienda | Cuantitativa | Discreta |
| tipo | Tipo de vivienda | Cualitativa | Nominal |
| barrio | Barrio donde se ubica la vivienda | Cualitativa | Nominal |
| longitud | Logitud (coordenada) | Cuantitativa | Continuo |
| latitud | Latitud (coordenada) | Cuantitativa | Continuo |
Dado que el id es unicamente una variable de identificación se ajusta su tipo de datos a “carácter”, el estrato corresponde a una variable ordinal, por tanto se ajusta a “carácter”, mientras que que piso al ser una variable númerica se cambia a tipo “númerico”.
Se revisó la consistencia de la información del conjunto de datos en relación con las variables tipo de vivienda y zona, con el objetivo de realizar posteriormente el filtrado de la base de datos, a partir de esta revisión, se identificó que los registros relevantes corresponden a viviendas clasificadas como “Casa” ubicadas en la Zona Norte, una vez aplicado el filtro, se obtuvo un total de 722 casas de las 8.322 observaciones originales, lo que representa aproximadamente el 8,67 % del total de la base de datos bajo esta condición.
unique(vivienda$tipo) # revisión escritura tipo vivienda
unique(vivienda$zona) # revisión escritura zona
vivienda1 <- vivienda %>%
filter(tipo == "Casa" & zona == "Zona Norte") %>%
distinct() %>% #eliminamos registros duplicados
select(-c(piso, barrio)) # excluimos variables que no se utilizaran en el análisis
nrow(vivienda1)
nrow(vivienda1)/nrow(vivienda)Considerando que el contexto del análisis de viviendas es dificil pensar que se venda alguna sin baños ni habitaciones, por ello aquellos registros con valor 0 fueron remplazados como null para darles un tratamiento adecuado.
| Variable | Registros | CantidadNA | PorcentajeNA |
|---|---|---|---|
| parqueaderos | 722 | 287 | 39.75% |
| habitaciones | 722 | 20 | 2.77% |
| banios | 722 | 10 | 1.39% |
| id | 722 | 0 | 0% |
| zona | 722 | 0 | 0% |
| estrato | 722 | 0 | 0% |
| preciom | 722 | 0 | 0% |
| areaconst | 722 | 0 | 0% |
| tipo | 722 | 0 | 0% |
| longitud | 722 | 0 | 0% |
| latitud | 722 | 0 | 0% |
Para los datos de baños y habitaciones se decidió imputar por la mediana dado que esta distribución es asimetrica.
vivienda1 <- vivienda1 %>%
mutate(
banios = ifelse(is.na(banios), median(banios, na.rm = TRUE), banios),
habitaciones = ifelse(is.na(habitaciones), median(habitaciones, na.rm = TRUE), habitaciones)
)No obstante, por la falta de información y contexto no se tratará la variable piso, ni será considerada en el análisis posterior, además dada la necesidad de contar con un conjunto de datos completos y de calidad, se decide hacer omisión de aquellos registros con datos faltantes, resultando así un total de 435 viviendas de 722 filtradas inicialmente.
Inicialmente se presentan los tres primeros registros del conjunto de datos filtrado, con el fin de verificar la correcta estructura de la información y confirmar que las variables se encuentran correctamente registradas.
Adicionalmente, se construyó un mapa geográfico con los puntos correspondientes a las coordenadas (latitud y longitud) de las viviendas seleccionadas, con el objetivo de visualizar su distribución espacial dentro de la ciudad de Cali, allí se observa que no todos los puntos se ubican estrictamente dentro de la zona norte, ya que algunos registros aparecen en otras áreas de la ciudad. Esto puede deberse a varias razones, entre ellas:
# Mostramos los 3 primeros registros
head(vivienda1,3) %>%
kbl(
format = "html",
caption = "Primeras tres casas de la zona norte"
) %>%
kable_classic(
full_width = FALSE,
html_font = "Cambria")| id | zona | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | longitud | latitud | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1209 | Zona Norte | 5 | 320 | 150 | 2 | 4 | 6 | Casa | -76.51341 | 3.47968 |
| 2 | 1592 | Zona Norte | 5 | 780 | 380 | 2 | 3 | 3 | Casa | -76.51674 | 3.48721 |
| 4 | 4460 | Zona Norte | 4 | 625 | 355 | 3 | 5 | 5 | Casa | -76.53179 | 3.40590 |
map1 <- leaflet(data = vivienda1[1:3, c("id","latitud","longitud")]) %>%
addTiles() %>%
addMarkers(
lng = ~longitud,
lat = ~latitud,
popup = ~paste("ID:", id, "<br>Latitud:", latitud, "<br>Longitud:", longitud)
)%>%
addControl(
"<h4>Ubicación de las primeras viviendas</h4>",
position = "topright"
); map1Adicional se se construyó un mapa geográfico con todos los puntos correspondientes a las coordenadas (latitud y longitud) de las viviendas seleccionadas, con el objetivo de visualizar su distribución espacial dentro de la ciudad de Cali, donde se evidencia la persistencia de errores indicados anteriormente.
Con el fin de analizar la relación entre las variables relevantes del mercado inmobiliario, se calculó una matriz de correlación de Pearson utilizando las variables número de parqueaderos, número de baños, número de habitaciones, área construida y precio de la vivienda (en millones).
Los resultados muestran una correlación positiva entre todas las variables analizadas, destacándose especialmente la relación entre el precio de la vivienda y el área construida (0,69), lo que sugiere que viviendas con mayor área tienden a presentar precios más elevados, asimismo, se observa una relación moderada entre el precio y el número de baños (0,53) y entre el precio y el número de parqueaderos (0,41). Estas relaciones indican que las características físicas de la vivienda influyen de manera importante en la determinación del precio dentro del mercado de casas ubicadas en la zona norte.
Cabe resaltar que la correlación entre habitaciones y precio es positiva pero moderada (0,25), esto indica que, en general, las viviendas con mayor número de habitaciones tienden a tener precios más altos; sin embargo, el número de habitaciones no es el factor más determinante del precio.
matrix_cor <- cor(vivienda1[, c("parqueaderos","banios","habitaciones","areaconst","preciom")]
, use = "complete.obs", method = "pearson")
plot_ly(z = matrix_cor, x = colnames(matrix_cor), y = colnames(matrix_cor), type = "heatmap")corrplot(matrix_cor, insig = "p-value", sig.level = 0.05,
method = "shade", shade.col = NA,
tl.col = "black",
addCoef.col = "black", tl.srt = 45,
order = "AOE", type = "lower", diag = FALSE, addshade = "all") El patrón observado en el gráfico de dispersión es consistente con los resultados obtenidos en la matriz de correlación, donde se identificó una correlación positiva relativamente alta (0.69) entre el área construida y el precio de la vivienda, esto confirma que el tamaño de la propiedad es uno de los factores que más influye en la determinación del precio dentro del conjunto de casas ubicadas en la zona norte, en consecuencia, viviendas con mayor área construida tienden a presentar precios más elevados, lo cual es coherente con la lógica del mercado inmobiliario, donde el espacio disponible representa una característica altamente valorada por los compradores.
El diagrama de cajas muestra la distribución del precio de las viviendas según el estrato socioeconómico para las casas ubicadas en la zona norte de la ciudad, en general, se observa una tendencia creciente en los precios a medida que aumenta el estrato, lo cual es consistente con la estructura socioeconómica del mercado inmobiliario:
En términos generales, se observa una tendencia creciente en el precio a medida que aumenta el número de habitaciones, lo cual es consistente con la idea de que viviendas con mayor capacidad habitacional suelen corresponder a propiedades más amplias o con mejores características.
Las viviendas con pocas habitaciones (entre una y tres) presentan precios más bajos y menor dispersión, a partir de cuatro habitaciones, se observa un aumento gradual en el precio promedio y en la variabilidad de los valores, lo que indica que este tipo de viviendas puede presentar una mayor heterogeneidad en términos de tamaño, ubicación o características adicionales,asimismo, se identifican algunos valores atípicos, especialmente en viviendas con un mayor número de habitaciones, cuyos precios alcanzan niveles considerablemente más altos. Estos casos pueden corresponder a propiedades de gran tamaño o viviendas de alto valor dentro del mercado inmobiliario de la zona norte.
En términos generales, se observa una tendencia creciente en el precio a medida que aumenta el número de baños, lo cual es coherente con el hecho de que viviendas con mayores comodidades tienden a tener un mayor valor en el mercado inmobiliario.
Las viviendas con uno o dos baños presentan precios relativamente más bajos y una menor variabilidad. A medida que aumenta el número de baños, el precio promedio y la dispersión de los valores también tienden a incrementarse, lo que sugiere que estas viviendas suelen estar asociadas a propiedades de mayor tamaño o con mejores características, asimismo, se observan algunos valores atípicos con precios considerablemente altos en viviendas con varios baños, lo cual podría corresponder a propiedades de mayor valor o características especiales dentro del mercado inmobiliario de la zona norte.
En términos generales, se observa una tendencia creciente en el precio a medida que aumenta el número de parqueaderos, lo cual sugiere que esta característica representa una comodidad valorada dentro del mercado inmobiliario.
Las viviendas con uno o dos parqueaderos presentan precios relativamente más bajos y una menor dispersión en comparación con aquellas que cuentan con un mayor número de espacios para estacionamiento, a partir de tres o cuatro parqueaderos, se observa un incremento en el precio promedio de las viviendas, así como una mayor variabilidad en los valores, lo que indica que estas propiedades pueden presentar características adicionales como mayor área construida o ubicaciones más exclusivas, en el caso de viviendas con seis o más parqueaderos, los precios tienden a ser considerablemente más altos, lo cual podría estar asociado a propiedades de gran tamaño o viviendas de alto valor, donde la disponibilidad de múltiples espacios de estacionamiento es más común.
El modelo estima el precio esperado de una vivienda en función de sus características y del estrato socioeconómico, de acuerdo con los resultados el coeficiente asociado al área construida (0,68) indica que, manteniendo constantes las demás variables, un incremento de una unidad en el área construida aumenta el precio de la vivienda en aproximadamente 0,68 millones, ésta variable resulta altamente significativa, lo que sugiere que el tamaño de la vivienda es uno de los principales determinantes del precio.
En cuanto al estrato socioeconómico, los coeficientes indican que, en comparación con las viviendas de estrato 3 (categoría base) las viviendas de estrato 4 tienen un precio aproximadamente 78.75 millones mayor, las de estrato 5 presentan un precio 145.69 millones mayor,y las de estrato 6 tienen un precio 277.07 millones superior. Además. las variables parqueaderos (23,83) y baños (20,02) también presentan una relación positiva con el precio, lo que indica que viviendas con mayores comodidades tienden a tener un mayor valor en el mercado, por otro lado, el número de habitaciones no resulta estadísticamente significativo al nivel del 5%, lo que sugiere que su efecto sobre el precio es menor una vez se controlan otras características de la vivienda.
El modelo presenta un R cuadrado de 0,607, lo que indica que aproximadamente el 60.7% de la variabilidad del precio de las viviendas es explicada por las variables incluidas en el modelo, además, el estadístico F es altamente significativo (p-value < 0.001), lo que confirma que el modelo es estadísticamente significativo en conjunto.
\[ \begin{align} \widehat{Precio}_i =\;& 10.39 + 0.68\,Areaconst_i + 78.75\,Estrato4_i \\ &+ 145.69\,Estrato5_i + 277.07\,Estrato6_i \\ &+ 6.58\,Habitaciones_i + 23.83\,Parqueaderos_i + 20.02\,Baños_i \end{align} \]
vivienda1$estrato <- factor(vivienda1$estrato)
modelov1 <- lm(preciom ~ areaconst + estrato + habitaciones + parqueaderos + banios,
data = vivienda1)
summary(modelov1)##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = vivienda1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -786.25 -74.71 -15.75 45.96 988.92
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 10.39195 27.56869 0.377 0.70640
## areaconst 0.67790 0.05313 12.759 < 2e-16 ***
## estrato4 78.75252 24.50144 3.214 0.00141 **
## estrato5 145.69064 22.75085 6.404 4.00e-10 ***
## estrato6 277.07250 37.64073 7.361 9.46e-13 ***
## habitaciones 6.57856 5.86013 1.123 0.26224
## parqueaderos 23.82577 5.88274 4.050 6.08e-05 ***
## banios 20.01931 7.87005 2.544 0.01132 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 154.8 on 427 degrees of freedom
## Multiple R-squared: 0.6074, Adjusted R-squared: 0.6009
## F-statistic: 94.36 on 7 and 427 DF, p-value: < 2.2e-16
El modelo 2 fue obtenido mediante el procedimiento forward stepwise regression, el cual selecciona las variables que mejor explican el comportamiento de la variable dependiente, en este el procedimiento eliminó la variable habitaciones porque no aportaba información estadísticamente significativa para explicar el precio de la vivienda una vez que las demás variables ya estaban en el modelo, como resultado, el modelo final incluye las variables área construida, estrato, número de parqueaderos y número de baños.
El coeficiente del área construida (0,693) indica que, manteniendo constantes las demás variables, un aumento de una unidad en el área construida incrementa el precio estimado de la vivienda en aproximadamente 0.693 millones, además, el número de parqueaderos (23.94) y baños (24.60) presenta una relación positiva y estadísticamente significativa con el precio, indicando que viviendas con más comodidades tienden a tener un mayor valor en el mercado.
El modelo presenta un R cuadrado de 0,606, lo que indica que aproximadamente el 60.6% de la variabilidad del precio de las viviendas es explicada por las variables incluidas en el modelo, y el estadístico F es altamente significativo (p-value < 0.001), lo que confirma que el modelo es estadísticamente significativo en su conjunto.
\[ \begin{align} \widehat{Precio}_i =\;& 25.60 + 0.693\,Areaconst_i + 73.30\,Estrato4_i \\ &+ 138.45\,Estrato5_i + 268.38\,Estrato6_i \\ &+ 23.94\,Parqueaderos_i + 24.60\,Baños_i \end{align} \]
# se define el modelo nulo y= b0
modelo_b0<- lm(preciom ~ 1, data=vivienda1)
# Se aplica el proceso forward stepwise regression
modelov2 <- step(modelo_b0, direction='forward', scope=formula(modelov1), trace=0)
# Visualización de los resultados
summary(modelov2)##
## Call:
## lm(formula = preciom ~ areaconst + estrato + parqueaderos + banios,
## data = vivienda1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -776.43 -76.65 -15.83 49.51 998.38
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 25.59912 24.01828 1.066 0.28711
## areaconst 0.69339 0.05132 13.511 < 2e-16 ***
## estrato4 73.30459 24.02332 3.051 0.00242 **
## estrato5 138.44555 21.82288 6.344 5.70e-10 ***
## estrato6 268.37716 36.84635 7.284 1.57e-12 ***
## parqueaderos 23.94305 5.88360 4.069 5.61e-05 ***
## banios 24.59943 6.73197 3.654 0.00029 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 154.9 on 428 degrees of freedom
## Multiple R-squared: 0.6062, Adjusted R-squared: 0.6007
## F-statistic: 109.8 on 6 and 428 DF, p-value: < 2.2e-16
En este modelo se introduce una transformación logarítmica en la variable dependiente precio (en millones), utilizando el logaritmo del precio en lugar del precio en niveles, esta transformación permite interpretar los coeficientes como cambios porcentuales en el precio de la vivienda y suele mejorar las propiedades estadísticas del modelo.
Los resultados muestran que todas las variables incluidas en el modelo son estadísticamente significativas, incluyendo el número de habitaciones, lo que sugiere que su efecto se vuelve más claro cuando el modelo se estima en términos logarítmicos, el área construida continúa siendo uno de los principales determinantes del precio, mientras que el estrato socioeconómico mantiene un impacto positivo importante sobre el valor de las viviendas, asimismo, el número de parqueaderos y baños también presenta efectos positivos sobre el precio.
En comparación con los modelos anteriores, este modelo presenta un mayor nivel de ajuste R cuadrado de 0,706, lo que indica que explica una mayor proporción de la variabilidad del precio de las viviendas, en consecuencia, el modelo logarítmico parece ofrecer una mejor especificación para analizar la relación entre las características de las viviendas y su precio.
\[ \begin{align} \widehat{\log(Precio)}_i =\;& 5.009 + 0.00114\,Areaconst_i + 0.346\,Estrato4_i \\ &+ 0.478\,Estrato5_i + 0.675\,Estrato6_i \\ &+ 0.0206\,Habitaciones_i + 0.0450\,Parqueaderos_i + 0.0398\,Baños_i \end{align} \]
modelov3 <- lm(log(preciom) ~ areaconst + estrato + habitaciones + parqueaderos + banios,
data = vivienda1)
summary(modelov3)##
## Call:
## lm(formula = log(preciom) ~ areaconst + estrato + habitaciones +
## parqueaderos + banios, data = vivienda1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.14998 -0.16009 -0.00931 0.14473 1.07749
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.009e+00 4.555e-02 109.965 < 2e-16 ***
## areaconst 1.142e-03 8.778e-05 13.007 < 2e-16 ***
## estrato4 3.459e-01 4.048e-02 8.545 2.29e-16 ***
## estrato5 4.783e-01 3.759e-02 12.725 < 2e-16 ***
## estrato6 6.753e-01 6.219e-02 10.858 < 2e-16 ***
## habitaciones 2.064e-02 9.682e-03 2.132 0.03362 *
## parqueaderos 4.499e-02 9.720e-03 4.629 4.88e-06 ***
## banios 3.977e-02 1.300e-02 3.059 0.00236 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2558 on 427 degrees of freedom
## Multiple R-squared: 0.7064, Adjusted R-squared: 0.7016
## F-statistic: 146.8 on 7 and 427 DF, p-value: < 2.2e-16
La tabla presenta una comparación de las principales métricas de ajuste para los tres modelos estimados. Los modelos 1 y 2 presentan valores de R cuadrado muy similares, cercanos a 0,61, lo que indica que ambos explican aproximadamente el 61% de la variabilidad del precio de las viviendas, esto sugiere que la eliminación de la variable habitaciones en el modelo 2, a partir del procedimiento de selección stepwise, no afecta de manera significativa la capacidad explicativa del modelo, asimismo, ambos modelos presentan valores similares en términos de error residual y criterios de información como AIC y BIC, lo que indica que su desempeño estadístico es comparable.
Por otro lado, el modelo 3, que utiliza el logaritmo del precio como variable dependiente, presenta un mayor coeficiente de determinación (0,71), lo que indica que logra explicar una mayor proporción de la variabilidad de la variable dependiente, además, el error residual es considerablemente menor, lo que sugiere un mejor ajuste del modelo a los datos, en términos generales, estos resultados indican que la transformación logarítmica del precio permite mejorar la capacidad explicativa del modelo y capturar de forma más adecuada la relación entre las características de las viviendas y su precio.
En conjunto, la comparación de métricas sugiere que el modelo logarítmico (modelo 3) presenta el mejor desempeño entre los modelos estimados, por lo que resulta una alternativa más adecuada para analizar y predecir el precio de las viviendas a partir de sus características estructurales y socioeconómicas.
g1 <- glance(modelov1)
g2 <- glance(modelov2)
g3 <- glance(modelov3)
tabla_modelos <- rbind(g1, g2, g3)
rownames(tabla_modelos) <- c("Modelo 1", "Modelo 2", "Modelo 3")
tabla_modelos %>%
kbl(
format = "html",
digits = 2,
caption = "Comparación de métricas de los modelos estimados",
row.names = TRUE
) %>%
kable_classic(
full_width = FALSE,
html_font = "Cambria"
) %>%
kable_styling(
bootstrap_options = c("striped","hover","condensed")
)| r.squared | adj.r.squared | sigma | statistic | p.value | df | logLik | AIC | BIC | deviance | df.residual | nobs | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0.61 | 0.6 | 154.83 | 94.36 | 0 | 7 | -2806.63 | 5631.25 | 5667.93 | 10236762.61 | 427 | 435 |
| 2 | 0.61 | 0.6 | 154.88 | 109.81 | 0 | 6 | -2807.27 | 5630.53 | 5663.14 | 10266974.76 | 428 | 435 |
| 3 | 0.71 | 0.7 | 0.26 | 146.77 | 0 | 7 | -20.17 | 58.35 | 95.02 | 27.94 | 427 | 435 |
stargazer(modelov1, modelov2, modelov3,
type = "text",
omit.stat = c("ser","f"),
model.numbers = FALSE,
object.names = TRUE,
star.cutoffs = c(0.05, 0.01, 0.001))##
## ===============================================
## Dependent variable:
## ----------------------------------
## preciom log(preciom)
## modelov1 modelov2 modelov3
## -----------------------------------------------
## areaconst 0.678*** 0.693*** 0.001***
## (0.053) (0.051) (0.0001)
##
## estrato4 78.753** 73.305** 0.346***
## (24.501) (24.023) (0.040)
##
## estrato5 145.691*** 138.446*** 0.478***
## (22.751) (21.823) (0.038)
##
## estrato6 277.073*** 268.377*** 0.675***
## (37.641) (36.846) (0.062)
##
## habitaciones 6.579 0.021*
## (5.860) (0.010)
##
## parqueaderos 23.826*** 23.943*** 0.045***
## (5.883) (5.884) (0.010)
##
## banios 20.019* 24.599*** 0.040**
## (7.870) (6.732) (0.013)
##
## Constant 10.392 25.599 5.009***
## (27.569) (24.018) (0.046)
##
## -----------------------------------------------
## Observations 435 435 435
## R2 0.607 0.606 0.706
## Adjusted R2 0.601 0.601 0.702
## ===============================================
## Note: *p<0.05; **p<0.01; ***p<0.001
Para validar los supuestos del modelo de regresión 3 (el cual fue escogido como mejor para este escenario de casas en zona norte) se analizaron los gráficos de diagnóstico y diferentes pruebas estadísticas:
En el gráfico de residuos vs valores ajustados no se observa un patrón claramente definido, lo que sugiere que la relación entre las variables puede considerarse aproximadamente lineal, sin embargo, el gráfico Scale-Location muestra una ligera tendencia creciente en la dispersión de los residuos, lo que podría indicar la presencia de heterocedasticidad.
En cuanto a la normalidad de los residuos, el gráfico Q-Q muestra que los residuos siguen razonablemente la línea teórica en la parte central, aunque presentan desviaciones en los extremos, esto se confirma con la prueba Shapiro-Wilk, cuyo valor p es menor a 0.05, indicando que los residuos no siguen una distribución normal.
Respecto a la independencia de los errores, las pruebas Durbin-Watson y Breusch-Godfrey sugieren la posible presencia de autocorrelación en los residuos.
Finalmente, la prueba Breusch-Pagan indica la presencia de heterocedasticidad, ya que el valor p es menor a 0.05
Como posibles soluciones, se podría considerar el uso de errores estándar robustos, transformaciones adicionales de las variables o la inclusión de nuevas variables explicativas en el modelo.
##
## Shapiro-Wilk normality test
##
## data: modelov3$residuals
## W = 0.98395, p-value = 9.635e-05
##
## Durbin-Watson test
##
## data: modelov3
## DW = 1.644, p-value = 6.872e-05
## alternative hypothesis: true autocorrelation is greater than 0
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: modelov3
## LM test = 13.77, df = 1, p-value = 0.0002066
##
## studentized Breusch-Pagan test
##
## data: modelov3
## BP = 54.953, df = 7, p-value = 1.524e-09
Para evaluar la capacidad predictiva del modelo, se realizó una división de la base de datos en un conjunto de entrenamiento (70%) y un conjunto de prueba (30%).
El modelo se estimó utilizando únicamente los datos de entrenamiento y posteriormente se realizaron predicciones sobre el conjunto de prueba, dado que el modelo se estimó utilizando el logaritmo del precio, las predicciones obtenidas fueron transformadas nuevamente a la escala original del precio mediante la función exponencial.
A partir de estas predicciones se calculó el Error Cuadrático Medio (RMSE), obteniendo un valor aproximado de 125.3 millones, lo que indica que, en promedio, las predicciones del modelo se desvían del valor real del precio de las viviendas en alrededor de 125 millones, este resultado sugiere que el modelo presenta una capacidad razonable de predicción, considerando la variabilidad presente en los precios de las viviendas.
# Separar datos en entrenamiento (70%) y test (30%)
set.seed(1)
train <- sample(1:nrow(vivienda1), nrow(vivienda1)*0.7)
modelo_train <- lm(
log(preciom) ~ areaconst + estrato + habitaciones + parqueaderos + banios,
data = vivienda1,
subset = train
)
summary(modelo_train)##
## Call:
## lm(formula = log(preciom) ~ areaconst + estrato + habitaciones +
## parqueaderos + banios, data = vivienda1, subset = train)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.10018 -0.16895 -0.00705 0.16642 1.06593
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.9903495 0.0583981 85.454 < 2e-16 ***
## areaconst 0.0011384 0.0001065 10.691 < 2e-16 ***
## estrato4 0.3788897 0.0499980 7.578 4.53e-13 ***
## estrato5 0.5089876 0.0464825 10.950 < 2e-16 ***
## estrato6 0.6994153 0.0753151 9.287 < 2e-16 ***
## habitaciones 0.0137163 0.0121427 1.130 0.259562
## parqueaderos 0.0420655 0.0119201 3.529 0.000484 ***
## banios 0.0511962 0.0164476 3.113 0.002035 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.269 on 296 degrees of freedom
## Multiple R-squared: 0.6944, Adjusted R-squared: 0.6871
## F-statistic: 96.07 on 7 and 296 DF, p-value: < 2.2e-16
# predicción en log
pred_log <- predict(modelo_train, newdata = vivienda1[-train, ])
# volver a escala original
pred <- exp(pred_log)
# calcular MSE
error <- mean((vivienda1$preciom[-train] - pred)^2)
RMSE <- sqrt(error)
RMSE## [1] 125.2993
El gráfico muestra la relación entre los precios reales de las viviendas y los precios predichos por el modelo utilizando el conjunto de datos de prueba, donde la línea diagonal representa la predicción perfecta, es decir, el punto donde el valor predicho coincide exactamente con el valor real.
Se observa que la mayoría de los puntos se concentran alrededor de esta línea, lo que indica que el modelo logra capturar adecuadamente la tendencia general de los precios de las viviendas, sin embargo, también se identifican algunas observaciones más alejadas de la línea, especialmente en viviendas de mayor precio, lo que sugiere que el modelo presenta mayores errores de predicción en valores extremos.
En general, el patrón observado confirma que el modelo presenta una capacidad predictiva razonable, ya que la mayor parte de las predicciones se aproxima a los valores reales, aunque todavía existe cierta variabilidad que podría estar asociada a factores no incluidos en el modelo, como características específicas de ubicación o condiciones particulares de las viviendas.
# valores reales
real <- vivienda1$preciom[-train]
# valores predichos
pred <- exp(pred_log)
plot_ly(
x = real,
y = pred,
type = "scatter",
mode = "markers"
) %>%
layout(
title = "Validación del modelo: Valores reales vs predichos",
xaxis = list(title = "Precio real"),
yaxis = list(title = "Precio predicho")
) %>%
add_trace(
x = real,
y = real,
type = "scatter",
mode = "lines",
name = "Predicción perfecta"
)Utilizando el modelo seleccionado, se realizó la predicción del precio para una vivienda con las características de la primera solicitud, correspondiente a una casa ubicada en la zona norte, con 200 m² de área construida, 4 habitaciones, 2 baños y 1 parqueadero, debido a que el estrato puede ser 4 o 5, se realizaron dos estimaciones considerando ambas posibilidades.
Los resultados indican que el precio estimado de la vivienda sería aproximadamente 327 millones si pertenece al estrato 4 y cerca de 373 millones si pertenece al estrato 5, estos valores se encuentran dentro del rango esperado para viviendas con estas características en la zona analizada. Al comparar estas estimaciones con el crédito preaprobado de 350 millones, se observa que una vivienda de estrato 4 estaría dentro del presupuesto disponible, mientras que una vivienda de estrato 5 podría superar ligeramente el monto del crédito, lo que sugiere que la empresa debería priorizar la búsqueda de viviendas de estrato 4 o negociar condiciones de financiamiento adicionales en caso de optar por estrato 5.
nueva_vivienda <- data.frame(
areaconst = c(200,200),
estrato = factor(c(4,5), levels = levels(vivienda1$estrato)),
habitaciones = c(4,4),
parqueaderos = c(1,1),
banios = c(2,2)
)
casapred <- predict(modelov3, nueva_vivienda)
exp(casapred)## 1 2
## 327.0876 373.3845
Con base en las características de la primera solicitud y el presupuesto disponible, se realizó un filtrado de la base de datos con el fin de identificar viviendas que cumplieran con los requisitos establecidos. Para ello se seleccionaron viviendas con área construida mayor o igual a 200 m², ubicadas en estrato 4, con al menos 4 habitaciones, mínimo 1 parqueadero y 2 baños, además de un precio menor o igual a 350 millones, correspondiente al crédito preaprobado.
Como resultado de este proceso se identificaron 12 viviendas que cumplen con estas condiciones, las cuales representan posibles opciones para la primera solicitud, sin embargo, se realizó un filtro geográfico adicional para las viviendas ubicadas en la zona norte, esto se implementó debido a que, durante el análisis exploratorio previo, se identificaron algunas inconsistencias entre la variable de zona reportada en la base de datos y las coordenadas geográficas de ciertas viviendas, pues en algunos casos, viviendas clasificadas como pertenecientes a la zona norte presentaban coordenadas que correspondían a otras áreas de la ciudad, dejando como resultado un total de 8 viviendas.
En la tabla se presentan las 8 ofertas disponibles, con el fin de ilustrar las alternativas que podrían ajustarse a las características y al presupuesto establecido.
Ofertas1 <- subset(vivienda1
, areaconst>=200 &
estrato==4 &
habitaciones>=4 &
parqueaderos>=1 &
banios>=2 &
preciom <= 350
)
cat("Número de ofertas:",nrow(Ofertas1))## Número de ofertas: 12
norte_cali <- data.frame(
lng = c(-76.55, -76.48, -76.48, -76.55),
lat = c(3.45, 3.45, 3.52, 3.52)
)
Ofertas_norte <- Ofertas1 %>%
dplyr::filter(
latitud >= 3.45 & latitud <= 3.52 &
longitud >= -76.55 & longitud <= -76.48
)
cat("Número de ofertas filtradas:",nrow(Ofertas_norte))## Número de ofertas filtradas: 8
Ofertas_norte%>%
kbl(
format = "html",
caption = "Ofertas de casas de la zona norte"
) %>%
kable_classic(
full_width = FALSE,
html_font = "Cambria")| id | zona | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|
| 4458 | Zona Norte | 4 | 315 | 270.0 | 2 | 4 | 4 | Casa | -76.53176 | 3.48780 |
| 937 | Zona Norte | 4 | 350 | 280.0 | 2 | 3 | 4 | Casa | -76.50603 | 3.46643 |
| 952 | Zona Norte | 4 | 330 | 275.0 | 2 | 3 | 5 | Casa | -76.50647 | 3.47516 |
| 1020 | Zona Norte | 4 | 230 | 250.0 | 2 | 3 | 5 | Casa | -76.50799 | 3.47424 |
| 1108 | Zona Norte | 4 | 330 | 260.0 | 1 | 3 | 4 | Casa | -76.51060 | 3.48108 |
| 1144 | Zona Norte | 4 | 320 | 200.0 | 2 | 4 | 4 | Casa | -76.51156 | 3.48029 |
| 2544 | Zona Norte | 4 | 340 | 264.5 | 2 | 4 | 4 | Casa | -76.52096 | 3.47665 |
| 1822 | Zona Norte | 4 | 340 | 295.0 | 2 | 2 | 4 | Casa | -76.51777 | 3.48060 |
map3 <- leaflet() %>%
addTiles() %>%
# polígono norte
addPolygons(
lng = norte_cali$lng,
lat = norte_cali$lat,
color = "blue",
weight = 2,
fillOpacity = 0.1,
popup = "Zona Norte de Cali"
) %>%
# viviendas
addMarkers(
data = Ofertas_norte,
lng = ~longitud,
lat = ~latitud,
popup = ~paste(
"ID:", id,
"<br>Latitud:", latitud,
"<br>Longitud:", longitud
)
) %>%
setView(lng = -76.52, lat = 3.48, zoom = 13) %>%
addControl(
"<h4>Viviendas ubicadas en el norte de Cali</h4>",
position = "topright"
)
map3Se revisó la consistencia de la información del conjunto de datos en relación con las variables tipo de vivienda y zona, con el objetivo de realizar posteriormente el filtrado de la base de datos, a partir de esta revisión, se identificó que los registros relevantes corresponden a viviendas clasificadas como “Apartamento” ubicadas en la Zona Sur, una vez aplicado el filtro, se obtuvo un total de 2.787 casas de las 8.322 observaciones originales, lo que representa aproximadamente el 33,48 % del total de la base de datos bajo esta condición.
unique(vivienda$tipo) # revisión escritura tipo vivienda
unique(vivienda$zona) # revisión escritura zona
vivienda2 <- vivienda %>%
filter(tipo == "Apartamento" & zona == "Zona Sur") %>%
distinct() %>% #eliminamos registros duplicados
select(-c(piso, barrio)) # excluimos variables que no se utilizaran en el análisis
nrow(vivienda2)
nrow(vivienda2)/nrow(vivienda)Considerando que el contexto del análisis de viviendas es dificil pensar que se venda alguna sin baños ni habitaciones, por ello aquellos registros con valor 0 fueron remplazados como null para darles un tratamiento adecuado.
| Variable | Registros | CantidadNA | PorcentajeNA |
|---|---|---|---|
| parqueaderos | 2787 | 406 | 14.57% |
| habitaciones | 2787 | 8 | 0.29% |
| banios | 2787 | 6 | 0.22% |
| id | 2787 | 0 | 0% |
| zona | 2787 | 0 | 0% |
| estrato | 2787 | 0 | 0% |
| preciom | 2787 | 0 | 0% |
| areaconst | 2787 | 0 | 0% |
| tipo | 2787 | 0 | 0% |
| longitud | 2787 | 0 | 0% |
| latitud | 2787 | 0 | 0% |
Para los datos de baños y habitaciones se decidió imputar por la mediana dado que esta distribución es asimetrica
vivienda2 <- vivienda2 %>%
mutate(
banios = ifelse(is.na(banios), median(banios, na.rm = TRUE), banios),
habitaciones = ifelse(is.na(habitaciones), median(habitaciones, na.rm = TRUE), habitaciones)
)No obstante, por la falta de información y contexto no se tratará la variable piso, ni será considerada en el análisis posterior, además dada la necesidad de contar con un conjunto de datos completos y de calidad, se decide hacer omisión de aquellos registros con datos faltantes, resultando así un total de 2.381 viviendas de 2.787 filtradas inicialmente.
Inicialmente se presentan los tres primeros registros del conjunto de datos filtrado, con el fin de verificar la correcta estructura de la información y confirmar que las variables se encuentran correctamente registradas.
Adicionalmente, se construyó un mapa geográfico con los puntos correspondientes a las coordenadas (latitud y longitud) de las viviendas seleccionadas, con el objetivo de visualizar su distribución espacial dentro de la ciudad de Cali, allí se observa que no todos los puntos se ubican estrictamente dentro de la zona sur, ya que algunos registros aparecen en otras áreas de la ciudad. Esto puede deberse a varias razones, entre ellas:
# Mostramos los 3 primeros registros
head(vivienda2,3) %>%
kbl(
format = "html",
caption = "Primeras tres casas de la zona norte"
) %>%
kable_classic(
full_width = FALSE,
html_font = "Cambria")| id | zona | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|
| 5098 | Zona Sur | 4 | 290 | 96 | 1 | 2 | 3 | Apartamento | -76.53464 | 3.44987 |
| 698 | Zona Sur | 3 | 78 | 40 | 1 | 1 | 2 | Apartamento | -76.50100 | 3.40000 |
| 8199 | Zona Sur | 6 | 875 | 194 | 2 | 5 | 3 | Apartamento | -76.55700 | 3.45900 |
map4 <- leaflet(data = vivienda2[1:3, c("id","latitud","longitud")]) %>%
addTiles() %>%
addMarkers(
lng = ~longitud,
lat = ~latitud,
popup = ~paste("ID:", id, "<br>Latitud:", latitud, "<br>Longitud:", longitud)
)%>%
addControl(
"<h4>Ubicación de las primeras viviendas</h4>",
position = "topright"
); map4Adicional se se construyó un mapa geográfico con todos los puntos correspondientes a las coordenadas (latitud y longitud) de las viviendas seleccionadas, con el objetivo de visualizar su distribución espacial dentro de la ciudad de Cali, donde se evidencia la persistencia de errores indicados anteriormente.
Con el fin de analizar la relación entre las variables relevantes del mercado inmobiliario, se calculó una matriz de correlación de Pearson utilizando las variables número de parqueaderos, número de baños, número de habitaciones, área construida y precio de la vivienda (en millones).
Los resultados muestran una correlación positiva entre todas las variables analizadas, destacándose especialmente la relación entre el precio de la vivienda y el área construida (0,74), lo que sugiere que viviendas con mayor área tienden a presentar precios más elevados, asimismo, se observa una relación moderada alta entre el precio y el número de baños (0,72) y entre el precio y el número de parqueaderos (0,69). Estas relaciones indican que las características físicas de la vivienda influyen de manera importante en la determinación del precio dentro del mercado de apartamentos ubicados en la zona sur.
Cabe resaltar que la correlación entre habitaciones y precio es positiva pero moderada (0,27), esto indica que, en general, las viviendas con mayor número de habitaciones tienden a tener precios más altos; sin embargo, el número de habitaciones no es el factor más determinante del precio.
matrix_cor2 <- cor(vivienda2[, c("parqueaderos","banios","habitaciones","areaconst","preciom")]
, use = "complete.obs", method = "pearson")
plot_ly(z = matrix_cor2, x = colnames(matrix_cor2), y = colnames(matrix_cor2), type = "heatmap")corrplot(matrix_cor2, insig = "p-value", sig.level = 0.05,
method = "shade", shade.col = NA,
tl.col = "black",
addCoef.col = "black", tl.srt = 45,
order = "AOE", type = "lower", diag = FALSE, addshade = "all") El gráfico de dispersión entre el área construida y el precio permite observar una relación positiva entre ambas variables, lo que sugiere que apartamentos con mayor área construida tienden a presentar precios más altos, además, se observa que la mayor concentración de observaciones se encuentra en apartamentos con áreas relativamente pequeñas o medianas, mientras que los apartamentos con áreas más grandes presentan una mayor dispersión en los precios, este comportamiento es consistente con el mercado inmobiliario, donde el tamaño de la propiedad suele ser uno de los principales determinantes del precio.
En general, se observa una tendencia creciente en los precios a medida que aumenta el estrato, lo cual es consistente con el comportamiento esperado del mercado inmobiliario.
Los apartamentos de estrato 3 presentan los precios más bajos y una menor dispersión en comparación con los demás estratos, a medida que se avanza hacia los estratos 4 y 5, se observa un aumento gradual tanto en el precio promedio como en la variabilidad de los valores, lo que sugiere una mayor heterogeneidad en las características de los apartamentos dentro de estos niveles socioeconómicos, por su parte, los apartamentos de estrato 6 presentan los precios más elevados y una mayor dispersión en comparación con los demás estratos, además, se identifican algunos valores atípicos con precios considerablemente altos, lo cual podría corresponder a apartamentos de lujo o propiedades con características particulares que incrementan su valor de mercado.
En conjunto, el gráfico evidencia que el estrato socioeconómico es un factor importante en la determinación del precio de los apartamentos, mostrando una relación positiva entre el nivel de estrato y el valor de las viviendas en la zona sur.
En general, se observa una tendencia creciente en el precio a medida que aumenta el número de habitaciones, lo cual sugiere que apartamentos con mayor capacidad habitacional tienden a tener un mayor valor en el mercado.
Los apartamentos con una o dos habitaciones presentan precios relativamente más bajos y menor variabilidad, a partir de tres habitaciones, se observa un incremento tanto en el precio promedio como en la dispersión de los valores, lo que indica que los apartamentos con mayor número de habitaciones pueden presentar características adicionales como mayor área construida o mejores ubicaciones dentro de la zona sur, además, se identifican algunos valores atípicos, especialmente en apartamentos con tres o más habitaciones, cuyos precios alcanzan niveles considerablemente más altos, éstos casos podrían corresponder a apartamentos de mayor tamaño, ubicaciones privilegiadas o propiedades con características especiales dentro del mercado inmobiliario de la zona sur.
En términos generales, se observa una relación positiva entre el número de baños y el precio de los apartamentos, lo que sugiere que aquellas viviendas con mayor número de baños tienden a presentar precios más altos.
Los apartamentos con uno o dos baños presentan precios relativamente más bajos y menor variabilidad en comparación con aquellos que cuentan con un mayor número de baños, a partir de tres o cuatro baños, se observa un incremento en el precio promedio y en la dispersión de los valores, lo cual puede estar asociado a apartamentos de mayor tamaño o con características adicionales. Por otra parte, se identifican algunos valores atípicos con precios considerablemente elevados, especialmente en apartamentos con mayor número de baños, lo que podría corresponder a propiedades de alto valor o apartamentos con características especiales dentro del mercado inmobiliario de la zona sur.
En general, se observa una tendencia creciente en el precio a medida que aumenta el número de parqueaderos, lo que sugiere que esta característica representa una comodidad valorada dentro del mercado inmobiliario.
Los apartamentos con uno o dos parqueaderos presentan precios relativamente más bajos y una menor dispersión en comparación con aquellos que cuentan con un mayor número de espacios para estacionamiento, a partir de tres o cuatro parqueaderos, se observa un incremento tanto en el precio promedio como en la variabilidad de los valores, lo que podría estar asociado a apartamentos de mayor tamaño o ubicados en proyectos residenciales de mayor nivel, además, se identifican algunos valores atípicos con precios considerablemente elevados, lo que podría corresponder a apartamentos con características especiales o ubicados en zonas de mayor valorización dentro del sector sur de la ciudad.
\[ \begin{align} \widehat{Precio}_i =\;& -25.29 + 1.29\,Areaconst_i + 30.42\,Estrato4_i \\ &+ 50.78\,Estrato5_i + 204.30\,Estrato6_i \\ &- 18.39\,Habitaciones_i + 61.75\,Parqueaderos_i + 42.40\,Baños_i \end{align} \]
El coeficiente asociado al área construida (1.29) indica que, manteniendo constantes las demás variables, un aumento de una unidad en el área construida incrementa el precio del apartamento en aproximadamente 1.29 millones, lo que evidencia que el tamaño del inmueble es uno de los principales determinantes de su valor.
En relación con el estrato socioeconómico, los coeficientes muestran que, en comparación con los apartamentos de estrato 3 (categoría base), los apartamentos de estrato 4 presentan un incremento aproximado de 30.42 millones en el precio, mientras que los de estrato 5 presentan un aumento de aproximadamente 50.78 millones, por su parte, los apartamentos de estrato 6 muestran un incremento considerable de aproximadamente 204.30 millones, lo que refleja la fuerte influencia del nivel socioeconómico en el valor de los inmuebles.
En cuanto a las características físicas, el número de parqueaderos (61.75) y baños (42.40) presenta un efecto positivo sobre el precio del apartamento, indicando que los inmuebles con mayor número de estas comodidades tienden a tener un mayor valor en el mercado. Por otro lado, el número de habitaciones presenta un coeficiente negativo (-18.39), lo que podría indicar que, manteniendo constante el área construida, un mayor número de habitaciones puede implicar espacios más pequeños o configuraciones internas diferentes que reducen ligeramente el precio del inmueble.
En términos de capacidad explicativa, el modelo presenta un coeficiente de determinación de 0,776, lo que indica que aproximadamente el 77.6% de la variabilidad del precio de los apartamentos en la zona sur es explicada por las variables incluidas en el modelo, lo que sugiere un buen nivel de ajuste del modelo a los datos.
vivienda2$estrato <- factor(vivienda2$estrato)
modelov4 <- lm(preciom ~ areaconst + estrato + habitaciones + parqueaderos + banios,
data = vivienda2)
summary(modelov4)##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = vivienda2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1061.56 -39.19 0.14 36.70 897.52
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -25.29343 13.09146 -1.932 0.05347 .
## areaconst 1.28895 0.05116 25.192 < 2e-16 ***
## estrato4 30.42044 9.55508 3.184 0.00147 **
## estrato5 50.77828 9.61932 5.279 1.42e-07 ***
## estrato6 204.29744 11.17361 18.284 < 2e-16 ***
## habitaciones -18.39337 3.84005 -4.790 1.77e-06 ***
## parqueaderos 61.75392 3.80119 16.246 < 2e-16 ***
## banios 42.39940 3.27385 12.951 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 92.51 on 2373 degrees of freedom
## Multiple R-squared: 0.7762, Adjusted R-squared: 0.7755
## F-statistic: 1176 on 7 and 2373 DF, p-value: < 2.2e-16
\[ \begin{align} \widehat{\log(Precio)}_i =\;& 4.486 + 0.00251\,Areaconst_i + 0.2708\,Estrato4_i \\ &+ 0.4480\,Estrato5_i + 0.7794\,Estrato6_i \\ &- 0.0106\,Habitaciones_i + 0.13397\,Parqueaderos_i + 0.11660\,Baños_i \end{align} \] En este modelo la variable dependiente es el logaritmo del precio, por lo que los coeficientes pueden interpretarse aproximadamente como cambios porcentuales en el precio del apartamento ante variaciones en las variables explicativas.
El coeficiente del área construida (0.00251) indica que, manteniendo constantes las demás variables, un incremento de una unidad en el área construida aumenta el precio del apartamento aproximadamente en 0.25%, lo que confirma que el tamaño del inmueble es un factor importante en la determinación de su valor.
En cuanto al estrato socioeconómico, los resultados muestran que, en comparación con los apartamentos de estrato 3, los apartamentos de estrato 4 presentan precios aproximadamente 27% mayores, mientras que los de estrato 5 tienen precios cerca de 44.8% superiores, y los de estrato 6 alcanzan precios aproximadamente 77.9% mayores, esto evidencia la fuerte influencia del nivel socioeconómico en el valor de los apartamentos.
Respecto a las características físicas del inmueble, el número de parqueaderos (0.1339) y baños (0.1166) presenta efectos positivos sobre el precio, indicando que un incremento en estas características aumenta el precio del apartamento aproximadamente en 13.4% y 11.7% respectivamente, por otro lado, el número de habitaciones presenta un coeficiente negativo (-0.0106) y no resulta estadísticamente significativo, lo que sugiere que su efecto sobre el precio es limitado una vez se controlan otras variables como el área construida.
En términos de capacidad explicativa, el modelo presenta un coeficiente de determinación 0,7927, lo que indica que aproximadamente el 79.3% de la variabilidad del logaritmo del precio de los apartamentos en la zona sur es explicada por las variables incluidas en el modelo, lo que sugiere un buen ajuste del modelo a los datos.
modelov5 <- lm(log(preciom) ~ areaconst + estrato + habitaciones + parqueaderos + banios,
data = vivienda2)
summary(modelov5)##
## Call:
## lm(formula = log(preciom) ~ areaconst + estrato + habitaciones +
## parqueaderos + banios, data = vivienda2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.02509 -0.14237 0.00634 0.15024 0.88869
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.486000 0.031475 142.524 <2e-16 ***
## areaconst 0.002510 0.000123 20.406 <2e-16 ***
## estrato4 0.270844 0.022973 11.790 <2e-16 ***
## estrato5 0.447993 0.023127 19.371 <2e-16 ***
## estrato6 0.779382 0.026864 29.012 <2e-16 ***
## habitaciones -0.010565 0.009232 -1.144 0.253
## parqueaderos 0.133971 0.009139 14.659 <2e-16 ***
## banios 0.116601 0.007871 14.814 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2224 on 2373 degrees of freedom
## Multiple R-squared: 0.7927, Adjusted R-squared: 0.7921
## F-statistic: 1296 on 7 and 2373 DF, p-value: < 2.2e-16
\[ \begin{align} \widehat{\log(Precio)}_i =\;& 4.4633 + 0.2720\,Estrato4_i + 0.4494\,Estrato5_i \\ &+ 0.7839\,Estrato6_i + 0.00249\,Areaconst_i \\ &+ 0.11297\,Baños_i + 0.13425\,Parqueaderos_i \end{align} \] En este modelo la variable dependiente es el logaritmo del precio del apartamento, por lo que los coeficientes pueden interpretarse aproximadamente como variaciones porcentuales en el precio ante cambios en las variables explicativas.
El coeficiente asociado al área construida (0.00249) indica que, manteniendo constantes las demás variables, un aumento de una unidad en el área construida incrementa el precio del apartamento aproximadamente en 0.25%.
En relación con el estrato socioeconómico, los resultados muestran que, en comparación con los apartamentos de estrato 3 (categoría base), los apartamentos de estrato 4 presentan precios aproximadamente 27.2% mayores, mientras que los de estrato 5 presentan precios cerca de 44.9% superiores, y los de estrato 6 tienen precios aproximadamente 78.4% mayores, ésto evidencia la fuerte influencia del nivel socioeconómico en el valor de los apartamentos en la zona sur.
Asimismo, el número de baños (0.1129) y parqueaderos (0.1342) presenta efectos positivos sobre el precio, lo que indica que un incremento en estas características aumenta el precio del apartamento aproximadamente en 11.3% y 13.4% respectivamente.
En términos de capacidad explicativa, el modelo presenta un coeficiente de determinación 0,7926, lo que indica que aproximadamente el 79.3% de la variabilidad del logaritmo del precio de los apartamentos es explicada por las variables incluidas en el modelo, evidenciando un buen ajuste del modelo a los datos.
# se define el modelo nulo y= b0
modelo_b1<- lm(log(preciom) ~ 1, data=vivienda2)
# Se aplica el proceso forward stepwise regression
modelov6 <- step(modelo_b1, direction='forward', scope=formula(modelov5), trace=0)
# Visualización de los resultados
summary(modelov6)##
## Call:
## lm(formula = log(preciom) ~ estrato + areaconst + banios + parqueaderos,
## data = vivienda2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.00581 -0.14281 0.00703 0.15339 0.88872
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.4633377 0.0244653 182.44 <2e-16 ***
## estrato4 0.2720247 0.0229512 11.85 <2e-16 ***
## estrato5 0.4493749 0.0230973 19.46 <2e-16 ***
## estrato6 0.7838603 0.0265794 29.49 <2e-16 ***
## areaconst 0.0024897 0.0001217 20.45 <2e-16 ***
## banios 0.1129680 0.0072031 15.68 <2e-16 ***
## parqueaderos 0.1342459 0.0091365 14.69 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2224 on 2374 degrees of freedom
## Multiple R-squared: 0.7926, Adjusted R-squared: 0.7921
## F-statistic: 1512 on 6 and 2374 DF, p-value: < 2.2e-16
La tabla presenta una comparación de las principales métricas de ajuste para los modelos estimados en el caso de apartamentos ubicados en la zona sur.
Adicionalmente, al comparar los criterios de información AIC y BIC, se observa que el modelo 6 presenta los valores más bajos, lo que indica un mejor balance entre capacidad explicativa y simplicidad del modelo. Este modelo, obtenido mediante el procedimiento forward stepwise, elimina la variable habitaciones sin afectar significativamente el ajuste del modelo.
En conjunto, estos resultados sugieren que el modelo 6 representa la mejor especificación para explicar el precio de los apartamentos en la zona sur, ya que mantiene un alto poder explicativo utilizando un conjunto más parsimonioso de variables.
g4 <- glance(modelov4)
g5 <- glance(modelov5)
g6 <- glance(modelov6)
tabla_modelos <- rbind(g4, g5, g6)
rownames(tabla_modelos) <- c("Modelo 1", "Modelo 2", "Modelo 3")
tabla_modelos %>%
kbl(
format = "html",
digits = 2,
caption = "Comparación de métricas de los modelos estimados",
row.names = TRUE
) %>%
kable_classic(
full_width = FALSE,
html_font = "Cambria"
) %>%
kable_styling(
bootstrap_options = c("striped","hover","condensed")
)| r.squared | adj.r.squared | sigma | statistic | p.value | df | logLik | AIC | BIC | deviance | df.residual | nobs | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0.78 | 0.78 | 92.51 | 1175.75 | 0 | 7 | -14153.93 | 28325.85 | 28377.83 | 20306640.40 | 2373 | 2381 |
| 2 | 0.79 | 0.79 | 0.22 | 1296.36 | 0 | 7 | 204.73 | -391.45 | -339.47 | 117.38 | 2373 | 2381 |
| 3 | 0.79 | 0.79 | 0.22 | 1512.01 | 0 | 6 | 204.07 | -392.14 | -345.93 | 117.45 | 2374 | 2381 |
stargazer(modelov4, modelov5, modelov6,
type = "text",
omit.stat = c("ser","f"),
model.numbers = FALSE,
object.names = TRUE,
star.cutoffs = c(0.05, 0.01, 0.001))##
## ============================================
## Dependent variable:
## -------------------------------
## preciom log(preciom)
## modelov4 modelov5 modelov6
## --------------------------------------------
## areaconst 1.289*** 0.003*** 0.002***
## (0.051) (0.0001) (0.0001)
##
## estrato4 30.420** 0.271*** 0.272***
## (9.555) (0.023) (0.023)
##
## estrato5 50.778*** 0.448*** 0.449***
## (9.619) (0.023) (0.023)
##
## estrato6 204.297*** 0.779*** 0.784***
## (11.174) (0.027) (0.027)
##
## habitaciones -18.393*** -0.011
## (3.840) (0.009)
##
## parqueaderos 61.754*** 0.134*** 0.134***
## (3.801) (0.009) (0.009)
##
## banios 42.399*** 0.117*** 0.113***
## (3.274) (0.008) (0.007)
##
## Constant -25.293 4.486*** 4.463***
## (13.091) (0.031) (0.024)
##
## --------------------------------------------
## Observations 2,381 2,381 2,381
## R2 0.776 0.793 0.793
## Adjusted R2 0.776 0.792 0.792
## ============================================
## Note: *p<0.05; **p<0.01; ***p<0.001
Para evaluar la validez del modelo estimado se analizaron los gráficos de diagnóstico y varias pruebas estadísticas:
El gráfico de residuos vs valores ajustados muestra que los residuos se distribuyen alrededor de cero sin un patrón claramente definido, lo que sugiere que la relación entre las variables puede considerarse aproximadamente lineal, sin embargo, el gráfico Scale-Location evidencia una ligera tendencia en la dispersión de los residuos, lo que podría indicar la presencia de heterocedasticidad.
En cuanto a la normalidad de los residuos, el gráfico Q-Q muestra desviaciones en los extremos respecto a la línea teórica, esto se confirma con la prueba Shapiro-Wilk, cuyo valor p es menor que 0.05, lo que indica que los residuos no siguen una distribución normal.
Respecto a la independencia de los errores, las pruebas Durbin-Watson y Breusch-Godfrey presentan valores p muy pequeños, sugiriendo la posible presencia de autocorrelación en los residuos.
Finalmente, la prueba Breusch-Pagan indica evidencia de heterocedasticidad, ya que el valor p es menor que 0.05. Aunque el modelo presenta un buen nivel de ajuste, estos resultados sugieren que algunos supuestos del modelo clásico no se cumplen completamente.
Como posibles mejoras, se podría considerar el uso de errores estándar robustos, transformaciones adicionales de variables o la inclusión de nuevas variables explicativas que permitan capturar mejor la variabilidad del precio de los apartamentos.
##
## Shapiro-Wilk normality test
##
## data: modelov6$residuals
## W = 0.97343, p-value < 2.2e-16
##
## Durbin-Watson test
##
## data: modelov6
## DW = 1.5974, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: modelov6
## LM test = 97.181, df = 1, p-value < 2.2e-16
##
## studentized Breusch-Pagan test
##
## data: modelov6
## BP = 657.93, df = 6, p-value < 2.2e-16
Para evaluar la capacidad predictiva del modelo seleccionado para los apartamentos en la zona sur, se dividió la base de datos en un conjunto de entrenamiento (70%) y un conjunto de prueba (30%). El modelo fue estimado utilizando únicamente el conjunto de entrenamiento, considerando como variables explicativas el área construida, el estrato socioeconómico, el número de parqueaderos y el número de baños, mientras que la variable dependiente fue el logaritmo del precio.
Posteriormente, se realizaron predicciones sobre el conjunto de prueba, dado que el modelo fue estimado en términos logarítmicos, las predicciones se transformaron nuevamente a la escala original del precio mediante la función exponencial, a partir de estas predicciones se calculó el Error Cuadrático Medio (RMSE), obteniendo un valor aproximado de 86.55 millones, este resultado indica que, en promedio, las predicciones del modelo difieren del precio real de los apartamentos en aproximadamente 86 millones, lo que sugiere que el modelo presenta una capacidad predictiva adecuada para estimar el precio de los apartamentos en la zona sur.
# Separar datos en entrenamiento (70%) y test (30%)
set.seed(1)
train1 <- sample(1:nrow(vivienda2), nrow(vivienda2)*0.7)
modelo_train1 <- lm(
log(preciom) ~ areaconst + estrato + parqueaderos + banios,
data = vivienda2,
subset = train1
)
summary(modelo_train1)##
## Call:
## lm(formula = log(preciom) ~ areaconst + estrato + parqueaderos +
## banios, data = vivienda2, subset = train1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.89842 -0.14602 0.00376 0.15582 0.89781
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.4763027 0.0299597 149.411 <2e-16 ***
## areaconst 0.0023677 0.0001406 16.843 <2e-16 ***
## estrato4 0.2605855 0.0280049 9.305 <2e-16 ***
## estrato5 0.4393837 0.0281101 15.631 <2e-16 ***
## estrato6 0.7628762 0.0319117 23.906 <2e-16 ***
## parqueaderos 0.1539836 0.0113282 13.593 <2e-16 ***
## banios 0.1074847 0.0085958 12.504 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2208 on 1659 degrees of freedom
## Multiple R-squared: 0.7974, Adjusted R-squared: 0.7967
## F-statistic: 1088 on 6 and 1659 DF, p-value: < 2.2e-16
# predicción en log
pred_log1 <- predict(modelo_train1, newdata = vivienda2[-train1, ])
# volver a escala original
pred1 <- exp(pred_log1)
# calcular MSE
error1 <- mean((vivienda2$preciom[-train1] - pred1)^2)
RMSE1 <- sqrt(error1)
RMSE1## [1] 86.5521
Utilizando el modelo seleccionado para los apartamentos en la zona sur, se realizó la predicción del precio para una vivienda con las características de la segunda solicitud, correspondiente a un apartamento con 300 m² de área construida, 5 habitaciones, 3 baños y 3 parqueaderos, debido a que el estrato puede ser 5 o 6, se realizaron dos estimaciones considerando ambas posibilidades.
Los resultados indican que el precio estimado del apartamento sería aproximadamente 602.6 millones si pertenece al estrato 5 y cerca de 842.0 millones si pertenece al estrato 6, éstos valores se encuentran dentro del rango esperado para apartamentos con estas características en la zona sur de la ciudad.
Al comparar estas estimaciones con el crédito preaprobado de 850 millones, se observa que ambas alternativas se encuentran dentro del presupuesto disponible, aunque el apartamento de estrato 6 se aproxima más al límite del crédito, por lo tanto, el modelo sugiere que la empresa podría considerar opciones tanto en estrato 5 como en estrato 6, dependiendo de las características específicas del inmueble y las condiciones del mercado.
nueva_vivienda2 <- data.frame(
areaconst = c(300,300),
estrato = factor(c(5,6), levels = levels(vivienda2$estrato)),
habitaciones = c(5,5),
parqueaderos = c(3,3),
banios = c(3,3)
)
casapred2 <- predict(modelov6, nueva_vivienda2)
exp(casapred2)## 1 2
## 602.6039 841.9709
Con base en las características de la segunda solicitud y el presupuesto disponible, se realizó un filtrado de la base de datos para identificar apartamentos ubicados en la zona sur que cumplieran con las condiciones establecidas. Para ello se seleccionaron viviendas con área construida mayor o igual a 300 metros cuadrados, estrato 5 o 6, al menos 5 habitaciones, mínimo 3 parqueaderos y 3 baños, además de un precio menor o igual a 850 millones, correspondiente al crédito preaprobado.
Como resultado de este proceso se identificaron dos apartamentos que cumplen con estas condiciones, los cuales representan posibles opciones para la segunda solicitud, los precios de estas ofertas se encuentran dentro del rango estimado por el modelo de predicción, lo que sugiere que son alternativas consistentes con las características y el presupuesto definido para este escenario.
Estos apartamentos podrían ser considerados como ofertas potenciales para la empresa, sujeto a la evaluación de otros factores como ubicación específica, estado del inmueble y condiciones del mercado.
Ofertas2 <- subset(vivienda2,
areaconst >= 300 &
estrato %in% c(5,6) &
habitaciones >= 5 &
parqueaderos >= 3 &
banios >= 3 &
preciom <= 850
)
cat("Número de ofertas:", nrow(Ofertas2))## Número de ofertas: 2
sur_cali <- data.frame(
lng = c(-76.57, -76.48, -76.48, -76.57),
lat = c(3.34, 3.34, 3.45, 3.45)
)
Ofertas_sur <- Ofertas2 %>%
dplyr::filter(
latitud >= 3.34 & latitud <= 3.45 &
longitud >= -76.57 & longitud <= -76.48
)
cat("Número de ofertas filtradas:", nrow(Ofertas_sur))## Número de ofertas filtradas: 2
Ofertas_sur %>%
kbl(
format = "html",
caption = "Ofertas de apartamentos en la zona sur"
) %>%
kable_classic(
full_width = FALSE,
html_font = "Cambria"
)| id | zona | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|
| 7182 | Zona Sur | 5 | 730 | 573 | 3 | 8 | 5 | Apartamento | -76.548 | 3.408 |
| 7512 | Zona Sur | 5 | 670 | 300 | 3 | 5 | 6 | Apartamento | -76.550 | 3.409 |
map5 <- leaflet() %>%
addTiles() %>%
# polígono sur
addPolygons(
lng = sur_cali$lng,
lat = sur_cali$lat,
color = "red",
weight = 2,
fillOpacity = 0.1,
popup = "Zona Sur de Cali"
) %>%
# apartamentos
addMarkers(
data = Ofertas_sur,
lng = ~longitud,
lat = ~latitud,
popup = ~paste(
"ID:", id,
"<br>Latitud:", latitud,
"<br>Longitud:", longitud
)
) %>%
setView(lng = -76.52, lat = 3.40, zoom = 13) %>%
addControl(
"<h4>Apartamentos ubicados en el sur de Cali</h4>",
position = "topright"
)
map5Señores C&A
En respuesta a la solicitud recibida por parte de una compañía internacional interesada en adquirir dos viviendas para la reubicación de sus empleados en la ciudad de Cali, se realizó un análisis del mercado inmobiliario con el fin de identificar alternativas que cumplan con las condiciones establecidas por el cliente. Este estudio se desarrolló utilizando información de ofertas de vivienda disponibles en la ciudad, considerando variables relevantes como el área construida, el estrato socioeconómico, el número de habitaciones, baños y parqueaderos, así como la ubicación de los inmuebles.
El análisis se enfocó en dos segmentos específicos del mercado inmobiliario, el primero corresponde a casas ubicadas en la zona norte de la ciudad, mientras que el segundo se centra en apartamentos ubicados en la zona sur, de acuerdo con las preferencias indicadas en la solicitud, para cada uno de estos segmentos se realizó un proceso de depuración y segmentación de los datos con el objetivo de garantizar que las viviendas analizadas correspondieran efectivamente a las zonas geográficas de interés. Posteriormente, se aplicaron herramientas de análisis estadístico para estimar el comportamiento del precio de las viviendas en función de sus principales características, a partir de estos modelos fue posible generar estimaciones de precio para viviendas con las condiciones solicitadas y, con base en dichas estimaciones y el presupuesto disponible, identificar ofertas potenciales dentro del mercado actual.
Los resultados obtenidos permiten presentar a C&A un conjunto de alternativas de vivienda que cumplen con las características solicitadas por el cliente y que se ajustan a los rangos de precio estimados. Estas opciones constituyen una base de referencia para apoyar el proceso de selección final de las propiedades que podrían ser recomendadas a la compañía internacional interesada en establecer a sus empleados en la ciudad.
La selección de viviendas se realizó considerando las características específicas de cada zona de la ciudad de Cali y las preferencias establecidas en la solicitud del cliente:
Para el primer caso se analizaron casas ubicadas en la zona norte, un sector reconocido por su desarrollo residencial, buena conectividad y disponibilidad de viviendas unifamiliares con mayores áreas construidas, en este segmento se priorizaron inmuebles que cumplieran con las condiciones de viviendas con al menos 200 m² de área construida, mínimo 4 habitaciones, al menos 2 baños y 1 parqueadero, ubicadas en estratos 4 o 5. Adicionalmente, se tuvo en cuenta que el presupuesto disponible para esta vivienda es de hasta 350 millones, correspondiente al crédito preaprobado indicado por el cliente.
Para el segundo caso se evaluaron apartamentos ubicados en la zona sur de la ciudad, un sector que presenta una mayor oferta de proyectos residenciales verticales y donde es común encontrar viviendas con características modernas y acceso a diferentes servicios urbanos, en este caso se aplicaron criterios de filtrado acordes con las condiciones solicitadas por el cliente, tales como con un área construida mínima de 300 m², al menos 5 habitaciones, mínimo 3 baños y 3 parqueaderos, ubicados en estratos 5 o 6. En este escenario, el cliente cuenta con un crédito preaprobado de hasta 850 millones, por lo que únicamente se consideraron ofertas dentro de este rango de precio.
En ambos casos se incorporó un proceso de verificación geográfica de las viviendas mediante sus coordenadas, con el fin de asegurar que las ofertas analizadas correspondieran efectivamente a las zonas definidas, este procedimiento permitió reducir posibles inconsistencias en la clasificación de las viviendas y asegurar que las recomendaciones finales se basaran únicamente en inmuebles localizados dentro de las áreas de interés establecidas por el cliente.
Con el fin de estimar el valor de las viviendas que cumplen con las características solicitadas por el cliente, se utilizaron los modelos de regresión estimados para cada uno de los segmentos analizados,estos modelos permiten predecir el precio de una vivienda a partir de variables relevantes como el área construida, el estrato socioeconómico, el número de baños y el número de parqueaderos, variables que demostraron tener una relación significativa con el comportamiento del precio en el mercado inmobiliario de la ciudad.
Para el primer escenario, correspondiente a una casa ubicada en la zona norte con 200 m² de área construida, 4 habitaciones, 2 baños y 1 parqueadero, se estimó el precio considerando que el inmueble puede pertenecer a estrato 4 o estrato 5, allí los resultados del modelo indican que el precio estimado se ubica aproximadamente entre 327 millones y 373 millones, dependiendo del estrato del inmueble.
En el segundo escenario, enfocado en un apartamento ubicado en la zona sur con 300 m² de área construida, 5 habitaciones, 3 baños y 3 parqueaderos, también se realizaron estimaciones considerando que el inmueble puede pertenecer a estrato 5 o estrato 6, en este caso, el modelo estima un precio aproximado de 603 millones para estrato 5 y 842 millones para estrato 6.
Estos resultados permiten establecer un rango esperado de precios para viviendas con las características solicitadas, lo cual facilita la identificación de ofertas dentro del mercado que se ajusten tanto a las condiciones del cliente como al presupuesto disponible en cada caso.
A partir de las predicciones obtenidas mediante los modelos estimados y del proceso de filtrado de la base de datos, se identificaron las viviendas que mejor se ajustan a las condiciones establecidas por el cliente en cada uno de los escenarios analizados, este proceso consideró simultáneamente las características físicas del inmueble, su ubicación geográfica y el presupuesto disponible, con el objetivo de presentar alternativas viables dentro del mercado actual.
Las tablas presentadas a continuación muestran el conjunto de viviendas que cumplen con los criterios definidos para cada escenario, incluyendo información relevante sobre su ubicación, características físicas y precio, lo cual facilita su evaluación como posibles alternativas para la selección final por parte del cliente.
Ofertas_norte%>%
kbl(
format = "html",
caption = "Ofertas de casas de la zona norte"
) %>%
kable_classic(
full_width = FALSE,
html_font = "Cambria")| id | zona | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|
| 4458 | Zona Norte | 4 | 315 | 270.0 | 2 | 4 | 4 | Casa | -76.53176 | 3.48780 |
| 937 | Zona Norte | 4 | 350 | 280.0 | 2 | 3 | 4 | Casa | -76.50603 | 3.46643 |
| 952 | Zona Norte | 4 | 330 | 275.0 | 2 | 3 | 5 | Casa | -76.50647 | 3.47516 |
| 1020 | Zona Norte | 4 | 230 | 250.0 | 2 | 3 | 5 | Casa | -76.50799 | 3.47424 |
| 1108 | Zona Norte | 4 | 330 | 260.0 | 1 | 3 | 4 | Casa | -76.51060 | 3.48108 |
| 1144 | Zona Norte | 4 | 320 | 200.0 | 2 | 4 | 4 | Casa | -76.51156 | 3.48029 |
| 2544 | Zona Norte | 4 | 340 | 264.5 | 2 | 4 | 4 | Casa | -76.52096 | 3.47665 |
| 1822 | Zona Norte | 4 | 340 | 295.0 | 2 | 2 | 4 | Casa | -76.51777 | 3.48060 |
Ofertas_sur %>%
kbl(
format = "html",
caption = "Ofertas de apartamentos en la zona sur"
) %>%
kable_classic(
full_width = FALSE,
html_font = "Cambria"
)| id | zona | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|
| 7182 | Zona Sur | 5 | 730 | 573 | 3 | 8 | 5 | Apartamento | -76.548 | 3.408 |
| 7512 | Zona Sur | 5 | 670 | 300 | 3 | 5 | 6 | Apartamento | -76.550 | 3.409 |
map_ofertas <- leaflet() %>%
addTiles() %>%
# Casas zona norte (azul)
addCircleMarkers(
data = Ofertas_norte,
lng = ~longitud,
lat = ~latitud,
color = "blue",
radius = 6,
stroke = FALSE,
fillOpacity = 0.8,
popup = ~paste(
"<b>Casa - Zona Norte</b>",
"<br>ID:", id,
"<br>Precio:", preciom,
"<br>Área:", areaconst
)
) %>%
# Apartamentos zona sur (rojo)
addCircleMarkers(
data = Ofertas_sur,
lng = ~longitud,
lat = ~latitud,
color = "red",
radius = 6,
stroke = FALSE,
fillOpacity = 0.8,
popup = ~paste(
"<b>Apartamento - Zona Sur</b>",
"<br>ID:", id,
"<br>Precio:", preciom,
"<br>Área:", areaconst
)
) %>%
addLegend(
position = "bottomright",
colors = c("blue","red"),
labels = c("Casas Zona Norte","Apartamentos Zona Sur"),
title = "Ofertas seleccionadas"
) %>%
setView(lng = -76.52, lat = 3.45, zoom = 12)
map_ofertasA partir del análisis realizado sobre la base de datos de viviendas en la ciudad de Cali, fue posible identificar patrones relevantes en el comportamiento del precio de los inmuebles y su relación con variables como el área construida, el estrato socioeconómico, el número de baños y el número de parqueaderos. Los modelos de regresión estimados permitieron explicar una proporción importante de la variabilidad del precio de las viviendas y generar estimaciones consistentes con las características solicitadas por el cliente.
En el caso de las casas ubicadas en la zona norte, el modelo estimado permitió establecer un rango esperado de precios para viviendas con las características requeridas, como resultado este análisis identificó ocho ofertas potenciales que cumplen con las condiciones definidas y se ajustan al presupuesto máximo de 350 millones, lo cual evidencia que el mercado actual ofrece varias alternativas viables dentro de este segmento.
Para el caso de los apartamentos ubicados en la zona sur, el modelo permitió estimar el precio esperado de viviendas con las características solicitadas, identificando dos ofertas disponibles que cumplen con los requisitos establecidos y se encuentran dentro del presupuesto máximo de 850 millones, estas alternativas representan opciones adecuadas dentro del mercado inmobiliario para atender la segunda solicitud realizada a la empresa C&A.
En general, los resultados obtenidos permiten concluir que es posible identificar viviendas que se ajusten a las condiciones planteadas por el cliente dentro del mercado actual, no obstante, se recomienda complementar este análisis con una evaluación cualitativa de las propiedades seleccionadas, considerando factores adicionales como el estado del inmueble, el entorno urbano, la accesibilidad a servicios y las condiciones específicas de negociación, de esta manera, C&A podrá ofrecer a su cliente una recomendación integral que facilite la selección final de las viviendas más adecuadas para cada uno de los casos analizados.