Actividad 2 Caso CyA
Introducción
El presente informe tiene como finalidad analizar las solicitudes de vivienda presentadas por una compañía internacional para ubicar a dos de sus empleados en la ciudad de Cali. Se han evaluado dos opciones de vivienda, una casa y un apartamento, considerando las características y condiciones especificadas en la solicitud:
Vivienda 1:
- Tipo: Casa
- Área construida: 200 m2
- Parqueaderos: 1
- Baños: 2
- Habitaciones: 4
- Estrato: 4 o 5
- Zona: Norte
- Crédito preaprobado: 350 millones
Vivienda 2:
- Tipo: Apartamento
- Área construida: 300 m2
- Parqueaderos: 3
- Baños: 3
- Habitaciones: 5
- Estrato: 5 o 6
- Zona: Sur
- Crédito preaprobado: 850 millones
El mercado inmobiliario actual en Cali presenta oportunidades interesantes para los compradores, especialmente para aquellos que cuentan con crédito preaprobado. En este contexto, se han evaluado opciones de vivienda que cumplen con las características y condiciones especificadas en la solicitud. Se realiza un análisis comparativo de las propiedades, destacando sus ventajas y desventajas en función de las necesidades y preferencias de los solicitantes.
Potenciales ofertas de casas en zona norte
La Zona Norte de Cali es una zona diversa con una mezcla de estratos socioeconómicos, que cuenta con una buena infraestructura vial y opciones de transporte. Además, la zona ha experimentado un crecimiento y desarrollo constante, lo que ha impulsado la valorización de las propiedades.
En el siguiente mapa se muestran 5 ofertas potenciales de casas en la zona norte de Cali que se ajustan a un presupuesto máximo de 350 millones de pesos colombianos. Las ofertas fueron seleccionadas del dataset de viviendas y cumplen con las características solicitadas:
# Filtrar las casas de la zona norte
casas_norte <- vivienda1 %>%
filter(zona == "Zona Norte", tipo == "Casa")
# Definimos una paleta de colores personalizada
pal <- colorNumeric(
palette = brewer.pal(9, "YlOrRd"), # Usamos una paleta de colores cálidos
domain = casas_norte$preciom # El dominio de la paleta es el precio
)
# Filtramos las casas con latitud superior a 3.4520 y longitud superior a -76.53
casas_norte_filtradas <- casas_norte %>%
filter(latitud > 3.4520,longitud > -76.53)
# Filtrar viviendas con características similares y estrato 4 o 5
ofertas_potenciales <- casas_norte_filtradas %>%
filter(areaconst >= 180 & areaconst <= 220, # Rango de área construida
parqueaderos>= 1,
banios >= 2,
habitaciones == 4,
estrato == 4 | estrato == 5, # Estrato 4 o 5
preciom <= 350) # Dentro del presupuesto
# Seleccionar 5 ofertas potenciales (si hay suficientes)
ofertas_seleccionadas <- head(ofertas_potenciales, 5)
# Mapa con las ofertas potenciales
mapa_ofertas <- leaflet(ofertas_seleccionadas) %>%
addTiles() %>%
addMarkers(lng = ~longitud, lat = ~latitud, popup = ~paste("Precio:", preciom, "<br>Estrato:", estrato, "<br>Area construida:", areaconst,"<br>baños:", banios,"<br>Habitaciones:", habitaciones,"<br>Parqueaderos:", parqueaderos ))
mapa_ofertasrm(mapa_ofertas)
library(kableExtra)
ofertas_seleccionadas %>%
kable("html", align = "c", digits = 2) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive")) %>%
column_spec(1:ncol(ofertas_seleccionadas), border_right = T) %>%
row_spec(0, bold = T, color = "white", background = "#3498DB")| id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1343 | Zona Norte | 02 | 5 | 320 | 200 | 2 | 4 | 4 | Casa | la flora | -76.52 | 3.49 |
| 1506 | Zona Norte | 0 | 5 | 340 | 180 | 2 | 4 | 4 | Casa | la flora | -76.52 | 3.49 |
| 1144 | Zona Norte | 0 | 4 | 320 | 200 | 2 | 4 | 4 | Casa | la merced | -76.51 | 3.48 |
| 1163 | Zona Norte | 0 | 5 | 350 | 216 | 2 | 2 | 4 | Casa | la merced | -76.51 | 3.48 |
| 1887 | Zona Norte | 01 | 5 | 340 | 203 | 2 | 3 | 4 | Casa | vipasa | -76.52 | 3.48 |
Todas las ofertas se encuentran en la Zona Norte de Cali, cumpliendo con el criterio inicial. Los barrios son residenciales y ofrecen diferentes estilos de vida. La Flora y La Merced son barrios tradicionales con buena ubicación, mientras que Vipasa es un barrio más residencial y tranquilo.
Las ofertas varían entre estratos 4 y 5. El estrato 5 generalmente indica una mayor exclusividad y valor de las propiedades.
Los precios oscilan entre 320 y 350 millones de pesos, todos dentro de un rango similar y el presupuesto aprobado.
El área construida varía ligeramente, desde 180 hasta 216 metros cuadrados.
Todas las ofertas tienen 2 parqueaderos.
La mayoría de las ofertas tienen 4 habitaciones y 4 baños, excepto una en La Merced que tiene 2 baños y otra en Vipasa que tiene 3 baños.
La mayoría de las casas son de 1 o 2 pisos, lo cual es típico para viviendas unifamiliares.
Las ofertas presentadas son potenciales y se recomienda verificar la información directamente con los vendedores:
El precio de las viviendas es negociable y puede variar dependiendo de las condiciones de venta.
Se recomienda visitar las viviendas para evaluar su estado y verificar que cumplen con las expectativas del comprador.
Se recomienda considerar otros factores como la ubicación exacta, la antigüedad de la vivienda, el estado de las instalaciones, etc.
Contactar a los vendedores para obtener más información sobre las viviendas y programar visitas.
Negociar el precio de las viviendas para ajustarlo al presupuesto.
Potenciales ofertas de apartamentos en zona sur
La Zona Sur de Cali es conocida por ser una de las áreas más exclusivas y de mayor valorización de la ciudad. Se caracteriza por su ambiente residencial de alto nivel, con una amplia oferta de servicios, centros comerciales, restaurantes y zonas verdes. Además, ofrece una buena calidad de vida, con seguridad y tranquilidad.
El siguiente mapa muestra 5 ofertas potenciales de apartamentos en la zona sur de Cali, que se ajustan a un presupuesto máximo de 850 millones de pesos colombianos. Las ofertas fueron seleccionadas del dataset de viviendas y cumplen con las siguientes características solicitadas:
# Filtrar Apartamentos en la zona sur
aptos_sur <- vivienda1 %>%
filter(zona == "Zona Sur", tipo == "Apartamento")
# Definimos una paleta de colores personalizada
pal2 <- colorNumeric(
palette = brewer.pal(9, "YlOrRd"), # Usamos una paleta de colores cálidos
domain = aptos_sur$preciom # El dominio de la paleta es el precio
)
# Filtramos apartamentos con latitud inferior a 3.4000
aptos_sur_filtrados <- aptos_sur %>%
filter(latitud < 3.405,longitud > -76.545 & longitud < -76.5144)
# Filtrar viviendas con características similares y estrato 4
ofertas_potenciales <- aptos_sur_filtrados %>%
filter(areaconst >= 200 & areaconst <= 320, # Rango de área construida
parqueaderos>= 2,
banios >= 3,
habitaciones >= 4,
estrato == 5 | estrato == 6, # Estrato 4 o 5
preciom >=650 & preciom<= 900) # Dentro del presupuesto
# Seleccionar 5 ofertas potenciales (si hay suficientes)
ofertas_seleccionadas <- head(ofertas_potenciales, 5)
# Mapa con las ofertas potenciales
oferta_apto <-leaflet(ofertas_seleccionadas) %>%
addTiles() %>%
addMarkers(lng = ~longitud, lat = ~latitud, popup = ~paste("Precio:", preciom, "<br>Estrato:", estrato, "<br>Area construida:", areaconst,"<br>baños:", banios,"<br>Habitaciones:", habitaciones,"<br>Parqueaderos:", parqueaderos ))
# Mostramos el mapa
oferta_aptoofertas_seleccionadas %>%
kable("html", align = "c", digits = 2) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive")) %>%
column_spec(1:ncol(ofertas_seleccionadas), border_right = T) %>%
row_spec(0, bold = T, color = "white", background = "#3498DB")| id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 5306 | Zona Sur | 12 | 5 | 650 | 275.00 | 2 | 5 | 5 | Apartamento | ciudadela pasoancho | -76.54 | 3.39 |
| 5528 | Zona Sur | 12 | 5 | 650 | 249.00 | 2 | 4 | 4 | Apartamento | ciudadela pasoancho | -76.54 | 3.39 |
| 4266 | Zona Sur | 05 | 6 | 700 | 250.00 | 2 | 4 | 5 | Apartamento | el ingenio | -76.53 | 3.37 |
| 3813 | Zona Sur | 02 | 6 | 750 | 200.00 | 3 | 5 | 4 | Apartamento | pance | -76.53 | 3.35 |
| 5273 | Zona Sur | 12 | 6 | 660 | 224.41 | 2 | 5 | 4 | Apartamento | quintas de don | -76.54 | 3.39 |
Todas las ofertas se encuentran en la Zona Sur de Cali, lo cual cumple con el criterio inicial. Los barrios varían, incluyendo Ciudadela Pasoancho, El Ingenio, Pance y Quintas de Don Quijote, cada uno con sus propias características y niveles de exclusividad.
Dbido a que no se cuentan con propiedades en la base de datos que cumplan con los criterios de baños, habitaciones y parqueaderos dentro del presupuesto, se muestran las que más se acercan a las características solicitadas.
Las ofertas varían entre estratos 5 y 6. El estrato 6 generalmente indica una mayor exclusividad y valor de las propiedades.
Los precios oscilan entre 650 y 750 millones de pesos, todos dentro del presupuesto de 850 millones.
El área construida varía significativamente, desde 200 hasta 275 metros cuadrados. Es importante considerar que un área mayor no siempre significa un mejor apartamento, ya que la distribución y el diseño también son cruciales.
La mayoría de las ofertas tienen 2 parqueaderos, excepto una en Pance que tiene 3.
El número de baños y habitaciones varía, lo que permite elegir según las necesidades específicas.
La mayoría de los apartamentos se encuentran en pisos altos (12), lo que podría ofrecer mejores vistas. Sin embargo, hay una opción en un piso 5 y otra en un piso 2.
Los barrios son diversos y ofrecen diferentes estilos de vida. Pance, por ejemplo, es conocido por ser un área más exclusiva y natural, mientras que Ciudadela Pasoancho es más residencial.
Recomendaciones generales
Es importante tener en cuenta que la información proporcionada puede estar incompleta o desactualizada. Se recomienda adelantar visitas y contactar directamente a los propietarios para obtener información más detallada y actualizada sobre las propiedades.
Es fundamental visitar cada propiedad para evaluar su estado, distribución, vistas y otros aspectos relevantes.
Investigar a fondo los barrios para comprender su ambiente, seguridad, servicios cercanos y potencial de valorización.
Cuando se esta buscando un lugar para vivir, es muy importante tener en cuenta el estrato, ya que esto puede influir directamente en la calidad de vida, y en los costos de vida del sector.
Es importante tener en cuenta factores como la cercanía al lugar de trabajo, colegios, centros comerciales y otros servicios.
No dudar en negociar el precio, especialmente si se encuentran aspectos que puedan justificar una oferta menor.
Anexo 1 Casas en zona Norte
Analisis exploratorio Casas en zona Norte
El siguiente mapa muestra una distribución de precios de viviendas en el área norte de Santiago de Cali, con puntos de colores que varían según el precio. Al hacer clic en un marcador, aparece un pop-up con información detallada de la propiedad, incluyendo zona, tipo de propiedad, área construida, precio, estrato y barrio.
# Creamos el mapa interactivo
m <- leaflet(casas_norte_filtradas) %>%
addTiles() %>% # Añadimos un mapa base de OpenStreetMap
addCircleMarkers( # Añadimos marcadores circulares para las propiedades
lng = ~longitud,
lat = ~latitud,
radius = ~sqrt(preciom)/5, # El radio del marcador es proporcional al precio
color = ~pal(preciom), # El color del marcador depende del precio
fillOpacity = 0.7,
popup = ~paste( # Añadimos un popup con información de la propiedad
"<b>Zona:</b>", zona, "<br>",
"<b>Tipo:</b>", tipo, "<br>",
"<b>Área construida:</b>", areaconst, "m2",
"<b>Tipo:</b>", tipo, "<br>",
"<b>Precio:</b>$", preciom, " millones<br>",
"<b>Estrato:</b>", estrato, "<br>",
"<b>Barrio:</b>", barrio, ""
)
) %>%
addLegend( # Añadimos una leyenda para la escala de colores
pal = pal,
values = ~preciom,
title = "Precio",
position = "bottomright"
)
# Mostramos el mapa
mDebido a que se tienen registros en la zona norte que se ubican en otras zonas del mapa, posiblemente por errores en las coordenadas o que algunas viviendas están mal clasificadas en cuanto a su zona, se filtraron las propiedades por sus coordenadas (tomando como referencia el 1st Qu.:3.452 de las latitudes y el 1st Qu.:-76.53 de la longitud) y teniendo en cuenta el mapa de zonas geográficas de la alcaldía de Cali, para mostrar únicamente las propiedades que efectivamente corresponden a la zona norte.
Se observa un rango de precios bastante amplio, desde 200 hasta 1,600 millones de pesos.
## # A tibble: 3 × 13
## id zona piso estrato preciom areaconst parqueaderos banios habitaciones
## <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1209 Zona N… 02 5 320 150 2 4 6
## 2 1592 Zona N… 02 5 780 380 2 3 3
## 3 504 Zona N… 0 3 180 120 0 3 3
## # ℹ 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
En el siguiente grafico se verifican las coordenadas de las casas de la zona norte, confirmandose la presencia de numerosos puntos atípicos en la parte inferior del gráfico, lo que indica que hay casas con latitudes significativamente diferentes al resto de la zona norte.
# Gráfico de cajas para la longitud
plot_longitud <- plot_ly(y = casas_norte$longitud, type = "box", name = "Longitud") %>%
layout(yaxis = list(title = "longitud"))
# Gráfico de cajas para la latitud
plot_latitud <- plot_ly(y = casas_norte$latitud, type = "box", name = "Latitud") %>%
layout(yaxis = list(title = "latitud"))
# Unir los gráficos en un subplot
subplot(plot_longitud, plot_latitud, nrows = 1, titleX = TRUE, titleY = TRUE) %>%
layout(title = "Distribución de Longitud y Latitud en casas Zona norte")Relación entre el precio y el área construida
El gráfico muestra una relación positiva entre el precio y el área construida de las viviendas. Si bien hay una correlación positiva, los puntos no se agrupan perfectamente alrededor de la línea de tendencia. Esto indica que hay otros factores además del área construida que influyen en el precio de las viviendas.
#Crear el gráfico de dispersión con plotly
p <- plot_ly(data = casas_norte_filtradas, x = ~areaconst, y = ~preciom,
type = "scatter", mode = "markers",
text = ~paste("Precio:", preciom, "<br>Estrato:", estrato, "<br>Area construida:", areaconst,"<br>baños:", banios,"<br>Habitaciones:", habitaciones ),
hoverinfo = "text") %>%
layout(title = "Relación entre Área Construida y Precio",
xaxis = list(title = "Área Construida"),
yaxis = list(title = "Precio (millones)")) %>%
add_trace(x = ~areaconst, y = fitted(lm(preciom ~ areaconst, data = casas_norte_filtradas)),
type = "scatter", mode = "lines", name = "Línea de Tendencia")
# Mostrar el gráfico
pLa mayoría de los puntos se concentran en la parte inferior izquierda del gráfico, lo que indica que hay muchas viviendas con áreas construidas y precios relativamente bajos. A medida que aumenta el área construida, la cantidad de viviendas disminuye.
Se observan algunos puntos alejados de la tendencia principal, especialmente uno con un área construida relativamente baja y un precio alto, y otro con un área construida alta y un precio relativamente bajo. Estos podrían ser viviendas con características únicas que afectan su precio.
Relación entre el precio y el estrato
Se observa una tendencia positiva, aunque no tan fuerte como en el gráfico de área construida vs precio. A medida que el estrato aumenta, el precio de las viviendas también tiende a aumentar. Hay una considerable dispersión en los precios para cada estrato, lo que sugiere que el estrato por sí solo no es un predictor perfecto del precio. Otros factores como la ubicación dentro del estrato, el tamaño de la vivienda, la antigüedad, etc., también son importantes.
#Crear el gráfico de dispersión con plotly
p <- plot_ly(data = casas_norte_filtradas, x = ~estrato, y = ~preciom,
type = "scatter", mode = "markers",
text = ~paste("Precio:", preciom, "<br>Estrato:", estrato, "<br>Area construida:", areaconst,"<br>baños:", banios,"<br>Habitaciones:", habitaciones ),
hoverinfo = "text") %>%
layout(title = "Relación entre estrato y Precio",
xaxis = list(title = "Estrato"),
yaxis = list(title = "Precio (millones de pesos)")) %>%
add_trace(x = ~estrato, y = fitted(lm(preciom ~ estrato, data = casas_norte_filtradas)),
type = "scatter", mode = "lines", name = "Línea de Tendencia")
# Mostrar el gráfico
pLa mayoría de los puntos se concentran en los estratos 3, 4 y 5, lo que indica que hay más viviendas en estos estratos en el conjunto de datos. Se observan algunos valores atípicos, especialmente viviendas con precios muy altos para su estrato.
Relación entre el precio y el número de baños
Se observa una ligera tendencia positiva. A medida que el número de baños aumenta, el precio de las viviendas tiende a aumentar ligeramente. Sin embargo, la relación no es tan clara como en los gráficos de área construida vs precio o estrato vs precio.
#Crear el gráfico de dispersión con plotly
p <- plot_ly(data = casas_norte_filtradas, x = ~banios, y = ~preciom,
type = "scatter", mode = "markers",
text = ~paste("Precio:", preciom, "<br>Estrato:", estrato, "<br>Area construida:", areaconst,"<br>baños:", banios,"<br>Habitaciones:", habitaciones ),
hoverinfo = "text") %>%
layout(title = "Relación entre número de baños y Precio",
xaxis = list(title = "baños"),
yaxis = list(title = "Precio (millones de pesos)")) %>%
add_trace(x = ~banios, y = fitted(lm(preciom ~ banios, data = casas_norte_filtradas)),
type = "scatter", mode = "lines", name = "Línea de Tendencia")
# Mostrar el gráfico
pHay una gran dispersión en los precios para cada número de baños, lo que sugiere que otros factores, además del número de baños, influyen significativamente en el precio de las viviendas. La mayoría de los puntos se concentran en el rango de 2 a 4 baños, lo que indica que la mayoría de las viviendas en el conjunto de datos tienen este número de baños.
Se observan algunos valores atípicos, especialmente viviendas con precios muy altos para su número de baños
Relación del número de habitaciones vs el precio
Se observa una ligera tendencia positiva. A medida que el número de habitaciones aumenta, el precio de las viviendas tiende a aumentar ligeramente. Sin embargo, la relación no es tan clara como en los gráficos de área construida vs precio o estrato vs precio. Hay una gran dispersión en los precios para cada número de habitaciones, lo que sugiere que otros factores, además del número de habitaciones, influyen significativamente en el precio de las viviendas.
p4 <- plot_ly(data = casas_norte_filtradas, x = ~habitaciones, y = ~preciom,
type = "scatter", mode = "markers",
text = ~paste("Precio:", preciom, "<br>Estrato:", estrato, "<br>Area construida:", areaconst,"<br>baños:", banios,"<br>Habitaciones:", habitaciones ),
hoverinfo = "text") %>%
layout(title = "Número de Habitaciones vs Precio",
xaxis = list(title = "Número de Habitaciones"),
yaxis = list(title = "Precio (millones de pesos)")) %>%
add_trace(x = ~habitaciones, y = fitted(lm(preciom ~ habitaciones, data = casas_norte_filtradas)),
type = "scatter", mode = "lines", name = "Línea de Tendencia")
p4La mayoría de los puntos se concentran en el rango de 2 a 4 habitaciones, lo que indica que la mayoría de las viviendas en el conjunto de datos tienen este número de habitaciones.
Se observan algunos valores atípicos, especialmente viviendas con precios muy altos para su número de habitaciones.
Relación entre parqueaderos y Precio
Se observa una ligera tendencia positiva. A medida que el número de parqueaderos aumenta, el precio de las viviendas tiende a aumentar ligeramente. Sin embargo, la relación no es muy fuerte, como lo indica la dispersión de los puntos alrededor de la línea de tendencia.
p4 <- plot_ly(data = casas_norte_filtradas, x = ~parqueaderos, y = ~preciom,
type = "scatter", mode = "markers",
text = ~paste("Precio:", preciom, "<br>Estrato:", estrato, "<br>Area construida:", areaconst,"<br>baños:", banios,"<br>Habitaciones:", habitaciones,"<br>Parqueaderos:", parqueaderos ),
hoverinfo = "text") %>%
layout(title = "Número de parqueaderos vs Precio",
xaxis = list(title = "Número de parqueaderos"),
yaxis = list(title = "Precio (millones de pesos)")) %>%
add_trace(x = ~parqueaderos, y = fitted(lm(preciom ~ parqueaderos, data = casas_norte_filtradas)),
type = "scatter", mode = "lines", name = "Línea de Tendencia")
p4Hay una gran dispersión en los precios para cada número de parqueaderos. La mayoría de los puntos se concentran en el rango de 0 a 4 parqueaderos, lo que indica que la mayoría de las viviendas en el conjunto de datos tienen este número de parqueaderos.
Se observan algunos valores atípicos, especialmente viviendas con precios muy altos para su número de parqueaderos.
Precio de las casas en la Zona Norte
El gráfico de cajas muestra la distribución general de los precios en la Zona Norte. Se observa que la mayoría de los precios se concentran en el rango de 245 a 547 millones de pesos, con un valor central (mediana) en 370 millones de pesos.
p5 <- plot_ly(data = casas_norte_filtradas, x = ~zona, y = ~preciom,
type = "box",
text = ~paste("Precio:", preciom, "<br>Estrato:", estrato, "<br>Area construida:", areaconst,"<br>baños:", banios,"<br>Habitaciones:", habitaciones,"<br>Parqueaderos:", parqueaderos ),
hoverinfo = "text") %>%
layout(title = "Zona vs Precio",
xaxis = list(title = "Zona"),
yaxis = list(title = "Precio (millones de pesos)"))
p5Hay varios valores atípicos, lo que sugiere que hay viviendas con precios significativamente más altos que la mayoría en la Zona Norte. Se observa una vivienda con un precio muy alto (1650 millones de pesos), en estrato 4, con una gran área construida (734), 5 baños y 10 habitaciones. Esta propiedad es claramente un valor atípico en comparación con la distribución general de las propiedades en la Zona Norte.
Matrix de Correlación de las variables
Precio (preciom) vs. otras variables:
- Área construida (areaconst): 0.7436. Correlación positiva fuerte. A medida que el área construida aumenta, el precio tiende a aumentar.
- Estrato: 0.6018. Correlación positiva moderada. A medida que el estrato aumenta, el precio tiende a aumentar.
- Baños: 0.5407. Correlación positiva moderada. A medida que el número de baños aumenta, el precio tiende a aumentar.
- Habitaciones: 0.4015. Correlación positiva débil. A medida que el número de habitaciones aumenta, el precio tiende a aumentar, pero la relación es menos fuerte.
- Parqueaderos: 0.4542. Indica una relación positiva débil. El número de parqueaderos tiene una influencia limitada en el precio de la vivienda.
casas_norte_filtradas$preciom <- as.numeric(casas_norte_filtradas$preciom)
casas_norte_filtradas$areaconst <- as.numeric(casas_norte_filtradas$areaconst)
casas_norte_filtradas$estrato <- as.numeric(casas_norte_filtradas$estrato)
casas_norte_filtradas$banios <- as.numeric(casas_norte_filtradas$banios)
casas_norte_filtradas$habitaciones <- as.numeric(casas_norte_filtradas$habitaciones)
casas_norte_filtradas$parqueaderos <- as.numeric(casas_norte_filtradas$parqueaderos)
correlacion <- cor(casas_norte_filtradas[, c("preciom", "areaconst", "estrato", "banios", "habitaciones", "parqueaderos")])
plot_ly(z = correlacion, x = colnames(correlacion), y = rownames(correlacion),
type = "heatmap", colors = "RdBu") %>%
layout(title = "Matriz de Correlación",
xaxis = list(title = ""),
yaxis = list(title = ""))Correlaciones entre variables independientes:
- Área construida vs. Estrato: 0.4769. Correlación positiva moderada. Viviendas con mayor área construida tienden a estar en estratos más altos.
- Área construida vs. Baños: 0.4759. Correlación positiva moderada. Viviendas con mayor área construida tienden a tener más baños.
- Área construida vs. Habitaciones: 0.4445. Correlación positiva moderada. Viviendas con mayor área construida tienden a tener más habitaciones.
- Estrato vs. Baños: 0.3972. Correlación positiva moderada. Viviendas en estratos más altos tienden a tener más baños.
- Estrato vs. Habitaciones: 0.0908. Correlación positiva débil. Viviendas en estratos más altos pueden tener ligeramente más habitaciones, pero la relación es débil.
- Baños vs. Habitaciones: 0.6181. Correlación positiva moderada. Viviendas con más baños tienden a tener más habitaciones.
- Estrato - parqueaderos: 0.4401. Correlación positiva moderada. Indica que las viviendas en estratos socioeconómicos más altos tienden a tener más parqueaderos.
- Baños - parqueaderos: 0.3813. Correlación positiva moderada. Indica que las viviendas con más baños tienden a tener más parqueaderos.
- Areaconstruida - parqueaderos: 0.3508. Indica una relación positiva débil. El área construida tiene una influencia limitada en el número de parqueaderos.
- Habitaciones - parqueaderos: 0.2223. Indica una relación positiva débil. El número de habitaciones tiene una influencia limitada en el número de parqueaderos.
Conclusiones:
- Área construida: Es el predictor más fuerte del precio de la vivienda.
- Estrato y número de baños: También tienen una influencia significativa en el precio.
- Número de habitaciones y el número de parqueaderos: Tiene una influencia más débil en el precio.
- Hay una fuerte relación entre el número de baños y el número de habitaciones.
- Multicolinealidad: Observamos correlaciones moderadas entre las variables independientes. Esto significa que algunas de ellas comparten información, lo que podría afectar la precisión de un modelo de regresión lineal múltiple.
Estimación del modelo de regresión lineal multiple
La regresión lineal múltiple es una técnica estadística que nos permite modelar la relación entre una variable dependiente (Y) y dos o más variables independientes (X1, X2, …, Xn). Su objetivo principal es encontrar la ecuación lineal que mejor se ajuste a los datos observados, de manera que podamos:
- Comprender cómo las variables independientes influyen en la variable dependiente.
- Estimar el valor de la variable dependiente en función de los valores de las variables independientes.
# Construir el modelo de regresión lineal múltiple
modelo <- lm(preciom ~ areaconst + estrato + habitaciones + parqueaderos + banios, data = casas_norte_filtradas)
# Mostrar un resumen del modelo
summary(modelo)##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = casas_norte_filtradas)
##
## Residuals:
## Min 1Q Median 3Q Max
## -856.60 -53.45 -12.21 31.16 941.31
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -147.5163 32.4567 -4.545 7.09e-06 ***
## areaconst 0.7151 0.0510 14.022 < 2e-16 ***
## estrato 61.5897 8.1947 7.516 3.15e-13 ***
## habitaciones 7.0254 4.6802 1.501 0.13404
## parqueaderos 13.7062 4.2116 3.254 0.00122 **
## banios 18.8972 5.9624 3.169 0.00163 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 121.2 on 444 degrees of freedom
## Multiple R-squared: 0.6658, Adjusted R-squared: 0.662
## F-statistic: 176.9 on 5 and 444 DF, p-value: < 2.2e-16
Interpretación de los coeficientes:
área construida (0.7151): Por cada metro cuadrado adicional de área construida, el precio de la vivienda aumenta en 0.7151 millones de pesos.Este resultado es lógico, ya que es esperable que viviendas más grandes tengan un mayor precio. Es estadísticamente significativo (p < 2e-16).
estrato (61.5897): Por cada unidad adicional de estrato socioeconómico, el precio de la vivienda aumenta en 61.5897 millones de pesos. Este resultado también es lógico, ya que es esperable que viviendas en estratos más altos tengan un mayor precio. Es estadísticamente significativo (p < 3.15e-13).
baños (18.8972): Por cada baño adicional, el precio de la vivienda aumenta en 18.8972 millones de pesos. Este resultado es lógico, ya que es esperable que viviendas con más baños tengan un mayor precio. Es estadísticamente significativo (p = 0.00163).
habitaciones (7.0254): Por cada habitación adicional, el precio de la vivienda aumenta en 7.0254 millones. No es estadísticamente significativo (p = 0.13404).
parqueaderos (13.7062): Por cada parqueadero adicional, el precio de la vivienda aumenta en 13.7062 millones. Es estadísticamente significativo (p = 0.00122).
Los resultados son lógicos y consistentes con las expectativas. Las variables que resultaron estadísticamente significativas (área construida, estrato, parqueaderos y número de baños) son factores que comúnmente influyen en el precio de las viviendas. El número de habitaciones no tiene un efecto estadísticamente significativo en el precio.
Interpretación del coeficiente R cuadrado (R2):
El modelo tiene un ajuste moderado (R2 = 0.6658). Si bien explica una parte importante de la variabilidad en el precio de las viviendas, todavía hay un 33.42% de la variabilidad que no se explica por el modelo. Esto sugiere que hay otros factores que influyen en el precio de las viviendas y que no están incluidos en el modelo.
Posibles mejoras al modelo:
- Incluir otras variables que podrían influir en el precio, como la antigüedad de la vivienda, la ubicación exacta, la calidad de los acabados, la vista, etc.
- Transformar variables no lineales (por ejemplo, tomar el logaritmo del área construida).
- Eliminar valores atípicos que puedan estar afectando el modelo.
- Utilizar técnicas de selección de variables como la selección hacia adelante, la selección hacia atrás o la selección paso a paso para identificar las variables más relevantes.
- Validar el modelo utilizando técnicas como la validación cruzada para evaluar su capacidad de generalización.
- Analizar si hay variables independientes altamente correlacionadas, ya que esto puede afectar la precisión de los coeficientes.
Validación de supuestos del modelo
La regresión lineal múltiple es una herramienta poderosa, pero su validez depende del cumplimiento de los supuestos de linealidad, independencia, homocedasticidad, normalidad y no multicolinealidad. La validación de estos supuestos es fundamental para asegurar que los resultados del modelo sean válidos y confiables.
1. Linealidad:
El gráfico sugiere que se cumple el supuesto de linealidad, dado que los puntos parecen estar distribuidos aleatoriamente alrededor de la línea de cero residuales.
plot(modelo$fitted.values, modelo$residuals, xlab = "Valores ajustados", ylab = "Residuales")
abline(h = 0, col = "red")2. Independencia de los errores:
El gráfico de residuales vs. orden de observación no muestra evidencia clara de autocorrelación. Sin embargo, la prueba de Durbin-Watson indica que hay autocorrelación positiva en los errores (p < 0.05). Esto significa que los errores no son independientes entre sí, lo cual puede afectar la validez de las inferencias del modelo.
plot(modelo$residuals, xlab = "Orden de observación", ylab = "Residuales")
abline(h = 0, col = "red")##
## Durbin-Watson test
##
## data: modelo
## DW = 1.7799, p-value = 0.008253
## alternative hypothesis: true autocorrelation is greater than 0
3. Homocedasticidad:
La prueba de Breusch-Pagan y el gráfico de residuales vs. valores ajustados sugieren que se viola el supuesto de homocedasticidad.La prueba de Breusch-Pagan indica que hay heterocedasticidad en los errores (p < 0.05). Esto significa que la varianza de los errores no es constante en todos los niveles de las variables independientes.
plot(modelo$fitted.values, modelo$residuals, xlab = "Valores ajustados", ylab = "Residuales")
abline(h = 0, col = "red")#Prueba de Breusch-Pagan: Podemos realizar la prueba de Breusch-Pagan para detectar heterocedasticidad.
bptest(modelo)##
## studentized Breusch-Pagan test
##
## data: modelo
## BP = 95.479, df = 5, p-value < 2.2e-16
4. Normalidad de los errores:
La prueba de Shapiro-Wilk y el gráfico Q-Q normal indican que se viola el supuesto de normalidad de los errores. Esto significa que los errores no se distribuyen normalmente, lo cual puede afectar la validez de las inferencias del modelo.
##
## Shapiro-Wilk normality test
##
## data: modelo$residuals
## W = 0.75326, p-value < 2.2e-16
5. No multicolinealidad:
Los valores VIF indican que hay multicolinealidad moderada en el modelo (Todos los valores VIF están entre 1 y 5), pero no es lo suficientemente alta como para causar problemas graves. Sin embargo, es importante tener en cuenta la multicolinealidad al interpretar los resultados del modelo.
## areaconst estrato habitaciones parqueaderos banios
## 1.664798 1.650457 1.894659 1.337659 2.062629
El modelo cumple con el supuesto de linealidad y no multicolinealidad, pero no cumple con los supuestos de independencia de los errores, homocedasticidad y normalidad de los errores.
6. Recomendaciones:
- Eliminar los valores atípicos que puedan estar causando las violaciones de los supuestos.
- Eliminar una o más variables independientes que estén altamente correlacionadas.
- Transformar las variables para estabilizar la varianza de los errores o acercar la distribución de los residuales a una distribución normal.
Predicción del modelo
El modelo es: preciom = -147.5163 + 0.7151 * areaconst + 61.5897 * estrato + 7.0254 * habitaciones + 13.7062 * parqueaderos + 18.8972 * banios*
Características de la vivienda:
- areaconst = 200
- parqueaderos = 1
- banios = 2
- habitaciones = 4
- estrato = 4 o 5
- precio = 350 millones (valor a comparar)
# Modelo de regresión lineal múltiple
# modelo <- lm(preciom ~ areaconst + estrato + habitaciones + parqueaderos + banios, data = casas_norte_filtradas)
# Características de la vivienda
areaconst <- 200
parqueaderos <- 1
banios <- 2
habitaciones <- 4
estrato_4 <- 4
estrato_5 <- 5
# Predicción con estrato 4
preciom_predicho_estrato4 <- predict(modelo, newdata = data.frame(areaconst = areaconst, parqueaderos = parqueaderos, banios = banios, habitaciones = habitaciones, estrato = estrato_4))
# Predicción con estrato 5
preciom_predicho_estrato5 <- predict(modelo, newdata = data.frame(areaconst = areaconst, parqueaderos = parqueaderos, banios = banios, habitaciones = habitaciones, estrato = estrato_5))
# Imprimir resultados
cat("Predicción con estrato 4:", preciom_predicho_estrato4, "millones de pesos\n")## Predicción con estrato 4: 321.4718 millones de pesos
## Predicción con estrato 5: 383.0615 millones de pesos
El modelo predice un precio de 321.4718 millones de pesos para una vivienda con las características dadas y estrato 4, lo que significa que la vivienda podría ser considerada dentro del presupuesto si se encuentra en estrato 4.
El modelo predice un precio de 383.0615 millones de pesos para una vivienda con las características dadas y estrato 5, lo que significa que la vivienda no sería considerada dentro del presupuesto si se encuentra en estrato 5.
La diferencia entre las predicciones para estrato 4 y estrato 5 es de aproximadamente 61.59 millones de pesos, lo cual es consistente con el coeficiente estimado para la variable estrato en el modelo de regresión.
Anexo 2
Click en el enlace para ver el anexo 2: apartamentos en la zona sur: https://rpubs.com/carrodrigo/1279298