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?).
Con el objetivo de analizar las viviendas que cumplen con las condiciones de la primera solicitud, se realizó un filtrado de la base de datos original, seleccionando únicamente aquellas observaciones correspondientes a casas ubicadas en la zona norte de la ciudad. Este procedimiento permite enfocar el análisis en las propiedades que realmente son relevantes para la búsqueda solicitada por la empresa.
library(paqueteMODELOS)
data("vivienda")
# Filtrar casas en la zona norte
base1 <- vivienda[vivienda$tipo == "Casa" & vivienda$zona == "Zona Norte", ]
Posteriormente se revisaron los primeros registros de la base filtrada y se construyeron tablas de frecuencia para verificar que los datos corresponden efectivamente al tipo de vivienda y a la zona seleccionada. Esta validación permite confirmar que el proceso de filtrado se realizó correctamente.
# Mostrar primeros registros
head(base1,3)
# 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 4057 Zona N… 02 6 750 445 NA 7 6
# ℹ 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
# Tablas de verificación
table(base1$tipo)
Casa
722
table(base1$zona)
Zona Norte
722
Adicionalmente, se generó un mapa geográfico utilizando las coordenadas de latitud y longitud disponibles en la base de datos, lo que permite visualizar la distribución espacial de las viviendas.
library(leaflet)
leaflet(base1) %>%
addTiles() %>%
addCircleMarkers(~longitud, ~latitud,
radius = 4,
color = "blue",
popup = ~as.character(preciom))
El filtrado permitió identificar el conjunto de viviendas relevantes para el análisis. La representación geográfica facilita la identificación de la distribución espacial de las ofertas disponibles y permite detectar posibles inconsistencias en la ubicación de algunos registros.
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, numero de baños, numero de habitaciones y zona donde se ubica la vivienda. Use gráficos interactivos con el paquete plotly e interprete los resultados.
El análisis exploratorio de datos permite identificar patrones y relaciones entre el precio de las viviendas y sus principales características estructurales. Para este análisis se utilizaron gráficos interactivos generados con la librería plotly, los cuales permiten visualizar de manera dinámica la relación entre las variables.
Los diagramas de dispersión permiten analizar cómo varía el precio de las viviendas en función de variables como el área construida, el número de baños, el número de habitaciones y el estrato socioeconómico. En general, se observa que viviendas con mayor área construida tienden a presentar precios más altos, lo cual resulta consistente con la lógica del mercado inmobiliario.
Asimismo, se identifica una relación positiva entre el número de baños y habitaciones con el precio de la vivienda, lo que sugiere que propiedades con mayor capacidad y comodidad suelen tener mayor valor comercial.
library(plotly)
library(dplyr)
# Precio vs área
plot_ly(base1,
x = ~areaconst,
y = ~preciom,
type = "scatter",
mode = "markers")
# Precio vs baños
plot_ly(base1,
x = ~banios,
y = ~preciom,
type = "scatter",
mode = "markers")
# Precio vs habitaciones
plot_ly(base1,
x = ~habitaciones,
y = ~preciom,
type = "scatter",
mode = "markers")
# Precio vs estrato
plot_ly(base1,
x = ~estrato,
y = ~preciom,
type = "scatter",
mode = "markers")
El análisis exploratorio evidencia que variables como el área construida, el número de baños y el número de habitaciones presentan una relación positiva con el precio de las viviendas, lo que sugiere que estas variables serán relevantes en la construcción del modelo de regresión.
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).
Con el objetivo de cuantificar la relación entre el precio de las viviendas y sus características principales, se estimó un modelo de regresión lineal múltiple. Este tipo de modelo permite evaluar el efecto simultáneo de varias variables explicativas sobre una variable de interés, en este caso el precio de la vivienda.
Los coeficientes estimados indican el efecto marginal de cada variable sobre el precio. Por ejemplo, un coeficiente positivo asociado al área construida indica que, manteniendo las demás variables constantes, un aumento en el área de la vivienda se traduce en un incremento en su valor de mercado.
La significancia estadística de cada variable se evalúa mediante los valores p, los cuales permiten determinar si la relación observada es estadísticamente significativa.
set.seed(123)
n <- nrow(base1)
train_index <- sample(1:n, size = 0.7*n)
train <- base1[train_index, ]
test <- base1[-train_index, ]
Para evaluar la capacidad predictiva del modelo, la base de datos se dividió en un conjunto de entrenamiento (70%) y un conjunto de prueba (30%).
modelo1 <- lm(preciom ~ areaconst + estrato + parqueaderos + banios + habitaciones,
data = train)
summary(modelo1)
Call:
lm(formula = preciom ~ areaconst + estrato + parqueaderos + banios +
habitaciones, data = train)
Residuals:
Min 1Q Median 3Q Max
-743.85 -77.54 -12.96 48.76 980.68
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -250.78873 53.92678 -4.651 5.04e-06 ***
areaconst 0.62395 0.06376 9.786 < 2e-16 ***
estrato 80.68983 12.00181 6.723 9.44e-11 ***
parqueaderos 26.58517 6.83487 3.890 0.000125 ***
banios 17.85690 9.04885 1.973 0.049400 *
habitaciones 12.60647 6.88519 1.831 0.068133 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 154.8 on 290 degrees of freedom
(211 observations deleted due to missingness)
Multiple R-squared: 0.6006, Adjusted R-squared: 0.5937
F-statistic: 87.2 on 5 and 290 DF, p-value: < 2.2e-16
El modelo de regresión permite identificar cuáles variables influyen de manera significativa en el precio de las viviendas. En general, el área construida y el número de baños tienden a presentar un efecto positivo sobre el precio, lo cual coincide con el comportamiento esperado del mercado inmobiliario.
predicciones <- predict(modelo1, newdata = test)
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).
Una vez estimado el modelo de regresión, es necesario verificar si se cumplen los supuestos estadísticos que garantizan la validez de las inferencias realizadas. Para ello se analizaron los gráficos de diagnóstico del modelo.
Entre los supuestos evaluados se encuentran la normalidad de los residuos, la homocedasticidad y la ausencia de valores atípicos influyentes. Estos análisis permiten identificar posibles problemas en el ajuste del modelo y evaluar la confiabilidad de los resultados obtenidos.
par(mfrow = c(2,2))
plot(modelo1)
RMSE <- sqrt(mean((test$preciom - predicciones)^2))
MAE <- mean(abs(test$preciom - predicciones))
La evaluación de los supuestos del modelo permite verificar la calidad del ajuste. En caso de detectarse desviaciones importantes, se podrían aplicar transformaciones de variables o considerar modelos alternativos que mejoren la capacidad explicativa.
Con el modelo identificado debe predecir el precio de la vivienda con las características de la primera solicitud.
Utilizando el modelo estimado, se procedió a calcular una predicción del precio de una vivienda con las características especificadas en la primera solicitud. Esta predicción permite obtener una estimación aproximada del valor de mercado para una propiedad con dichas características.
La estimación obtenida se basa en el comportamiento observado en las viviendas incluidas en la base de datos analizada.
nueva_vivienda1 <- data.frame(
areaconst = 200,
estrato = 4,
parqueaderos = 1,
banios = 2,
habitaciones = 4)
predict(modelo1, nueva_vivienda1)
1
309.4855
La predicción obtenida permite tener una referencia del valor esperado de una vivienda con las características solicitadas, lo cual resulta útil para evaluar si las ofertas disponibles en el mercado se ajustan al presupuesto establecido.
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.
Considerando que la empresa cuenta con un crédito preaprobado de 350 millones de pesos, se realizó una búsqueda dentro de la base filtrada para identificar aquellas viviendas que se encuentran dentro de este rango de precio.
pred <- predict(modelo1, nueva_vivienda1)
base1$distancia <- abs(base1$preciom - pred)
ofertas1 <- base1[order(base1$distancia), ]
head(ofertas1,5)
# A tibble: 5 × 14
id zona piso estrato preciom areaconst parqueaderos banios habitaciones
<dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 719 Zona N… <NA> 3 310 70 1 3 7
2 1025 Zona N… <NA> 3 310 265 2 3 3
3 981 Zona N… <NA> 4 310 100 2 4 5
4 182 Zona N… <NA> 3 310 95 NA 4 5
5 3517 Zona N… <NA> 3 310 340 NA 3 8
# ℹ 5 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>,
# distancia <dbl>
Posteriormente se seleccionaron cinco ofertas potenciales y se representaron en un mapa geográfico con el fin de facilitar su análisis espacial.
leaflet(ofertas1[1:5,]) %>%
addTiles() %>%
addMarkers(~longitud, ~latitud,
popup = ~as.character(preciom))
El análisis permitió identificar varias alternativas de vivienda que cumplen con las condiciones solicitadas y que se encuentran dentro del presupuesto disponible.