vivienda <- vivienda %>%
select(preciom, areaconst, parqueaderos, banios, habitaciones, estrato,
tipo, zona, barrio, longitud, latitud) %>%
na.omit()
str(vivienda)
## tibble [6,717 × 11] (S3: tbl_df/tbl/data.frame)
## $ preciom : num [1:6717] 250 320 350 400 260 240 220 310 320 780 ...
## $ areaconst : num [1:6717] 70 120 220 280 90 87 52 137 150 380 ...
## $ parqueaderos: num [1:6717] 1 1 2 3 1 1 2 2 2 2 ...
## $ banios : num [1:6717] 3 2 2 5 2 3 2 3 4 3 ...
## $ habitaciones: num [1:6717] 6 3 4 3 3 3 3 4 6 3 ...
## $ estrato : num [1:6717] 3 3 3 4 5 5 4 5 5 5 ...
## $ tipo : chr [1:6717] "Casa" "Casa" "Casa" "Casa" ...
## $ zona : chr [1:6717] "Zona Oriente" "Zona Oriente" "Zona Oriente" "Zona Sur" ...
## $ barrio : chr [1:6717] "20 de julio" "20 de julio" "20 de julio" "3 de julio" ...
## $ longitud : num [1:6717] -76.5 -76.5 -76.5 -76.5 -76.5 ...
## $ latitud : num [1:6717] 3.43 3.43 3.44 3.44 3.46 ...
## - attr(*, "na.action")= 'omit' Named int [1:1605] 11 20 28 29 30 31 32 33 34 35 ...
## ..- attr(*, "names")= chr [1:1605] "11" "20" "28" "29" ...
summary(vivienda)
## preciom areaconst parqueaderos banios
## Min. : 58.0 Min. : 30.0 Min. : 1.000 Min. : 0.000
## 1st Qu.: 248.0 1st Qu.: 86.0 1st Qu.: 1.000 1st Qu.: 2.000
## Median : 355.0 Median : 130.0 Median : 2.000 Median : 3.000
## Mean : 468.9 Mean : 181.1 Mean : 1.835 Mean : 3.255
## 3rd Qu.: 580.0 3rd Qu.: 233.0 3rd Qu.: 2.000 3rd Qu.: 4.000
## Max. :1999.0 Max. :1745.0 Max. :10.000 Max. :10.000
## habitaciones estrato tipo zona
## Min. : 0.000 Min. :3.00 Length:6717 Length:6717
## 1st Qu.: 3.000 1st Qu.:4.00 Class :character Class :character
## Median : 3.000 Median :5.00 Mode :character Mode :character
## Mean : 3.611 Mean :4.83
## 3rd Qu.: 4.000 3rd Qu.:6.00
## Max. :10.000 Max. :6.00
## barrio longitud latitud
## Length:6717 Min. :-76.59 Min. :3.333
## Class :character 1st Qu.:-76.54 1st Qu.:3.379
## Mode :character Median :-76.53 Median :3.412
## Mean :-76.53 Mean :3.415
## 3rd Qu.:-76.52 3rd Qu.:3.451
## Max. :-76.46 Max. :3.498
dim(vivienda)
## [1] 6717 11
La base de datos contiene información de viviendas disponibles en el mercado inmobiliario, incluyendo variables estructurales como área construida, número de habitaciones, baños, parqueaderos y estrato socioeconómico. Estas variables permiten analizar los factores que influyen en el precio de las viviendas.
base1 <- vivienda %>%
filter(tipo == "Casa", zona == "Zona Norte")
head(base1,3)
## # A tibble: 3 × 11
## preciom areaconst parqueaderos banios habitaciones estrato tipo zona barrio
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr> <chr>
## 1 320 150 2 4 6 5 Casa Zona … acopi
## 2 780 380 2 3 3 5 Casa Zona … acopi
## 3 625 355 3 5 5 4 Casa Zona … acopi
## # ℹ 2 more variables: longitud <dbl>, latitud <dbl>
table(base1$tipo)
##
## Casa
## 435
table(base1$zona)
##
## Zona Norte
## 435
La base de datos contiene información de viviendas disponibles en el mercado inmobiliario, incluyendo variables estructurales como área construida, número de habitaciones, baños, parqueaderos y estrato socioeconómico. Estas variables permiten analizar los factores que influyen en el precio de las viviendas.
leaflet(base1) %>%
addTiles() %>%
addCircleMarkers(
lng = ~longitud,
lat = ~latitud,
radius = 5,
color = "blue",
popup = ~paste("Precio:", preciom)
)
El mapa muestra la distribución geográfica de las viviendas ubicadas en la zona norte. La visualización permite identificar la concentración de propiedades en ciertos sectores de la ciudad.
ggpairs(base1[,c("preciom","areaconst","estrato","banios","habitaciones")])
El análisis exploratorio permite identificar relaciones entre el precio
y variables como el área construida, estrato y número de habitaciones.
Se observa que viviendas más grandes y en estratos más altos tienden a
tener precios mayores.
cor(base1[,c("preciom","areaconst","estrato","banios","habitaciones")])
## preciom areaconst estrato banios habitaciones
## preciom 1.0000000 0.6853915 0.52827831 0.5086427 0.36508586
## areaconst 0.6853915 1.0000000 0.35352525 0.4574766 0.42068968
## estrato 0.5282783 0.3535252 1.00000000 0.3512569 0.05819709
## banios 0.5086427 0.4574766 0.35125685 1.0000000 0.59038214
## habitaciones 0.3650859 0.4206897 0.05819709 0.5903821 1.00000000
La matriz de correlación permite evaluar la relación entre las variables del modelo. Se observa una relación positiva entre el precio y variables como el área construida y el estrato socioeconómico.
p <- ggplot(base1,
aes(x=areaconst,y=preciom)) +
geom_point() +
geom_smooth(method="lm") +
theme_minimal()
ggplotly(p)
## `geom_smooth()` using formula = 'y ~ x'
modelo1 <- lm(preciom ~ areaconst +
estrato +
habitaciones +
parqueaderos +
banios,
data = base1)
summary(modelo1)
##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = base1)
##
## 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
El modelo de regresión lineal múltiple estima el efecto de diferentes variables sobre el precio de la vivienda. Los resultados muestran que variables como el área construida y el estrato tienen una relación positiva con el precio.
par(mfrow=c(2,2))
plot(modelo1)
Características
nueva1 <- data.frame(
areaconst = 200,
estrato = 4,
habitaciones = 4,
parqueaderos = 1,
banios = 2
)
predict(modelo1,nueva1)
## 1
## 312.101
Los gráficos de diagnóstico permiten evaluar los supuestos del modelo de regresión. En general, los residuos no muestran patrones claros, lo que sugiere que el modelo es adecuado.
350 millones
ofertas1 <- base1 %>%
filter(preciom <= 350)
head(ofertas1,5)
## # A tibble: 5 × 11
## preciom areaconst parqueaderos banios habitaciones estrato tipo zona barrio
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr> <chr>
## 1 320 150 2 4 6 5 Casa Zona … acopi
## 2 280 148 2 4 4 3 Casa Zona … alame…
## 3 275 120 1 2 4 4 Casa Zona … alamos
## 4 220 150 1 2 4 3 Casa Zona … alamos
## 5 250 240 1 2 4 3 Casa Zona … barra…
## # ℹ 2 more variables: longitud <dbl>, latitud <dbl>
El modelo permite estimar el precio de una vivienda con las características especificadas. Esta predicción ayuda a evaluar si el valor estimado se encuentra dentro del presupuesto disponible.
leaflet(ofertas1) %>%
addTiles() %>%
addCircleMarkers(
lng=~longitud,
lat=~latitud,
color="red",
popup=~paste("Precio:",preciom)
)
El mapa permite visualizar la ubicación geográfica de las viviendas disponibles dentro del presupuesto, facilitando la identificación de zonas con mayor oferta.
Apartamento – Zona Sur
base2 <- vivienda %>%
filter(tipo == "Apartamento", zona == "Zona Sur")
head(base2,3)
## # A tibble: 3 × 11
## preciom areaconst parqueaderos banios habitaciones estrato tipo zona barrio
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr> <chr>
## 1 290 96 1 2 3 4 Apart… Zona… acopi
## 2 78 40 1 1 2 3 Apart… Zona… aguab…
## 3 875 194 2 5 3 6 Apart… Zona… aguac…
## # ℹ 2 more variables: longitud <dbl>, latitud <dbl>
table(base2$zona)
##
## Zona Sur
## 2381
Se realiza el mismo análisis para la segunda solicitud, considerando apartamentos en la zona sur con un presupuesto máximo de 850 millones de pesos.
ggpairs(base2[,c("preciom","areaconst","estrato","banios","habitaciones")])
cor(base2[,c("preciom","areaconst","estrato","banios","habitaciones")])
## preciom areaconst estrato banios habitaciones
## preciom 1.0000000 0.7407150 0.6497479 0.7111289 0.2957800
## areaconst 0.7407150 1.0000000 0.4518617 0.6639216 0.4073401
## estrato 0.6497479 0.4518617 1.0000000 0.5348003 0.1768269
## banios 0.7111289 0.6639216 0.5348003 1.0000000 0.5204718
## habitaciones 0.2957800 0.4073401 0.1768269 0.5204718 1.0000000
p2 <- ggplot(base2,
aes(x=areaconst,y=preciom)) +
geom_point() +
geom_smooth(method="lm") +
theme_minimal()
ggplotly(p2)
## `geom_smooth()` using formula = 'y ~ x'
modelo2 <- lm(preciom ~ areaconst +
estrato +
habitaciones +
parqueaderos +
banios,
data = base2)
summary(modelo2)
##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = base2)
##
## 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
par(mfrow=c(2,2))
plot(modelo2)
predict(modelo2,nueva1)
## 1
## 313.9336
Presupuesto 850 millones
ofertas2 <- base2 %>%
filter(preciom <= 850)
head(ofertas2,5)
## # A tibble: 5 × 11
## preciom areaconst parqueaderos banios habitaciones estrato tipo zona barrio
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr> <chr>
## 1 290 96 1 2 3 4 Apart… Zona… acopi
## 2 78 40 1 1 2 3 Apart… Zona… aguab…
## 3 220 75 1 2 3 4 Apart… Zona… alf√©…
## 4 210 72 2 2 3 3 Apart… Zona… alf√©…
## 5 115 58 1 2 2 3 Apart… Zona… alf√©…
## # ℹ 2 more variables: longitud <dbl>, latitud <dbl>
leaflet(ofertas2) %>%
addTiles() %>%
addCircleMarkers(
lng=~longitud,
lat=~latitud,
color="green",
popup=~paste("Precio:",preciom)
)
El análisis realizado permitió identificar relaciones importantes entre el precio de la vivienda y variables estructurales como el área construida, el estrato socioeconómico y el número de habitaciones. Los resultados del modelo de regresión lineal múltiple muestran que estas variables influyen positivamente en el precio de las viviendas.
Las predicciones realizadas con los modelos permiten estimar el valor esperado de viviendas con características específicas. Además, se identificaron diferentes ofertas dentro de los presupuestos establecidos para cada solicitud, lo que facilita la toma de decisiones en procesos de compra e inversión inmobiliaria.
Los mapas interactivos permitieron visualizar la distribución espacial de las viviendas disponibles, ayudando a identificar zonas con mayor concentración de oportunidades dentro del mercado inmobiliario.