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 |
Ayude a María a responder la solicitud, mediante técnicas modelación que usted conoce. Ella requiere le envíe un informe ejecutivo donde analice los dos casos y sus recomendaciones (Informe). Como soporte del informe debe anexar las estimaciones, validaciones y comparación de modelos requeridos (Anexos).
El presente informe ofrece un análisis detallado de las relaciones entre distintas variables que influyen en los precios de las viviendas, utilizando el modelo de regresión lineal múltiple. A partir de este análisis, se proporcionan recomendaciones específicas para la compra de sos viviendas concaractaeristicas diferentes, esto con el objetivo de ayudar a María a respoinder a solicitud cumpliendo con los requisitos.
Se realizaro un análisis de regresión lineal múltiple para los dos casos con el fin de determinar las relaciones entre el precio de las viviendas y las variables independientes área de construcción, baños, habitaciones, estrato, parqueaderos. Se identificaron las siguientes conclusiones claves:
El área construida tiene una relación positiva significativa con el precio de las viviendas, lo que indica que a mayor área construida, mayor será el precio de estas.
La cantidad de baños también influye en el precio de las viviendas, mostrando un aumento en el precio a medida que aumenta la cantidad de baños.
El estrato del inmueble tiene un impacto significativo en su precio.
La cantidad de parqueaderos también afecta el precio de las viviendas, con un incremento en el precio a medida que aumenta la cantidad de parqueaderos disponibles.
La cantidad de habitaciones, presenta menos influencia que otras variables.
Basándose en los análisis realizados, se formulan las siguientes recomendaciones para satisfacer los requisitos planteados para dos tipos de vivienda:
Vivienda Tipo Casa (Requisitos: Área Construida: 200, Parqueaderos: 1, Baños: 2, Habitaciones: 4, Estrato: 4 o 5, Zona: Norte, Crédito Preaprobado: 350 millones): Se recomienda a Maria seleccionar la casa con el ID 3352. Este inmueble cumple con los requisitos establecidos, supera las expectativas en varios aspectos y esta dentro del limite del credito con un precio de 335 millones de pesos.
Caracteristicas de la casa:
Área Construida: Con 300 metros cuadrados, esta casa ofrece más espacio del que había solicitado, lo que le brindará una mayor comodidad y flexibilidad en el hogar.
Parqueaderos: Cuenta con tres parqueaderos, dos más de lo que había pedido, lo que proporcionará la conveniencia adicional de espacio para estacionamiento.
Baños: Esta casa tiene cuatro baños completos, dos más de los que requería, lo que garantiza una mayor comodidad y facilita la vida diaria.
Habitaciones: Ofrece cuatro habitaciones, cumpliendo con los requisitos y brindándo el espacio necesario para adaptar las habitaciones según sus necesidades.
Estrato y Ubicación: Se encuentra en el estrato 4 y en el barrio “El Bosque” de la Zona Norte, una ubicación privilegiada que garantiza acceso a servicios de calidad y una excelente comunidad.
Además de cumplir con todos los criterios, esta casa ofrece beneficios adicionales que mejorarán la experiencia de vida diaria. Considero que esta opción es la mejor para María y su familia.
Vivienda Tipo Apartamento (Requisitos: Área Construida: 300, Parqueaderos: 3, Baños: 3, Habitaciones: 5, Estrato: 5 o 6, Zona: Sur, Crédito Preaprobado: 850 millones): Se recomienda a Maria seleccionar el apartamento con el ID 7182. Este apartamento cumple con los requisitos establecidos, supera las expectativas en varios aspectos y esta dentro del limite del credito con un precio de 730 millones de pesos.
Caracteristicas del apartamento:
Área Construida: Con 573 metros cuadrados, esta casa ofrece más espacio del que había solicitado, lo que le brindará una mayor comodidad y flexibilidad en el hogar.
Parqueaderos: Cuenta con tres parqueaderos, lo que proporcionará la conveniencia adicional de espacio para estacionamiento.
Baños: Esta casa tiene ocho baños completos, más de los que requería, lo que garantiza una mayor comodidad y facilita la vida diaria.
Habitaciones: Ofrece cinco habitaciones, cumpliendo con los requisitos y brindándo el espacio necesario para adaptar las habitaciones según sus necesidades.
Estrato y Ubicación: Se encuentra en el estrato 5 y en el barrio “Guadalupe” de la Zona Sur, una ubicación privilegiada que garantiza acceso a servicios de calidad y una excelente comunidad.
Además de cumplir con todos los criterios, esta casa ofrece beneficios adicionales que mejorarán la experiencia de vida diaria. Considero que esta opción es la mejor para María y su familia.
Es fundamental asegurar la precisión y completitud de los datos utilizados en los análisis de regresión lineal múltiple. A pesar de las dificultades encontradas en este análisis debido a datos faltantes, se lograron cumplir los requisitos establecidos, lo que resalta la importancia de la robustez en el proceso de análisis de datos para la toma de decisiones informadas.
Se importa la base de datos utilizada en la presente actividad.
# Convierto la tibble a un tibble estándar
vivienda_standard <- as_tibble(vivienda)
# Analizo el tipo de atributos de la variable vivienda
str(vivienda_standard)## tibble [8,322 × 13] (S3: tbl_df/tbl/data.frame)
## $ id : num [1:8322] 1147 1169 1350 5992 1212 ...
## $ zona : chr [1:8322] "Zona Oriente" "Zona Oriente" "Zona Oriente" "Zona Sur" ...
## $ piso : chr [1:8322] NA NA NA "02" ...
## $ estrato : num [1:8322] 3 3 3 4 5 5 4 5 5 5 ...
## $ preciom : num [1:8322] 250 320 350 400 260 240 220 310 320 780 ...
## $ areaconst : num [1:8322] 70 120 220 280 90 87 52 137 150 380 ...
## $ parqueaderos: num [1:8322] 1 1 2 3 1 1 2 2 2 2 ...
## $ banios : num [1:8322] 3 2 2 5 2 3 2 3 4 3 ...
## $ habitaciones: num [1:8322] 6 3 4 3 3 3 3 4 6 3 ...
## $ tipo : chr [1:8322] "Casa" "Casa" "Casa" "Casa" ...
## $ barrio : chr [1:8322] "20 de julio" "20 de julio" "20 de julio" "3 de julio" ...
## $ longitud : num [1:8322] -76.5 -76.5 -76.5 -76.5 -76.5 ...
## $ latitud : num [1:8322] 3.43 3.43 3.44 3.44 3.46 ...
La base de datos vivienda cuenta con 8322 registros y 13 variables, las cuales estan conformadas de la siguiente forma:
Se presentan las estaísticas descriptivas para cada una de las variables númericas.
## id zona piso estrato
## Min. : 1 Length:8322 Length:8322 Min. :3.000
## 1st Qu.:2080 Class :character Class :character 1st Qu.:4.000
## Median :4160 Mode :character Mode :character Median :5.000
## Mean :4160 Mean :4.634
## 3rd Qu.:6240 3rd Qu.:5.000
## Max. :8319 Max. :6.000
## NA's :3 NA's :3
## preciom areaconst parqueaderos banios
## Min. : 58.0 Min. : 30.0 Min. : 1.000 Min. : 0.000
## 1st Qu.: 220.0 1st Qu.: 80.0 1st Qu.: 1.000 1st Qu.: 2.000
## Median : 330.0 Median : 123.0 Median : 2.000 Median : 3.000
## Mean : 433.9 Mean : 174.9 Mean : 1.835 Mean : 3.111
## 3rd Qu.: 540.0 3rd Qu.: 229.0 3rd Qu.: 2.000 3rd Qu.: 4.000
## Max. :1999.0 Max. :1745.0 Max. :10.000 Max. :10.000
## NA's :2 NA's :3 NA's :1605 NA's :3
## habitaciones tipo barrio longitud
## Min. : 0.000 Length:8322 Length:8322 Min. :-76.59
## 1st Qu.: 3.000 Class :character Class :character 1st Qu.:-76.54
## Median : 3.000 Mode :character Mode :character Median :-76.53
## Mean : 3.605 Mean :-76.53
## 3rd Qu.: 4.000 3rd Qu.:-76.52
## Max. :10.000 Max. :-76.46
## NA's :3 NA's :3
## latitud
## Min. :3.333
## 1st Qu.:3.381
## Median :3.416
## Mean :3.418
## 3rd Qu.:3.452
## Max. :3.498
## NA's :3
A continución se verifica si la base de datos contiene datos faltantes.
# Cuento el número de valores N/A en cada variable de la variable vivienda.
vivienda %>%
summarise_all(list(~ sum(is.na(.))))# Calculo el porcentaje de valores perdidos por columna
missing_percentage <- colMeans(is.na(vivienda)) * 100
# Creo un data frame con la información
missing_data <- data.frame(variable = names(missing_percentage), pct_missing = missing_percentage)
# Creo el gráfico de barras
ggplot(missing_data, aes(x = reorder(variable, -pct_missing), y = pct_missing)) +
geom_bar(stat = "identity", fill = "skyblue", color = "black") +
geom_text(aes(label = sprintf("%.1f%%", pct_missing)), vjust = -0.5) +
labs(title = "Porcentaje de valores perdidos por variable",
x = "Variable",
y = "Porcentaje de valores perdidos") +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
ylim(c(0, 35))Como se puede observar, la variable piso contiene más del 20% de los datos faltantes; sin embargo, y dado que esta variable no se utilizará en esta actividad, se eliminará de la base de datos. Con respecto a la variable parqueaderos, ya que no excede el 20% de datos faltantes, estos se omitirán. Esta decisión se tomó debido a que no se sabe si estos datos están nulos porque las viviendas no tenían parqueadero o porque se les olvidó completar este registro.
#Elimino la variable piso
vivienda2 <- vivienda[, !(names(vivienda) %in% c("piso"))]
# Muestra las primeras 5 filas del nuevo data frame
head(vivienda2, 5)# Omito los datos faltes en las otras variables
viviendaclean=na.omit(vivienda2)
md.pattern(viviendaclean, rotate.names = TRUE)## /\ /\
## { `---' }
## { O O }
## ==> V <== No need for mice. This data set is completely observed.
## \ \|/ /
## `-----'
## id zona estrato preciom areaconst parqueaderos banios habitaciones tipo
## 6717 1 1 1 1 1 1 1 1 1
## 0 0 0 0 0 0 0 0 0
## barrio longitud latitud
## 6717 1 1 1 0
## 0 0 0 0
Como se puede observar en el gráfico ya no hay valores nulos o datos faltantes.
| Características | Vivienda 1 |
|---|---|
| Tipo | Casa |
| Área construida | 200 |
| Parqueaderos | 1 |
| Baños | 2 |
| Habitaciones | 4 |
| Estrato | 4 o 5 |
| Zona | Norte |
| Crédito preaprobado | 350 millones |
Realice un filtro a la base de datos e incluya solo las ofertas de : base1: casas, de la zona norte de la ciudad. Presente los primeros 3 registros de las bases y algunas tablas que comprueben la consulta. (Adicional un mapa con los puntos de las bases. Discutir si todos los puntos se ubican en la zona correspondiente o se presentan valores en otras zonas, por que?).
# Se realiza el filtro de la base de datos donde se incluyen solo las casa de zona norte de la ciudad.
base1 <- viviendaclean[viviendaclean$zona == "Zona Norte" & viviendaclean$tipo == "Casa", ]
# Muestro los primeros 3 registros del nuevo data frame
head(base1, 3)# Se realizan tablas que comprueban la consulta
#Tabla de frecuencia para la columa "zona"
tabla_zona <- table(base1$zona)
print(tabla_zona)##
## Zona Norte
## 435
# Se realizan tablas que comprueban la consulta
#Tabla de frecuencia para la columa "tipo"
tabla_tipo <- table(base1$tipo)
print(tabla_tipo)##
## Casa
## 435
En la zona norte hay 435 casas.
# Filtro solo las bases en Zona Norte para el mapa
bases_zona_norte <- base1[base1$zona == "Zona Norte", ]
# Creo el mapa con leaflet
mapa_bases_leaflet <- leaflet(data = bases_zona_norte) %>%
addTiles() %>% # Añadir capa de teselas (tiles) para el mapa base
addCircleMarkers(
~longitud, ~latitud,
radius = 3, color = "purple",
popup = ~paste(
"Tipo:", tipo, "<br>Zona:", zona,
"<br>Área Construida:", areaconst,
"<br>Parqueaderos:", parqueaderos,
"<br>Baños:", banios,
"<br>Barrio:", barrio,
"<br>Habitaciones:", habitaciones,
"<br>Estrato:", estrato
)
) %>%
setView(lng = mean(bases_zona_norte$longitud), lat = mean(bases_zona_norte$latitud), zoom = 12) # Ajustar la vista del mapa
# Visualizo el mapa
mapa_bases_leafletDespués de una detallada revisión del mapa, se evidencian algunos puntos que no se encuentran ubicados en la zona norte, lo cual sugiere la posibilidad de un error durante el proceso de diligenciamiento de las coordenadas. Se identificaron viviendas que no corresponden a la zona norte, y entre ellas se destacan las siguientes:
Vivienda en el barrio Juanambú:
Esta vivienda está catalogada erróneamente, ya pertenece a la zona sur de la ciudad de Cali. La discrepancia podría atribuirse a un descuido al ingresar las coordenadas o una confusión en la asignación de la zona.
Vivienda en el barrio Acopi:
Se identificó otra vivienda ubicada en el barrio Acopi, que también es parte de la zona sur. Similar al caso anterior, la presencia de esta vivienda en la zona norte podría deberse a una equivocación al registrar las coordenadas geográficas.
Realice un análisis exploratorio de datos enfocado en la correlación entre la variable respuesta (precio de la casa) en función del área construida, estrato, número de baños, número de habitaciones y zona donde se ubica la vivienda. Use gráficos interactivos con el paquete plotly e interprete los resultados.
Se realiza un análisis exploratorio enfocado en la correlación entre la variable respuesta precio en función del área construida, estrato, número de baños, y número de habitaciones. No se tomo la zona donde se ubica la vivienda ya que solo estamos tomando en cuenta la zona norte.
# Selecciono las variables de interés
variables_interes <- base1[, c("preciom", "estrato", "areaconst", "banios", "habitaciones")]
# Calculo la matriz de correlación
matriz_correlacion <- cor(variables_interes)
# Creo una tabla con los coeficientes de correlación
tabla_correlacion <- as.table(matriz_correlacion)
# Muestro la tabla
tabla_correlacion## preciom estrato areaconst banios habitaciones
## preciom 1.00000000 0.52827831 0.68539148 0.50864274 0.36508586
## estrato 0.52827831 1.00000000 0.35352525 0.35125685 0.05819709
## areaconst 0.68539148 0.35352525 1.00000000 0.45747655 0.42068968
## banios 0.50864274 0.35125685 0.45747655 1.00000000 0.59038214
## habitaciones 0.36508586 0.05819709 0.42068968 0.59038214 1.00000000
Los valores de correlación de Pearson van de -1 a 1.
-1: Correlación negativa perfecta. 0: No hay correlación. 1: Correlación positiva perfecta.
Precio: - Correlación positiva moderada con área de construción (0.68). - Correlación positiva débil con habitaciones (0.36). - Correlación positiva moderada con baños (0.50). - Correlación positiva moderada con estrato (0.52).
Existe una correlación positiva moderada entre el precio de la vivienda y las variables: área de construcción (0.68), baños (0.50) y estrato (0.52). Esto significa que, a medida que aumenta el valor de estas variables, también aumenta el precio de la vivienda. La correlación entre el precio de la vivienda y la variable habitaciones es positiva y débil (0.36). Esto indica que existe una relación menos significativa entre ambas variables.
A continuación se usan gráficos interactivos con el paquete plotly y se interpretan los resultados.
# Calculo la matriz de correlación
matriz_correlacion <- cor(variables_interes)
# Grafico la matriz de correlación
corrplot(matriz_correlacion, method="circle", type="full")El área construida es un factor importante que determina el precio de la vivienda, es importante tener en cuenta que este gráfico solo muestra una tendencia general y no puede usarse para predecir el precio de una vivienda individual con precisión.
Gráficos interactivos con el paquete ploty:
# Calculo la matriz de correlación
matriz_correlacion <- cor(variables_interes)
# Creo un gráfico de correlación interactivo con plotly
plot_ly(x = colnames(matriz_correlacion), y = rownames(matriz_correlacion),
z = as.matrix(matriz_correlacion), type = "heatmap",
colorscale = "Viridis", text = round(as.matrix(matriz_correlacion), 2)) %>%
plotly::layout(title = "Matriz de correlación",
xaxis = list(title = "Variables"),
yaxis = list(title = "Variables"),
margin = list(l = 100, r = 100, b = 150, t = 100)) %>%
colorbar(title = "Correlación")A continuación se presenta en el siguiente gráfico la correlación entre las variables precio, area de construcción y número de baños
# Definir los datos
x <- variables_interes$areaconst
y <- variables_interes$preciom
z <- variables_interes$banios
# Crear el gráfico interactivo
plot_ly(x = x, y = y, z = z, type = "scatter3d", mode = "markers",
marker = list(size = 10, color = z, colorscale = "Viridis"),
text = paste("Área Construcción:", x, "<br>",
"Precio:", y, "<br>",
"Baños:", z)) %>%
plotly::layout(scene = list(xaxis = list(title = "Área Construcción"),
yaxis = list(title = "Precio"),
zaxis = list(title = "Baños")),
title = "Relación entre Área Construcción, Precio y Baños",
margin = list(l = 50, r = 50, b = 50, t = 50))# Definir los datos
x <- variables_interes$estrato
y <- variables_interes$preciom
z <- variables_interes$habitaciones
# Crear el gráfico interactivo
plot_ly(x = x, y = y, z = z, type = "scatter3d", mode = "markers",
marker = list(size = 10, color = z, colorscale = "Viridis"),
text = paste("Estrato:", x, "<br>",
"Precio:", y, "<br>",
"Habitaciones:", z)) %>%
plotly::layout(scene = list(xaxis = list(title = "Estrato"),
yaxis = list(title = "Precio"),
zaxis = list(title = "Habitaciones")),
title = "Relación entre Estrato, Precio y Habitaciones",
margin = list(l = 50, r = 50, b = 50, t = 50))El precio de la vivienda está determinado por una combinación de factores, incluyendo el área construida, el número de habitaciones y el estrato socioeconómico. Estos gráficos interactivos pueden ser útiles para explorar la relación entre estas variables y para identificar viviendas que se ajusten a las necesidades y presupuesto de comprador.
Estime un modelo de regresión lineal múltiple con las variables del punto anterior (precio = f(área construida, estrato, número de cuartos, número de parqueaderos, número de baños ) ) e interprete los coeficientes si son estadísticamente significativos. Las interpretaciones deber están contextualizadas y discutir si los resultados son lógicos. Adicionalmente interprete el coeficiente R2 y discuta el ajuste del modelo e implicaciones (que podrían hacer para mejorarlo).
variables_interes3 <- base1[, c("preciom", "estrato", "areaconst", "banios", "habitaciones", "parqueaderos")]
# Estimar el modelo de regresión lineal múltiple
modelo <- lm(preciom ~ areaconst + estrato + habitaciones + parqueaderos + banios, data = variables_interes3)
# Mostrar un resumen del modelo
summary(modelo)##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = variables_interes3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -784.29 -77.56 -16.03 47.67 978.61
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -238.17090 44.40551 -5.364 1.34e-07 ***
## areaconst 0.67673 0.05281 12.814 < 2e-16 ***
## estrato 80.63495 9.82632 8.206 2.70e-15 ***
## habitaciones 7.64511 5.65873 1.351 0.177
## parqueaderos 24.00598 5.86889 4.090 5.14e-05 ***
## banios 18.89938 7.48800 2.524 0.012 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 155.1 on 429 degrees of freedom
## Multiple R-squared: 0.6041, Adjusted R-squared: 0.5995
## F-statistic: 130.9 on 5 and 429 DF, p-value: < 2.2e-16
La fórmula del modelo es la siguiente:
Precio=−238.17090+0.67673(areaconst)+80.63495(estrato)+24.00598(parqueaderos)+18.89938(banios)+7.64511(habitaciones)
-Área construida: Por cada unidad adicional en el área de construcción, el precio de la vivienda aumenta en promedio 0.67673 unidades monetarias.
-Estrato: Por cada unidad adicional en el estrato, el precio de la vivienda aumenta en promedio 80.63495 unidades monetarias.
-Habitaciones: El coeficiente asociado a esta variable no es estadísticamente significativo (p-valor = 0.177), lo que indica que el número de habitaciones no tiene un efecto significativo en el precio de la vivienda en este modelo.
-Parqueaderos: Por cada unidad adicional en el número de parqueaderos, el precio de la vivienda aumenta en promedio 24.00598 unidades monetarias.
-Banios: Por cada unidad adicional en el número de baños, el precio de la vivienda aumenta en promedio 18.89938 unidades monetarias.
El coeficiente de determinación (R-squared) es 0.6041, lo que significa que aproximadamente el 60.41% de la variabilidad en el precio de la vivienda puede ser explicada por las variables incluidas en el modelo.
Sin embargo, aún hay un 39.59% de la variabilidad en el precio de la vivienda que no está explicada por el modelo. Esto indica que podría haber otras variables no incluidas en el modelo que también influyen en el precio de la viviend o que se deben quitar algunas variables que no aportan significancia al modelo.
Realice la validación de supuestos del modelo e interprete los resultados (no es necesario corregir en caso de presentar problemas, solo realizar sugerencias de que se podría hacer).
Representación gráfica de la validación de los supuestos:
##
## Shapiro-Wilk normality test
##
## data: e
## W = 0.85246, p-value < 2.2e-16
El valor del estadístico W (0.85246) es relativamente bajo, lo que sugiere que los datos no siguen una distribución normal y por su parte, el p-valor (< 2.2e-16) es menor que el nivel de significancia habitual (0.05), lo que indica que hay evidencia estadísticamente significativa para rechazar la hipótesis nula.
##
## Durbin-Watson test
##
## data: modelo
## DW = 1.7615, p-value = 0.005472
## alternative hypothesis: true autocorrelation is greater than 0
El p-valor (0.005472) es menor que el nivel de significancia habitual (0.05), lo que indica que hay evidencia estadísticamente significativa para rechazar la hipótesis nula de no autocorrelación.
##
## Goldfeld-Quandt test
##
## data: modelo
## GQ = 2.2522, df1 = 212, df2 = 211, p-value = 2.995e-09
## alternative hypothesis: variance increases from segment 1 to 2
El p-valor extremadamente bajo (2.995e-09) indica que hay evidencia estadísticamente significativa para rechazar la hipótesis nula de homocedasticidad (varianza constante de los errores).La hipótesis alternativa indica que la varianza de los errores aumenta del segmento 1 al segmento 2. Esto sugiere que la varianza de los errores no es constante a lo largo del modelo, sino que aumenta en una de las partes del mismo.
Sugerencias:
Con el modelo identificado debe predecir el precio de la vivienda con las características de la primera solicitud.
Aquí están las características clave que estan buscando en la primera solicitud:
Tipo: Casa que ofrezca comodidad y espacio.
Área Construida: Idealmente 200 metros cuadrados para proporcionar suficiente espacio para vivir cómodamente.
Parqueaderos: Un espacio de estacionamiento para garantizar conveniencia y seguridad para el vehículo.
Baños: Dos baños completos para facilitar la vida diaria y evitar las esperas matutinas.
Habitaciones: Cuatro habitaciones para brindar privacidad y flexibilidad para las necesidades de la familia.
Estrato: En estrato 4 o 5, lo que garantiza acceso a servicios de calidad y una excelente ubicación.
Zona: Ubicado en el norte de la ciudad, una zona conocida por su tranquilidad, seguridad y accesibilidad a servicios y comercios.
Crédito Preaprobado: Con un crédito preaprobado de 350 millones de pesos, podemos asegurar una transacción sin complicaciones y garantizar la adquisición del hogar ideal.
Primera opción: estrato 4
# Definir las características de la primera solicitud
nueva_vivienda <- data.frame(
areaconst = 200,
estrato = 4,
habitaciones = 4,
parqueaderos = 1,
banios = 2
)
# Predecir el precio de la vivienda utilizando el modelo
precio_predicho <- predict(modelo, newdata = nueva_vivienda)
# Mostrar el precio predicho
precio_predicho## 1
## 312.101
Segunda opción: estrato 5
# Definir las características de la segunda solicitud
nueva_vivienda3 <- data.frame(
areaconst = 200,
estrato = 5,
habitaciones = 4,
parqueaderos = 1,
banios = 2
)
# Predecir el precio de la vivienda utilizando el modelo
precio_predicho3 <- predict(modelo, newdata = nueva_vivienda3)
# Mostrar el precio predicho
precio_predicho3## 1
## 392.7359
Con base en las predicciones del modelo de regresión lineal múltiple, podemos observar que el precio de la vivienda para la primera solicitud, con un estrato 4, es de aproximadamente 312.101, mientras que para la segunda solicitud, con un estrato 5, es de aproximadamente 392.736.
Esto sugiere que el modelo estima un precio más alto para la segunda solicitud, que tiene un estrato más alto. Esto concuerda con la intuición de que un estrato más alto está asociado con precios de vivienda más altos, ya que los estratos más altos generalmente implican mejores servicios y ubicaciones más deseables.
En conclusión, la predicción que se ajusta a los requerimeintos de la vivienda es la primera de estrato 4, ya que el precio esta al alcance del comprador y dentro del limite establecido en el credito preaprobado.
Con las predicciones del modelo sugiera potenciales ofertas que responda a la solicitud de la vivienda 1. Tenga encuentra que la empresa tiene crédito pre-aprobado de máximo 350 millones de pesos. Realice un análisis y presente en un mapa al menos 5 ofertas potenciales que debe discutir.
# Definir los criterios de filtrado
areaconst_min <- 200
preciom_max <- 350
habitaciones_min <- 4
estrato_req <- 4
parqueaderos_min <- 1
banios_min <- 2
# Filtrar la base de datos base1 según los criterios definidos
casa1 <- base1[base1$areaconst >= areaconst_min &
base1$preciom <= preciom_max &
base1$habitaciones >= habitaciones_min &
base1$estrato == estrato_req &
base1$parqueaderos >= parqueaderos_min &
base1$banios >= banios_min, ]
# Mostrar solo las primeras 5 filas de la base de datos filtrada
casa1 <- head(casa1, 5)
# Mostrar la base de datos filtrada
casa1A continuación se presentra un mapa con las cinco ofertas potenciales teniendo en cuenta un credito preaprobado de $350 millones.
# Crear el mapa con Leaflet
mapa_casa1_leaflet <- leaflet(data = casa1) %>%
addTiles() %>% # Añadir capa de teselas (tiles) para el mapa base
addAwesomeMarkers( # Utilizar íconos personalizados en lugar de círculos
~longitud, ~latitud,
icon = awesomeIcons(
icon = 'home', # Utilizar un ícono de casa
iconColor = 'purple', # Color del ícono
library = 'glyphicon'
),
popup = ~paste(
"Tipo:", tipo, "<br>Zona:", zona,
"<br>Área Construida:", areaconst,
"<br>Parqueaderos:", parqueaderos,
"<br>Baños:", banios,
"<br>Barrio:", barrio,
"<br>Habitaciones:", habitaciones,
"<br>Estrato:", estrato
)
) %>%
setView(lng = mean(casa1$longitud), lat = mean(casa1$latitud), zoom = 12) # Ajustar la vista del mapa
# Visualizar el mapa
mapa_casa1_leafletDespués de revisar detenidamente las preferencias de María y los detalles de las casas disponibles, se recomienda la casa ubicada en el barrio “El Bosque”, que tiene el número de identificación 3352.
Esta casa supera las expectativas en varios aspectos y esta dentro del limite del credito con un precio de 335 millones de pesos.
Área Construida: Con 300 metros cuadrados, esta casa ofrece más espacio del que había solicitado, lo que le brindará una mayor comodidad y flexibilidad en el hogar.
Parqueaderos: Cuenta con tres parqueaderos, dos más de lo que había pedido, lo que proporcionará la conveniencia adicional de espacio para estacionamiento.
Baños: Esta casa tiene cuatro baños completos, dos más de los que requería, lo que garantiza una mayor comodidad y facilita la vida diaria.
Habitaciones: Ofrece cuatro habitaciones, cumpliendo con los requisitos y brindándo el espacio necesario para adaptar las habitaciones según sus necesidades.
Estrato y Ubicación: Se encuentra en el estrato 4 y en el barrio “El Bosque” de la Zona Norte, una ubicación privilegiada que garantiza acceso a servicios de calidad y una excelente comunidad.
Además de cumplir con todos los criterios, esta casa ofrece beneficios adicionales que mejorarán la experiencia de vida diaria. Considero que esta opción es la mejor para María y su familia.
Realice los pasos del 1 al 6. Para la segunda solicitud que tiene un crédito pre-aprobado por valor de $850 millones.
Se realiza a continuación:
| Características | Vivienda 2 |
|---|---|
| Tipo | Apartamento |
| Área construida | 300 |
| Parqueaderos | 3 |
| Baños | 3 |
| Habitaciones | 5 |
| Estrato | 5 o 6 |
| Zona | Sur |
| Crédito preaprobado | 850 millones |
Realice un filtro a la base de datos e incluya solo las ofertas de : base1: apartamentos, de la zona sur de la ciudad. Presente los primeros 3 registros de las bases y algunas tablas que comprueben la consulta. (Adicional un mapa con los puntos de las bases. Discutir si todos los puntos se ubican en la zona correspondiente o se presentan valores en otras zonas, por que?).
# Se realiza el filtro de la base de datos donde se incluyen solo los apartamentos de la zona sur de la ciudad.
base2 <- viviendaclean[viviendaclean$zona == "Zona Sur" & viviendaclean$tipo == "Apartamento", ]
# Muestro los primeros 3 registros del nuevo data frame
head(base2, 3)# Se realizan tablas que comprueban la consulta
#Tabla de frecuencia para la columa "zona"
tabla_zona <- table(base2$zona)
print(tabla_zona)##
## Zona Sur
## 2381
# Se realizan tablas que comprueban la consulta
#Tabla de frecuencia para la columa "tipo"
tabla_tipo <- table(base2$tipo)
print(tabla_tipo)##
## Apartamento
## 2381
En la zona sur hay 2381 apartamentos.
# Filtro solo las bases en Zona Sur para el mapa
bases_zona_sur <- base2[base2$zona == "Zona Sur", ]
# Creo el mapa con leaflet
mapa_bases_leaflet2 <- leaflet(data = bases_zona_sur) %>%
addTiles() %>% # Añadir capa de teselas (tiles) para el mapa base
addCircleMarkers(
~longitud, ~latitud,
radius = 3, color = "purple",
popup = ~paste(
"Tipo:", tipo, "<br>Zona:", zona,
"<br>Área Construida:", areaconst,
"<br>Parqueaderos:", parqueaderos,
"<br>Baños:", banios,
"<br>Barrio:", barrio,
"<br>Habitaciones:", habitaciones,
"<br>Estrato:", estrato
)
) %>%
setView(lng = mean(bases_zona_sur$longitud), lat = mean(bases_zona_sur$latitud), zoom = 12) # Ajustar la vista del mapa
# Visualizo el mapa
mapa_bases_leaflet2Después de una detallada revisión del mapa, se evidencian algunos puntos que no se encuentran ubicados en la zona sur, lo cual sugiere la posibilidad de un error durante el proceso de diligenciamiento de las coordenadas. Se identificaron viviendas que no corresponden a la zona sur, y entre ellas se destaca la siguientes:
Vivienda en el barrio Aguacatal:
Esta vivienda está catalogada erróneamente, ya pertenece a la zona noroccidental de la ciudad de Cali. La discrepancia podría atribuirse a un descuido al ingresar las coordenadas o una confusión en la asignación de la zona.
Realice un análisis exploratorio de datos enfocado en la correlación entre la variable respuesta (precio de la casa) en función del área construida, estrato, número de baños, número de habitaciones y zona donde se ubica la vivienda. Use gráficos interactivos con el paquete plotly e interprete los resultados.
Se realiza un análisis exploratorio enfocado en la correlación entre la variable respuesta precio en función del área construida, estrato, número de baños, y número de habitaciones. No se tomo la zona donde se ubica la vivienda ya que solo estamos tomando en cuenta la zona norte.
# Selecciono las variables de interés
variables_interes2 <- base2[, c("preciom", "estrato", "areaconst", "banios", "habitaciones")]
# Calculo la matriz de correlación
matriz_correlacion2 <- cor(variables_interes2)
# Creo una tabla con los coeficientes de correlación
tabla_correlacion2 <- as.table(matriz_correlacion2)
# Muestro la tabla
tabla_correlacion2## preciom estrato areaconst banios habitaciones
## preciom 1.0000000 0.6497479 0.7407150 0.7111289 0.2957800
## estrato 0.6497479 1.0000000 0.4518617 0.5348003 0.1768269
## areaconst 0.7407150 0.4518617 1.0000000 0.6639216 0.4073401
## banios 0.7111289 0.5348003 0.6639216 1.0000000 0.5204718
## habitaciones 0.2957800 0.1768269 0.4073401 0.5204718 1.0000000
Los valores de correlación de Pearson van de -1 a 1.
-1: Correlación negativa perfecta. 0: No hay correlación. 1: Correlación positiva perfecta.
Precio:
Correlación positiva moderada con área de construción (0.74).
Correlación positiva débil con habitaciones (0.29).
Correlación positiva moderada con baños (0.71).
Correlación positiva moderada con estrato (0.64).
Existe una correlación positiva moderada entre el precio de la vivienda y las variables: área de construcción (0.74), baños (0.71) y estrato (0.64). Esto significa que, a medida que aumenta el valor de estas variables, también aumenta el precio de la vivienda. La correlación entre el precio de la vivienda y la variable habitaciones es positiva y débil (0.29). Esto indica que existe una relación menos significativa entre ambas variables.
A continuación se usan gráficos interactivos con el paquete plotly y se interpretan los resultados.
# Calculo la matriz de correlación
matriz_correlacion2 <- cor(variables_interes2)
# Grafico la matriz de correlación
corrplot(matriz_correlacion2, method="circle", type="full")El área construida es un factor importante que determina el precio de la vivienda, es importante tener en cuenta que este gráfico solo muestra una tendencia general y no puede usarse para predecir el precio de una vivienda individual con precisión.
Gráficos interactivos con el paquete ploty:
# Calculo la matriz de correlación
matriz_correlacion2 <- cor(variables_interes2)
# Creo un gráfico de correlación interactivo con plotly
plot_ly(x = colnames(matriz_correlacion2), y = rownames(matriz_correlacion2),
z = as.matrix(matriz_correlacion2), type = "heatmap",
colorscale = "Viridis", text = round(as.matrix(matriz_correlacion2), 2)) %>%
plotly::layout(title = "Matriz de correlación",
xaxis = list(title = "Variables"),
yaxis = list(title = "Variables"),
margin = list(l = 100, r = 100, b = 150, t = 100)) %>%
colorbar(title = "Correlación")A continuación se presenta en el siguiente gráfico la correlación entre las variables precio, area de construcción y número de baños
# Definir los datos
x <- variables_interes2$areaconst
y <- variables_interes2$preciom
z <- variables_interes2$banios
# Crear el gráfico interactivo
plot_ly(x = x, y = y, z = z, type = "scatter3d", mode = "markers",
marker = list(size = 10, color = z, colorscale = "Viridis"),
text = paste("Área Construcción:", x, "<br>",
"Precio:", y, "<br>",
"Baños:", z)) %>%
plotly::layout(scene = list(xaxis = list(title = "Área Construcción"),
yaxis = list(title = "Precio"),
zaxis = list(title = "Baños")),
title = "Relación entre Área Construcción, Precio y Baños",
margin = list(l = 50, r = 50, b = 50, t = 50))# Definir los datos
x <- variables_interes2$estrato
y <- variables_interes2$preciom
z <- variables_interes2$habitaciones
# Crear el gráfico interactivo
plot_ly(x = x, y = y, z = z, type = "scatter3d", mode = "markers",
marker = list(size = 10, color = z, colorscale = "Viridis"),
text = paste("Estrato:", x, "<br>",
"Precio:", y, "<br>",
"Habitaciones:", z)) %>%
plotly::layout(scene = list(xaxis = list(title = "Estrato"),
yaxis = list(title = "Precio"),
zaxis = list(title = "Habitaciones")),
title = "Relación entre Estrato, Precio y Habitaciones",
margin = list(l = 50, r = 50, b = 50, t = 50))El precio de la vivienda está determinado por una combinación de factores, incluyendo el área construida, el número de habitaciones y el estrato socioeconómico. Estos gráficos interactivos pueden ser útiles para explorar la relación entre estas variables y para identificar viviendas que se ajusten a las necesidades y presupuesto de comprador.
Estime un modelo de regresión lineal múltiple con las variables del punto anterior (precio = f(área construida, estrato, número de cuartos, número de parqueaderos, número de baños ) ) e interprete los coeficientes si son estadísticamente significativos. Las interpretaciones deber están contextualizadas y discutir si los resultados son lógicos. Adicionalmente interprete el coeficiente R2 y discuta el ajuste del modelo e implicaciones (que podrían hacer para mejorarlo).
variables_interes4 <- base2[, c("preciom", "estrato", "areaconst", "banios", "habitaciones", "parqueaderos")]
# Estimar el modelo de regresión lineal múltiple
modelo4 <- lm(preciom ~ areaconst + estrato + habitaciones + parqueaderos + banios, data = variables_interes4)
# Mostrar un resumen del modelo
summary(modelo4)##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = variables_interes4)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1092.02 -42.28 -1.33 40.58 926.56
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -261.62501 15.63220 -16.736 < 2e-16 ***
## areaconst 1.28505 0.05403 23.785 < 2e-16 ***
## estrato 60.89709 3.08408 19.746 < 2e-16 ***
## habitaciones -24.83693 3.89229 -6.381 2.11e-10 ***
## parqueaderos 72.91468 3.95797 18.422 < 2e-16 ***
## banios 50.69675 3.39637 14.927 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 98.02 on 2375 degrees of freedom
## Multiple R-squared: 0.7485, Adjusted R-squared: 0.748
## F-statistic: 1414 on 5 and 2375 DF, p-value: < 2.2e-16
La fórmula del modelo es la siguiente:
Precio=−261.62501+1.28505(areaconst)+60.89709(estrato)+72.91468(parqueaderos)+50.69675(banios)+-24.83693(habitaciones)
-Área construida: Por cada unidad adicional en el área de construcción, el precio de la vivienda aumenta en promedio 1.28505 unidades monetarias.
-Estrato: Por cada unidad adicional en el estrato, el precio de la vivienda aumenta en promedio 60.89709 unidades monetarias.
-Habitaciones: El coeficiente asociado a esta variable no es estadísticamente significativo (p-valor = 2.11e-10), lo que indica que el número de habitaciones no tiene un efecto significativo en el precio de la vivienda en este modelo.
-Parqueaderos: Por cada unidad adicional en el número de parqueaderos, el precio de la vivienda aumenta en promedio 72.91468 unidades monetarias.
-Banios: Por cada unidad adicional en el número de baños, el precio de la vivienda aumenta en promedio 50.69675 unidades monetarias.
El coeficiente de determinación (R-squared) es 0.7485, lo que significa que aproximadamente el 74.85% de la variabilidad en el precio de la vivienda puede ser explicada por las variables incluidas en el modelo.
Sin embargo, aún hay un 25.15% de la variabilidad en el precio de la vivienda que no está explicada por el modelo. Esto indica que podría haber otras variables no incluidas en el modelo que también influyen en el precio de la vivienda o que se deben quitar algunas variables que no aportan significancia al modelo.
Realice la validación de supuestos del modelo e interprete los resultados (no es necesario corregir en caso de presentar problemas, solo realizar sugerencias de que se podría hacer).
Representación gráfica de la validación de los supuestos:
##
## Shapiro-Wilk normality test
##
## data: e
## W = 0.79118, p-value < 2.2e-16
El valor del estadístico W (0.79118) es relativamente bajo, lo que sugiere que los datos no siguen una distribución normal y por su parte, el p-valor (< 2.2e-16) es menor que el nivel de significancia habitual (0.05), lo que indica que hay evidencia estadísticamente significativa para rechazar la hipótesis nula.
##
## Durbin-Watson test
##
## data: modelo4
## DW = 1.5333, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
El p-valor (< 2.2e-16) es menor que el nivel de significancia habitual (0.05), lo que indica que hay evidencia estadísticamente significativa para rechazar la hipótesis nula de no autocorrelación.
##
## Goldfeld-Quandt test
##
## data: modelo4
## GQ = 0.9513, df1 = 1185, df2 = 1184, p-value = 0.8048
## alternative hypothesis: variance increases from segment 1 to 2
El p-valor es relativamente alto (0.8048) indica que hay evidencia estadísticamente significativa para aceptar la hipótesis nula de homocedasticidad (varianza constante de los errores). La hipótesis alternativa especificada es que la varianza de los errores aumenta del segmento 1 al segmento 2. Sin embargo, el alto p-valor sugiere que no hay suficiente evidencia para apoyar esta hipótesis.
Sugerencias:
Con el modelo identificado debe predecir el precio de la vivienda con las características de la segunda solicitud.
Aquí están las características clave que estan buscando en la segunda solicitud:
Tipo: Apartamento que ofrezca comodidad y espacio.
Área Construida: Idealmente 300 metros cuadrados para proporcionar suficiente espacio para vivir cómodamente.
Parqueaderos: Tres espacios de estacionamiento para garantizar conveniencia y seguridad para el vehículo.
Baños: Tres baños completos para facilitar la vida diaria y evitar las esperas matutinas.
Habitaciones: Cinco habitaciones para brindar privacidad y flexibilidad para las necesidades de la familia.
Estrato: En estrato 5 o 6, lo que garantiza acceso a servicios de calidad y una excelente ubicación.
Zona: Ubicado en el sur de la ciudad, una zona conocida por su tranquilidad, seguridad y accesibilidad a servicios y comercios.
Crédito Preaprobado: Con un crédito preaprobado de 850 millones de pesos, podemos asegurar una transacción sin complicaciones y garantizar la adquisición del hogar ideal.
Primera opción: estrato 5
# Definir las características de la primera solicitud
nueva_vivienda2 <- data.frame(
areaconst = 300,
estrato = 5,
habitaciones = 5,
parqueaderos = 3,
banios = 3
)
# Predecir el precio de la vivienda utilizando el modelo
precio_predicho2 <- predict(modelo4, newdata = nueva_vivienda2)
# Mostrar el precio predicho
precio_predicho2## 1
## 675.0247
Segunda opción: estrato 6
# Definir las características de la primera solicitud
nueva_vivienda4 <- data.frame(
areaconst = 300,
estrato = 6,
habitaciones = 5,
parqueaderos = 3,
banios = 3
)
# Predecir el precio de la vivienda utilizando el modelo
precio_predicho4 <- predict(modelo4, newdata = nueva_vivienda4)
# Mostrar el precio predicho
precio_predicho4## 1
## 735.9218
Con base en las predicciones del modelo de regresión lineal múltiple, podemos observar que el precio de la vivienda para la primera solicitud, con un estrato 5, es de aproximadamente 675.024, mientras que para la segunda solicitud, con un estrato 6, es de aproximadamente 735.921.
Esto sugiere que el modelo estima un precio más alto para la segunda solicitud, que tiene un estrato más alto. Esto concuerda con la intuición de que un estrato más alto está asociado con precios de vivienda más altos, ya que los estratos más altos generalmente implican mejores servicios y ubicaciones más deseables.
En conclusión, las dos predicciones se ajustan a los requerimeintos de la vivienda, ya que el precio esta al alcance del comprador y dentro del limite establecido en el credito preaprobado.
Con las predicciones del modelo sugiera potenciales ofertas que responda a la solicitud de la vivienda 1. Tenga encuentra que la empresa tiene crédito pre-aprobado de máximo 350 millones de pesos. Realice un análisis y presente en un mapa al menos 5 ofertas potenciales que debe discutir.
# Definir los criterios de filtrado
filtros <- list(
"areaconst" = 300,
"preciom" = 850,
"habitaciones" = 5,
"estrato" = 5,
"parqueaderos" = 3,
"banios" = 3
)
# Filtrar la base de datos base2 según los criterios definidos
base_apartamento1 <- subset(base2, areaconst >= filtros[["areaconst"]] &
preciom <= filtros[["preciom"]] &
habitaciones >= filtros[["habitaciones"]] &
estrato >= filtros[["estrato"]] &
parqueaderos >= filtros[["parqueaderos"]] &
banios >= filtros[["banios"]])
# Mostrar solo las primeras 5 filas de la base de datos filtrada
base_apartamento1 <- head(base_apartamento1, 5)
# Mostrar la base de datos filtrada
base_apartamento1Se escogio la vivienda de estrat 5 ya que de estrato 6 no habian opciones, posteriormente se presentra un mapa con las unicas dos ofertas potenciales teniendo en cuenta un credito preaprobado de $850 millones.
# Crear el mapa con Leaflet
mapa_apartamento1_leaflet <- leaflet(data = base_apartamento1) %>%
addTiles() %>% # Añadir capa de teselas (tiles) para el mapa base
addAwesomeMarkers( # Utilizar íconos personalizados en lugar de círculos
~longitud, ~latitud,
icon = awesomeIcons(
icon = 'home', # Utilizar un ícono de casa
iconColor = 'purple', # Color del ícono
library = 'glyphicon'
),
popup = ~paste(
"Tipo:", tipo, "<br>Zona:", zona,
"<br>Área Construida:", areaconst,
"<br>Parqueaderos:", parqueaderos,
"<br>Baños:", banios,
"<br>Barrio:", barrio,
"<br>Habitaciones:", habitaciones,
"<br>Estrato:", estrato
)
) %>%
setView(lng = mean(base_apartamento1$longitud), lat = mean(base_apartamento1$latitud), zoom = 12) # Ajustar la vista del mapa
# Visualizar el mapa
mapa_apartamento1_leafletDespués de revisar detenidamente las preferencias de María y los detalles de las casas disponibles, se recomienda la casa ubicada en el barrio “Guadalupe”, que tiene el número de identificación 7182.
Este apartamento supera las expectativas en varios aspectos y esta dentro del limite del credito con un precio de 730 millones de pesos.
Área Construida: Con 573 metros cuadrados, esta casa ofrece más espacio del que había solicitado, lo que le brindará una mayor comodidad y flexibilidad en el hogar.
Parqueaderos: Cuenta con tres parqueaderos, lo que proporcionará la conveniencia adicional de espacio para estacionamiento.
Baños: Esta casa tiene ocho baños completos, más de los que requería, lo que garantiza una mayor comodidad y facilita la vida diaria.
Habitaciones: Ofrece cinco habitaciones, cumpliendo con los requisitos y brindándo el espacio necesario para adaptar las habitaciones según sus necesidades.
Estrato y Ubicación: Se encuentra en el estrato 5 y en el barrio “Guadalupe” de la Zona Sur, una ubicación privilegiada que garantiza acceso a servicios de calidad y una excelente comunidad.
Además de cumplir con todos los criterios, esta casa ofrece beneficios adicionales que mejorarán la experiencia de vida diaria. Considero que esta opción es la mejor para María y su familia.