El presente análisis tiene como objetivo apoyar la toma de decisiones de la empresa C&A (Casas y Apartamentos) en la selección de viviendas que respondan a las necesidades de un cliente corporativo interesado en adquirir dos propiedades en la ciudad. Para ello se utilizan técnicas de análisis exploratorio de datos, modelación mediante regresión lineal múltiple y análisis espacial utilizando herramientas de visualización interactiva.
A partir de la base de datos de ofertas de vivienda se identifican propiedades con características similares a las solicitadas por el cliente, considerando variables como área construida, número de habitaciones, baños, parqueaderos, estrato socioeconómico y ubicación geográfica. El análisis permite estimar precios de mercado y proponer alternativas que se ajusten al presupuesto disponible.
Con el fin de orientar el análisis y la identificación de posibles ofertas en el mercado inmobiliario, el cliente proporcionó una serie de requerimientos específicos para cada una de las viviendas solicitadas. Estas características incluyen el tipo de inmueble, el área construida, el número de parqueaderos, baños y habitaciones, así como el estrato socioeconómico, la zona de ubicación y el monto máximo de crédito preaprobado disponible para la compra. En la siguiente tabla se resumen las condiciones establecidas para cada una de las dos viviendas que se desean adquirir, las cuales servirán como referencia para el desarrollo del análisis y la selección de las alternativas más adecuadas dentro de la base de datos disponible.
library(knitr)
solicitudes <- data.frame(
Caracteristicas = c("Tipo","Area construida","Parqueaderos","Banos",
"Habitaciones","Estrato","Zona","Credito preaprobado"),
Vivienda1 = c("Casa","200","1","2","4","4 o 5","Norte","350 millones"),
Vivienda2 = c("Apartamento","300","3","3","5","5 o 6","Sur","850 millones")
)
kable(solicitudes, caption = "Caracteristicas de las viviendas solicitadas")| Caracteristicas | Vivienda1 | Vivienda2 |
|---|---|---|
| Tipo | Casa | Apartamento |
| Area construida | 200 | 300 |
| Parqueaderos | 1 | 3 |
| Banos | 2 | 3 |
| Habitaciones | 4 | 5 |
| Estrato | 4 o 5 | 5 o 6 |
| Zona | Norte | Sur |
| Credito preaprobado | 350 millones | 850 millones |
1. 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?).
#Crear filtro base1 (Casa-Zona Norte)
data("vivienda")
base1 <- vivienda %>%
filter(tipo == "Casa",
zona == "Zona Norte")
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>
| id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1209 | Zona Norte | 02 | 5 | 320 | 150 | 2 | 4 | 6 | Casa | acopi | -76.51341 | 3.47968 |
| 1592 | Zona Norte | 02 | 5 | 780 | 380 | 2 | 3 | 3 | Casa | acopi | -76.51674 | 3.48721 |
| 4057 | Zona Norte | 02 | 6 | 750 | 445 | NA | 7 | 6 | Casa | acopi | -76.52950 | 3.38527 |
##
## Casa
## 722
##
## Zona Norte
## 722
## Rows: 722
## Columns: 13
## $ id <dbl> 1209, 1592, 4057, 4460, 6081, 7824, 7987, 3495, 141, 243,…
## $ zona <chr> "Zona Norte", "Zona Norte", "Zona Norte", "Zona Norte", "…
## $ piso <chr> "02", "02", "02", "02", "02", "02", "02", "03", NA, NA, N…
## $ estrato <dbl> 5, 5, 6, 4, 5, 4, 5, 5, 3, 3, 3, 3, 5, 3, 4, 4, 5, 5, 4, …
## $ preciom <dbl> 320, 780, 750, 625, 750, 600, 420, 490, 230, 190, 180, 50…
## $ areaconst <dbl> 150, 380, 445, 355, 237, 160, 200, 118, 160, 435, 120, 21…
## $ parqueaderos <dbl> 2, 2, NA, 3, 2, 1, 4, 2, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ banios <dbl> 4, 3, 7, 5, 6, 4, 4, 4, 2, 0, 3, 6, 5, 5, 3, 3, 4, 5, 5, …
## $ habitaciones <dbl> 6, 3, 6, 5, 6, 5, 5, 4, 3, 0, 3, 6, 4, 8, 4, 3, 4, 6, 4, …
## $ tipo <chr> "Casa", "Casa", "Casa", "Casa", "Casa", "Casa", "Casa", "…
## $ barrio <chr> "acopi", "acopi", "acopi", "acopi", "acopi", "acopi", "ac…
## $ longitud <dbl> -76.51341, -76.51674, -76.52950, -76.53179, -76.54044, -7…
## $ latitud <dbl> 3.47968, 3.48721, 3.38527, 3.40590, 3.36862, 3.42125, 3.4…
## id zona piso estrato
## Min. : 58.0 Length:722 Length:722 Min. :3.000
## 1st Qu.: 766.2 Class :character Class :character 1st Qu.:3.000
## Median :2257.0 Mode :character Mode :character Median :4.000
## Mean :2574.6 Mean :4.202
## 3rd Qu.:4225.0 3rd Qu.:5.000
## Max. :8319.0 Max. :6.000
##
## preciom areaconst parqueaderos banios
## Min. : 89.0 Min. : 30.0 Min. : 1.000 Min. : 0.000
## 1st Qu.: 261.2 1st Qu.: 140.0 1st Qu.: 1.000 1st Qu.: 2.000
## Median : 390.0 Median : 240.0 Median : 2.000 Median : 3.000
## Mean : 445.9 Mean : 264.9 Mean : 2.182 Mean : 3.555
## 3rd Qu.: 550.0 3rd Qu.: 336.8 3rd Qu.: 3.000 3rd Qu.: 4.000
## Max. :1940.0 Max. :1440.0 Max. :10.000 Max. :10.000
## NA's :287
## habitaciones tipo barrio longitud
## Min. : 0.000 Length:722 Length:722 Min. :-76.59
## 1st Qu.: 3.000 Class :character Class :character 1st Qu.:-76.53
## Median : 4.000 Mode :character Mode :character Median :-76.52
## Mean : 4.507 Mean :-76.52
## 3rd Qu.: 5.000 3rd Qu.:-76.50
## Max. :10.000 Max. :-76.47
##
## latitud
## Min. :3.333
## 1st Qu.:3.452
## Median :3.468
## Mean :3.460
## 3rd Qu.:3.482
## Max. :3.496
##
#Conversión de objeto para crear el mapa
base1_sf <- st_as_sf(base1,
coords = c("longitud", "latitud"),
crs = 4326)#Mapa interactivo
tmap_mode("view")
tm_shape(base1_sf) +
tm_dots(col = "blue",
size = 0.05,
popup.vars = c("preciom", "areaconst", "estrato")) +
tm_basemap("OpenStreetMap")A partir del filtrado de la base de datos original se seleccionaron únicamente las observaciones correspondientes a casas ubicadas en la zona norte de la ciudad, obteniendo un total de 722 registros. Esto confirma que el filtro aplicado fue correcto, ya que la variable tipo contiene exclusivamente la categoría “Casa” y la variable zona presenta únicamente la categoría “Zona Norte”.
El análisis de la estructura de los datos mediante la función glimpse() permitió identificar que la base filtrada contiene 13 variables, entre las cuales se encuentran características físicas de las viviendas como el área construida, número de habitaciones, número de baños y parqueaderos, así como variables socioeconómicas como el estrato y variables espaciales como la latitud y longitud. Estas últimas permiten realizar representaciones geográficas de las ofertas disponibles.La presencia de valores faltantes en algunas variables, particularmente en el número de parqueaderos, sugiere la necesidad de revisar el tratamiento de datos faltantes antes de realizar el proceso de modelación.
A partir del resumen estadístico se observa que el precio promedio de las viviendas es aproximadamente 445 millones de pesos, con valores que oscilan entre 89 y 1940 millones, lo cual evidencia una alta variabilidad en el mercado inmobiliario de la zona norte. De igual forma, el área construida presenta un promedio cercano a 265 m², aunque existen propiedades considerablemente más grandes que alcanzan hasta 1440 m².
En cuanto a las características estructurales, las viviendas presentan en promedio 4.5 habitaciones y cerca de 3.5 baños, mientras que el número promedio de parqueaderos es cercano a 2, aunque se identifican 287 valores faltantes en esta variable, lo cual deberá tenerse en cuenta en los análisis posteriores.
Finalmente, el mapa interactivo muestra la distribución espacial de las viviendas filtradas. Se observa que la mayoría de los puntos se concentran en el sector norte de la ciudad de Cali, lo cual es consistente con el filtro aplicado. No obstante, algunos puntos pueden aparecer ligeramente desplazados hacia zonas cercanas o límites de otras áreas urbanas, lo cual puede deberse a imprecisiones en la georreferenciación de los datos, errores de registro o diferencias en la delimitación administrativa de las zonas de la ciudad.
En general, los resultados confirman que el filtrado de la base de datos se realizó correctamente y que la información disponible es adecuada para continuar con el análisis exploratorio y la estimación de modelos que permitan apoyar la recomendación de viviendas al cliente.
2. 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 se realizó utilizando la base de datos filtrada correspondiente a viviendas tipo casa ubicadas en la zona norte de la ciudad. Este enfoque permite analizar únicamente propiedades comparables con la solicitud recibida, evitando introducir sesgos derivados de diferencias estructurales entre tipos de vivienda o ubicaciones geográficas.
#Estadisticas descriptivas
summary(base1[, c("preciom",
"areaconst",
"estrato",
"banios",
"habitaciones")])## preciom areaconst estrato banios
## Min. : 89.0 Min. : 30.0 Min. :3.000 Min. : 0.000
## 1st Qu.: 261.2 1st Qu.: 140.0 1st Qu.:3.000 1st Qu.: 2.000
## Median : 390.0 Median : 240.0 Median :4.000 Median : 3.000
## Mean : 445.9 Mean : 264.9 Mean :4.202 Mean : 3.555
## 3rd Qu.: 550.0 3rd Qu.: 336.8 3rd Qu.:5.000 3rd Qu.: 4.000
## Max. :1940.0 Max. :1440.0 Max. :6.000 Max. :10.000
## habitaciones
## Min. : 0.000
## 1st Qu.: 3.000
## Median : 4.000
## Mean : 4.507
## 3rd Qu.: 5.000
## Max. :10.000
El resumen estadístico permite comprender la distribución general de las variables.El precio de las viviendas presenta un valor mínimo de 89 millones y un máximo de 1940 millones, con un promedio de aproximadamente 445.9 millones. Esto indica una gran variabilidad en los precios del mercado inmobiliario analizado. En cuanto al área construida, se observa un promedio de 264.9 m², con valores que van desde 30 m² hasta 1440 m², lo cual refleja la presencia de viviendas de tamaños muy diferentes dentro de la base de datos. Respecto al estrato socioeconómico, la mayoría de las viviendas se concentran entre los estratos 3, 4 y 5, con una media de 4.2, lo que sugiere que el dataset representa principalmente viviendas de nivel socioeconómico medio y medio-alto. Por último el número de baños presenta un promedio de 3.5, mientras que el número de habitaciones tiene una media de 4.5, lo cual indica que muchas viviendas corresponden a propiedades relativamente amplias, posiblemente casas o apartamentos familiares.
#Matriz de correlación
cor_matrix <- cor(base1[, c("preciom",
"areaconst",
"estrato",
"banios",
"habitaciones")],
use = "complete.obs")
cor_matrix## preciom areaconst estrato banios habitaciones
## preciom 1.0000000 0.7313480 0.6123503 0.5233357 0.3227096
## areaconst 0.7313480 1.0000000 0.4573818 0.4628152 0.3753323
## estrato 0.6123503 0.4573818 1.0000000 0.4083039 0.1073141
## banios 0.5233357 0.4628152 0.4083039 1.0000000 0.5755314
## habitaciones 0.3227096 0.3753323 0.1073141 0.5755314 1.0000000
# Gráfico de la matriz
plot_ly(
x = colnames(cor_matrix),
y = rownames(cor_matrix),
z = cor_matrix,
type = "heatmap",
colors = colorRamp(c("blue", "white", "red"))
)La matriz de correlación muestra una relación positiva entre el precio de la vivienda y variables estructurales como el área construida, el número de baños y el número de habitaciones. En particular, el área construida presenta la correlación más fuerte con el precio, lo que sugiere que el tamaño del inmueble es uno de los principales determinantes de su valor en el mercado inmobiliario.
#Matriz de dispersion total
plot_ly(base1,
dimensions = list(
list(label = "Precio", values = ~preciom),
list(label = "Área", values = ~areaconst),
list(label = "Estrato", values = ~estrato),
list(label = "Baños", values = ~banios),
list(label = "Habitaciones", values = ~habitaciones)
),
type = "splom")El gráfico de dispersión múltiple permite observar la relación entre la variable respuesta precio de la vivienda (preciom) y las variables explicativas área construida, estrato, número de baños y número de habitaciones.
En primer lugar, se observa una relación positiva clara entre el precio y el área construida, lo cual indica que a medida que aumenta el tamaño de la vivienda también tiende a aumentar su valor en el mercado. Esta relación es lógica dentro del contexto inmobiliario, ya que propiedades con mayor área suelen ofrecer más espacio habitable y, por lo tanto, tienen un mayor valor comercial.
En segundo lugar, el estrato socioeconómico también muestra una relación positiva con el precio. Las viviendas ubicadas en estratos más altos (5 y 6) presentan en general precios superiores a las de estratos más bajos (3 y 4). Esto refleja la influencia de factores como la ubicación, la calidad del entorno urbano y el nivel socioeconómico de la zona.
Respecto al número de baños, se observa una tendencia creciente con el precio, aunque con mayor dispersión en los datos. Esto sugiere que viviendas con más baños suelen tener un mayor valor, aunque esta variable por sí sola no explica completamente la variabilidad del precio.
En el caso del número de habitaciones, también se identifica una relación positiva moderada con el precio. Sin embargo, la dispersión es mayor que en el caso del área construida, lo que indica que el número de habitaciones no siempre determina directamente el valor de la vivienda, ya que puede depender de otros factores como la distribución del espacio o la ubicación.
En general, el gráfico permite identificar que el área construida parece ser la variable con mayor asociación visual con el precio, seguida por el estrato y algunas características estructurales de la vivienda.
#Distribucion de la variable precio
p_hist <- ggplot(base1, aes(x = preciom)) +
geom_histogram(bins = 30, fill = "steelblue") +
labs(title = "Distribución del precio de las viviendas",
x = "Precio (millones)",
y = "Frecuencia")
ggplotly(p_hist)El histograma del precio de las viviendas permite observar la distribución de esta variable en la base de datos. Se evidencia que la mayor concentración de viviendas se encuentra en rangos de precios medios, mientras que existe una menor cantidad de propiedades con precios muy altos. Esta distribución sugiere una posible asimetría hacia la derecha, lo cual es común en los mercados inmobiliarios, donde unas pocas propiedades de alto valor elevan el rango máximo de precios. Este comportamiento indica la presencia de cierta heterogeneidad en el mercado y sugiere que el precio puede estar influenciado por múltiples características estructurales de la vivienda.
#Deteccion de outliers
p_out <- ggplot(base1, aes(y = preciom)) +
geom_boxplot(fill = "orange") +
labs(title = "Detección de valores atípicos en el precio")
ggplotly(p_out)Se observa que la mayor concentración de precios se encuentra aproximadamente entre 260 y 550 millones de pesos, rango que corresponde al primer y tercer cuartil de la distribución. La mediana del precio se ubica alrededor de 390 millones de pesos, lo que indica que la mitad de las viviendas tienen precios inferiores a este valor.
Asimismo, el gráfico evidencia la presencia de varios valores atípicos en la parte superior de la distribución, correspondientes a viviendas con precios superiores a los 1000 millones de pesos. Estos casos probablemente representan propiedades de lujo, con grandes áreas o ubicadas en zonas exclusivas de la ciudad.
p_area <- ggplot(base1, aes(x = areaconst, y = preciom)) +
geom_point(color = "darkblue", alpha = 0.6) +
geom_smooth(method = "lm", color = "red") +
labs(title = "Relación entre precio y área construida",
x = "Área construida (m²)",
y = "Precio (millones)")
ggplotly(p_area)El gráfico de dispersión entre el precio y el área construida muestra una relación positiva entre ambas variables. En general, a medida que aumenta el área construida de la vivienda, el precio también tiende a incrementarse. Esta relación es lógica desde el punto de vista del mercado inmobiliario, ya que las viviendas con mayor espacio habitable suelen tener un mayor valor comercial. Sin embargo, también se observa cierta dispersión en los datos, lo que indica que el precio no depende únicamente del tamaño de la vivienda, sino también de otras características como la ubicación, el estrato socioeconómico o las amenidades disponibles.
p_estrato <- ggplot(base1, aes(x = factor(estrato), y = preciom)) +
geom_boxplot(fill = "lightblue") +
labs(title = "Precio según estrato socioeconómico",
x = "Estrato",
y = "Precio (millones)")
ggplotly(p_estrato)El diagrama de cajas que relaciona el precio de la vivienda con el estrato socioeconómico permite observar diferencias claras entre los distintos niveles. Se evidencia que las viviendas ubicadas en estratos más altos tienden a presentar precios significativamente mayores. Además, los estratos superiores muestran una mayor dispersión en los precios, lo que indica una mayor variedad de tipos de viviendas dentro de estos segmentos del mercado. Este comportamiento es coherente con la estructura socioeconómica de las ciudades colombianas, donde el estrato suele estar fuertemente asociado con la ubicación, la calidad de la infraestructura y el valor del suelo.
p_banios <- ggplot(base1, aes(x = banios, y = preciom)) +
geom_point(color = "purple", alpha = 0.6) +
geom_smooth(method = "lm", color = "red") +
labs(title = "Relación entre precio y número de baños",
x = "Número de baños",
y = "Precio (millones)")
ggplotly(p_banios)El análisis del precio en función del número de baños muestra una tendencia positiva. En general, las viviendas con mayor número de baños presentan precios más altos. Este resultado es consistente con las preferencias del mercado inmobiliario, ya que un mayor número de baños suele asociarse con viviendas más amplias, mayor comodidad para los residentes y, por lo tanto, un mayor valor de mercado. Sin embargo, también se observa variabilidad en los precios dentro de cada categoría, lo que indica que esta variable interactúa con otras características de la vivienda.
p_habitaciones <- ggplot(base1, aes(x = habitaciones, y = preciom)) +
geom_point(color = "darkgreen", alpha = 0.6) +
geom_smooth(method = "lm", color = "red") +
labs(title = "Relación entre precio y número de habitaciones",
x = "Número de habitaciones",
y = "Precio (millones)")
ggplotly(p_habitaciones)El gráfico de dispersión entre el precio y el número de habitaciones sugiere una tendencia moderadamente positiva. Las viviendas con mayor número de habitaciones tienden a presentar precios más elevados, aunque la relación no parece ser tan fuerte como la observada con el área construida. Esto puede explicarse porque el número de habitaciones no necesariamente implica un aumento significativo en el tamaño total de la vivienda, ya que algunas propiedades pueden tener espacios más pequeños o distribuciones diferentes.
En conjunto, el análisis exploratorio de los datos permite identificar varios patrones relevantes en el comportamiento del mercado de vivienda. En primer lugar, se evidencia que el precio de la vivienda está fuertemente relacionado con el área construida, lo cual resulta coherente desde una perspectiva económica, ya que el tamaño de la propiedad es uno de los principales determinantes de su valor. Asimismo, variables como el estrato socioeconómico, el número de baños y el número de habitaciones muestran relaciones positivas con el precio, aunque con distintos niveles de dispersión. Esto sugiere que el valor de una vivienda no depende únicamente de una característica específica, sino de la combinación de múltiples factores estructurales y de ubicación. También se identificó la presencia de valores atípicos en los precios, correspondientes a viviendas significativamente más costosas que el promedio del mercado. Estos casos podrían representar propiedades de alto lujo y deben ser considerados cuidadosamente en etapas posteriores del modelado.
En general, los resultados del análisis exploratorio indican que las variables seleccionadas son potencialmente relevantes para explicar el comportamiento del precio de las viviendas, lo cual justifica su uso en el modelo de regresión lineal múltiple.
3. 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).
Se realiza un ajuste del modelo con la función lm(). La variable respuesta es: preciom. Variables explicativas:areaconst, estrato, habitaciones, parqueaderos, banios.
#Modelo de regresión lineal múltiple
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
## (287 observations deleted due to missingness)
## 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 estima el precio de la vivienda (en millones de pesos) como función de: Área construida, estrato socioeconómico, número de habitaciones, número de parqueaderos y número de baños. La ecuación estimada sería aproximadamente: \[ Precio = −238.17 + 0.6767 (Área) + 80.63 (Estrato) + 7.64 (Habitaciones) + 24.01 (Parqueaderos) + 18.90 (Baños) \].
\[Coeficiente: 0.6767 p-value: < 2e-16\]
Manteniendo constantes las demás variables del modelo, un incremento de 1 metro cuadrado en el área construida se asocia con un aumento promedio de 0.67 millones de pesos en el precio de la vivienda.Es altamente significativo. Es coherente con el mercado inmobiliario, ya que el tamaño del inmueble es uno de los principales determinantes del valor de una vivienda.
\[Coeficiente: 80.63 p-value: 2.70e-15\]
Un incremento de una unidad en el estrato socioeconómico incrementa en promedio el precio de la vivienda en aproximadamente 80.6 millones de pesos, manteniendo constantes las demás variables.También es altamente significativo. Tiene mucho sentido en el contexto urbano colombiano, donde el estrato refleja nivel socioeconómico y valorización del sector.
\[Coeficiente: 7.64 p-value: 0.177\]
Aunque el coeficiente es positivo, no resulta estadísticamente significativo al 5%, por lo que no existe evidencia suficiente para afirmar que el número de habitaciones tenga un efecto claro sobre el precio de la vivienda dentro del modelo. Esto puede ocurrir porque el número de habitaciones suele estar altamente relacionado con el área construida, por lo que su efecto puede estar parcialmente capturado por dicha variable.
\[Coeficiente: 24.01 p-value: 5.14e-05\]
Cada parqueadero adicional incrementa el precio de la vivienda en aproximadamente 24 millones de pesos, manteniendo constantes las demás variables.Es estadísticamente significativo. Es lógico porque el parqueadero es un atributo altamente valorado en zonas urbanas.
\[Coeficiente: 18.90 p-value: 0.012\]
Un baño adicional aumenta el precio de la vivienda en promedio 18.9 millones de pesos, manteniendo constantes las demás variables.Es significativo al 5%. Es coherente porque el número de baños está asociado al nivel de confort de la vivienda.
\[Coeficiente: −238.17\] El intercepto representa el valor esperado del precio cuando todas las variables explicativas toman valor cero. Aunque en la práctica esta situación no es realista, el intercepto permite ajustar correctamente la ecuación del modelo.
\[R² = 0.604\] El coeficiente de determinación indica que aproximadamente el 60.4% de la variabilidad del precio de las viviendas es explicada por las variables incluidas en el modelo.
\[p-value: < 2.2e-16\] El test F indica que el conjunto de variables explicativas incluidas en el modelo tiene un efecto estadísticamente significativo sobre el precio de la vivienda.
287 observations deleted due to missingness, Algunas observaciones fueron eliminadas debido a valores faltantes en las variables utilizadas en el modelo, por lo que la estimación final se realizó con los registros completos disponibles.
En general, el modelo presenta un ajuste aceptable para explicar el comportamiento del precio de las viviendas en la zona norte de la ciudad. Variables como el área construida, el estrato socioeconómico, el número de parqueaderos y el número de baños resultaron estadísticamente significativas, lo cual coincide con la lógica del mercado inmobiliario.
Incluir variables adicionales como: barrio, antigüedad de la vivienda, cercanía a servicios. Realizando transformaciones. Módelos espaciales: Porque el precio de la vivienda depende mucho de ubicación exacta.
Los resultados del modelo evidencian que el precio de las viviendas está influenciado principalmente por el área construida, el estrato socioeconómico y características estructurales como el número de parqueaderos y baños. El modelo logra explicar aproximadamente el 60% de la variabilidad del precio, lo cual sugiere un nivel de ajuste adecuado para el análisis del mercado inmobiliario en la zona norte de la ciudad.
4. 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).
El gráfico Residuals vs Fitted permite observar una dispersión aleatoria de los residuos alrededor de la línea horizontal en cero. En el modelo estimado, los residuos se distribuyen de forma relativamente aleatoria, lo que sugiere que la relación entre las variables explicativas y el precio de la vivienda puede aproximarse mediante una relación lineal.
No obstante, se puede observar cierta dispersión mayor en valores altos del precio, lo que podría indicar una leve heterocedasticidad, es decir, que la variabilidad del error aumenta para viviendas más costosas. Este comportamiento es común en datos del mercado inmobiliario.
En cuanto al gráfico Normal Q-Q la mayoría de los puntos se alinean cercanos a la línea diagonal, lo que indica que la distribución de los residuos es razonablemente cercana a una distribución normal. Sin embargo, en los extremos del gráfico se observan algunas desviaciones, lo que sugiere la presencia de valores extremos o atípicos que pueden afectar ligeramente la normalidad.
A pesar de estas pequeñas desviaciones, el supuesto de normalidad puede considerarse aceptable para fines de inferencia estadística.
En el gráfico Scale-Location se observa una ligera tendencia a que la dispersión aumente para valores más altos del precio estimado, lo cual sugiere una posible heterocedasticidad leve. Este comportamiento también es común en modelos de precios inmobiliarios, donde las viviendas más costosas presentan mayor variabilidad en sus características.
El gráfico Residuals vs Leverage permite identificar observaciones que tienen una alta influencia sobre la estimación del modelo. Se observa que la mayoría de los datos se encuentran dentro de los límites de influencia definidos por la distancia de Cook, lo que indica que la mayoría de las observaciones no ejercen una influencia excesiva en el modelo. No obstante, algunos puntos presentan valores relativamente altos de leverage, lo que sugiere que podrían corresponder a viviendas con características muy diferentes al promedio del conjunto de datos.
#Normalidad de residuos
hist(residuals(modelo1),
main = "Histograma de los residuos",
xlab = "Residuos")##
## Shapiro-Wilk normality test
##
## data: residuals(modelo1)
## W = 0.85246, p-value < 2.2e-16
\[W = 0.85246 p-value < 2.2e-16\]
Dado que el p-valor es menor a 0.05, se rechaza la hipótesis nula de normalidad. Esto indica que los residuos del modelo no siguen una distribución normal perfecta.
Sin embargo, este resultado debe interpretarse con cautela, ya que en muestras relativamente grandes esta prueba suele detectar desviaciones pequeñas de la normalidad. En el contexto de modelos de precios inmobiliarios, estas desviaciones suelen estar asociadas a la presencia de valores atípicos o propiedades con características muy diferentes al promedio del mercado.
Como posibles acciones de mejora, se podría considerar aplicar transformaciones a la variable respuesta, como el logaritmo del precio, o analizar la presencia de valores extremos.
##
## studentized Breusch-Pagan test
##
## data: modelo1
## BP = 80.281, df = 5, p-value = 7.33e-16
\[BP = 80.281 p-value = 7.33e-16\]
El p-valor es menor a 0.05, se rechaza la hipótesis nula de homocedasticidad. Esto indica que existe heterocedasticidad, es decir, la varianza de los errores no es constante a lo largo de los valores predichos por el modelo.
Este resultado sugiere que el modelo presenta mayor variabilidad en el error para ciertos rangos de precio, lo cual es común en datos del mercado inmobiliario donde las viviendas más costosas suelen mostrar mayor dispersión en sus precios.
Para corregir este problema se podrían aplicar estrategias como:transformar la variable precio (por ejemplo log(precio)), utilizar errores robustos o considerar modelos alternativos como regresión ponderada.
## lag Autocorrelation D-W Statistic p-value
## 1 0.1173407 1.761505 0.012
## Alternative hypothesis: rho != 0
\[Estadístico DW = 1.7615 p-value = 0.012\]
En este caso, el valor obtenido (1.76) se encuentra relativamente cercano a 2, lo que sugiere que la autocorrelación no es muy fuerte. Sin embargo, el p-valor menor a 0.05 indica que existe evidencia estadística de cierta autocorrelación entre los residuos.
Este comportamiento podría estar asociado a factores espaciales o a características de ubicación que no están siendo capturadas completamente por el modelo.
## areaconst estrato habitaciones parqueaderos banios
## 1.460998 1.307757 1.721015 1.226334 1.967421
Generalmente se considera que existe problema de multicolinealidad cuando el VIF es mayor a 5 o 10. En este caso, todos los valores de VIF se encuentran por debajo de 2, lo que indica que no existe evidencia de multicolinealidad significativa entre las variables explicativas del modelo.
Esto sugiere que cada variable aporta información relevante y relativamente independiente para explicar el precio de las viviendas.
#Influencias con Cooks distance
cook <- cooks.distance(modelo1)
plot(cook, type="h",
main="Distancia de Cook",
ylab="Cook's distance")
abline(h = 4/length(cook), col="red")Los resultados de la distancia de Cook muestran que la mayoría de las observaciones se encuentran por debajo del umbral recomendado (4/n), lo que sugiere que no existen valores extremadamente influyentes que afecten de manera significativa el ajuste del modelo. No obstante, en caso de identificarse observaciones con alta influencia, se recomienda analizar dichos registros para verificar posibles errores en los datos o considerar métodos robustos de estimación.
## # A tibble: 25 × 13
## id zona piso estrato preciom areaconst parqueaderos banios habitaciones
## <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 3182 Zona … <NA> 4 420 265 NA 6 7
## 2 655 Zona … <NA> 3 280 148 2 4 4
## 3 773 Zona … <NA> 3 125 60 NA 2 2
## 4 774 Zona … <NA> 3 160 100 NA 2 4
## 5 6372 Zona … <NA> 4 580 411 NA 5 6
## 6 627 Zona … <NA> 3 170 238 NA 1 3
## 7 2295 Zona … 01 5 334 243 4 0 0
## 8 2677 Zona … 01 5 430 217 5 3 3
## 9 2851 Zona … 01 5 990 290 4 3 3
## 10 3084 Zona … 02 5 449 560 4 4 5
## # ℹ 15 more rows
## # ℹ 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
En general, los resultados de las pruebas estadísticas permiten concluir que el modelo presenta un comportamiento razonable para explicar el precio de las viviendas en la zona norte de la ciudad. Aunque se detectaron desviaciones en algunos supuestos, particularmente en la normalidad de los residuos y en la homocedasticidad, estas situaciones son relativamente comunes en datos del mercado inmobiliario debido a la gran heterogeneidad en las características de las propiedades y sus precios.
Por otro lado, la prueba de multicolinealidad mostró valores de VIF bajos, lo que indica que las variables explicativas incluidas en el modelo aportan información independiente y relevante. Asimismo, el estadístico de Durbin-Watson sugiere una leve autocorrelación, lo que podría estar asociado a factores espaciales o características del entorno que no fueron incorporadas en el modelo.
A pesar de estas limitaciones, el modelo presenta un coeficiente de determinación 𝑅2= 0.604 R2= 0.604, lo que indica que aproximadamente el 60% de la variabilidad del precio de las viviendas es explicada por las variables incluidas en el modelo, principalmente el área construida, el estrato socioeconómico y el número de parqueaderos. Esto sugiere que el modelo tiene una capacidad explicativa moderada, suficiente para realizar estimaciones y apoyar la toma de decisiones en el proceso de recomendación de ofertas inmobiliarias.
Como mejora futura, se podría considerar incluir variables adicionales relacionadas con ubicación específica, características del barrio, antigüedad de la vivienda o amenidades cercanas, lo cual podría aumentar la capacidad predictiva del modelo.
5. Con el modelo identificado debe predecir el precio de la vivienda con las características de la primera solicitud.
Solicitud 1:
| Variable | Valor |
|---|---|
| Área construida | 200 |
| Estrato | 4 o 5 |
| Parqueaderos | 1 |
| Baños | 2 |
| Habitaciones | 4 |
| Tipo | Casa |
| Zona | Norte |
#Creación del nuevo dataframe
nueva_vivienda1 <- data.frame(
areaconst = 200,
estrato = 4,
habitaciones = 4,
parqueaderos = 1,
banios = 2
)#Predicción con el modelo con intervalos de confianza
predict(modelo1,
newdata = nueva_vivienda1,
interval = "confidence")## fit lwr upr
## 1 312.101 287.1908 337.0111
#Predicción para estrato 5
nueva_vivienda1b <- data.frame(
areaconst = 200,
estrato = 5,
habitaciones = 4,
parqueaderos = 1,
banios = 2
)
predict(modelo1, nueva_vivienda1b, interval = "confidence")## fit lwr upr
## 1 392.7359 360.8802 424.5917
Con el modelo de regresión lineal múltiple estimado previamente, se realizó la predicción del precio de una vivienda con las características solicitadas por la empresa internacional para la primera vivienda: casa ubicada en la zona norte, con 200 m² de área construida, 4 habitaciones, 2 baños y 1 parqueadero.
Inicialmente se realizó la estimación considerando que la vivienda pertenece a estrato 4. El modelo predijo un precio aproximado de 312.1 millones de pesos, con un intervalo de confianza del 95% entre 287.2 millones y 337.0 millones de pesos. Este intervalo representa el rango dentro del cual se espera que se encuentre el precio promedio de una vivienda con características similares dentro del mercado analizado.
Posteriormente se realizó una segunda predicción considerando que la vivienda pertenece a estrato 5, dado que la solicitud del cliente contempla viviendas en estrato 4 o 5. En este caso, el modelo estima un precio promedio de 392.7 millones de pesos, con un intervalo de confianza entre 360.9 millones y 424.6 millones de pesos.
Estos resultados evidencian que el estrato socioeconómico tiene un impacto importante en el precio de la vivienda, incrementando el valor estimado en aproximadamente 80 millones de pesos al pasar de estrato 4 a estrato 5. Este comportamiento es consistente con la lógica del mercado inmobiliario, donde viviendas ubicadas en sectores de mayor estrato suelen presentar precios más altos debido a factores como mejor infraestructura urbana, mayor seguridad, mejor acceso a servicios y mayor valorización del suelo.
Desde el punto de vista de la capacidad financiera del cliente, se observa que la predicción para estrato 4 se encuentra dentro del presupuesto máximo disponible de 350 millones de pesos, mientras que la estimación para estrato 5 supera dicho presupuesto, incluso considerando el límite inferior del intervalo de confianza. Por lo tanto, con base en el modelo estimado, las viviendas de estrato 4 se ajustan mejor a la restricción presupuestal establecida para la primera solicitud.
En consecuencia, el análisis sugiere que la búsqueda de ofertas potenciales debería priorizar casas ubicadas en estrato 4 dentro de la zona norte, ya que estas presentan una mayor probabilidad de ajustarse al crédito preaprobado disponible.
6. 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.
Las caracteristicas que se deben tener en cuenta incluyen: Deben ser casas en la Zona norte, precio ≤ 350 millones, lo más similares posible a la vivienda solicitada.
Filtrar viviendas que no superen el crédito aprobado:
#Filtro de viviendas que no superen el crédito aprobado
ofertas_v1 <- base1 %>%
filter(preciom <= 350)## [1] 314
Buscar viviendas similares a la solicitud: área ≈ 200 m² , habitaciones ≈ 4, baños ≈ 2, parqueaderos ≈ 1.
#Vector con las caracteristicas solicitadas
vivienda_objetivo <- data.frame(
areaconst = 200,
habitaciones = 4,
banios = 2,
parqueaderos = 1
)#Calculo de similitud (distancia entre viviendas)
ofertas_v1 <- ofertas_v1 %>%
mutate(
distancia = sqrt(
(areaconst - 200)^2 +
(habitaciones - 4)^2 +
(banios - 2)^2 +
(parqueaderos - 1)^2
)
)#Tabla con requisitos
kable(
ofertas5 %>%
select(barrio, preciom, areaconst, habitaciones, banios, parqueaderos),
caption = "Viviendas recomendadas para la solicitud 1"
)| barrio | preciom | areaconst | habitaciones | banios | parqueaderos |
|---|---|---|---|---|---|
| salomia | 350 | 200 | 6 | 2 | 1 |
| el bosque | 350 | 200 | 4 | 3 | 3 |
| la flora | 320 | 200 | 4 | 4 | 2 |
| la merced | 320 | 200 | 4 | 4 | 2 |
| el bosque | 335 | 202 | 5 | 4 | 1 |
#Mapa interactivo con las ofertas
ofertas5$popup <- paste(
"Barrio:", ofertas5$barrio,
"<br>Precio:", ofertas5$preciom, "millones",
"<br>Area:", ofertas5$areaconst, "m2",
"<br>Habitaciones:", ofertas5$habitaciones,
"<br>Banos:", ofertas5$banios,
"<br>Parqueaderos:", ofertas5$parqueaderos
)
leaflet(ofertas5) %>%
addTiles() %>%
addCircleMarkers(
lng = ~longitud,
lat = ~latitud,
radius = 7,
color = "red",
popup = ~popup
)A partir de la predicción realizada con el modelo de regresión y considerando la restricción de crédito preaprobado de 350 millones de pesos, se realizó un filtrado de la base de datos con el objetivo de identificar viviendas que cumplieran características similares a las solicitadas por el cliente. Para ello se consideraron principalmente viviendas ubicadas en la zona norte, con características cercanas en términos de área construida, número de habitaciones, baños y parqueaderos, y cuyo precio se encontrara dentro del rango estimado por el modelo.
Como resultado de este proceso se identificaron cinco ofertas potenciales, las cuales fueron representadas en un mapa interactivo para facilitar su visualización geográfica dentro de la ciudad. Este tipo de representación permite analizar no solo el precio y las características del inmueble, sino también su distribución espacial dentro de la zona norte, lo cual puede ser relevante para la toma de decisiones del cliente.
El análisis de estas ofertas sugiere que existen varias viviendas dentro del mercado que se ajustan al presupuesto disponible y que presentan características similares a las solicitadas. En general, estas propiedades presentan áreas construidas cercanas a los 200 m², entre 3 y 4 habitaciones, entre 2 y 3 baños y al menos un parqueadero, lo cual coincide con el perfil de vivienda definido en la solicitud.
Adicionalmente, la visualización en el mapa permite observar que las ofertas se concentran en determinados barrios dentro de la zona norte, lo cual podría reflejar sectores con mayor disponibilidad de vivienda con estas características o zonas con mayor desarrollo inmobiliario en este segmento de mercado.
Desde el punto de vista financiero, todas las viviendas seleccionadas se encuentran por debajo o cercanas al límite de 350 millones de pesos, lo cual indica que son opciones viables dentro del crédito preaprobado del cliente. Por lo tanto, estas propiedades representan alternativas reales que la agencia inmobiliaria podría presentar al cliente como parte de su proceso de asesoría.
En conclusión, el análisis realizado mediante el modelo de regresión y el filtrado de la base de datos permitió identificar un conjunto de viviendas que cumplen con los requisitos solicitados y que se encuentran dentro del presupuesto disponible. Estas ofertas constituyen un punto de partida sólido para el proceso de negociación y selección final del inmueble por parte del cliente.
7. Realice los pasos del 1 al 6. Para la segunda solicitud que tiene un crédito pre-aprobado por valor de $850 millones.
Características de la segunda soliciud:
| Variable | Valor |
|---|---|
| Tipo | Apartamento |
| Área construida | 300 |
| Parqueaderos | 3 |
| Baños | 3 |
| Habitaciones | 5 |
| Estrato | 5 o 6 |
| Zona | Sur |
| Crédito máximo | 850 millones |
#Filtro para apartamentos/zona sur
base2 <- vivienda %>%
filter(tipo == "Apartamento",
zona == "Zona Sur")| id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 5098 | Zona Sur | 05 | 4 | 290 | 96 | 1 | 2 | 3 | Apartamento | acopi | -76.53464 | 3.44987 |
| 698 | Zona Sur | 02 | 3 | 78 | 40 | 1 | 1 | 2 | Apartamento | aguablanca | -76.50100 | 3.40000 |
| 8199 | Zona Sur | NA | 6 | 875 | 194 | 2 | 5 | 3 | Apartamento | aguacatal | -76.55700 | 3.45900 |
#Mapa interactivo para ofertas disponibles
leaflet(base2) %>%
addTiles() %>%
addCircleMarkers(
lng = ~longitud,
lat = ~latitud,
radius = 4,
color = "blue",
popup = ~paste(
"Barrio:", barrio,
"<br>Precio:", preciom,
"<br>Area:", areaconst
)
)#Estadisticas descriptivas
summary(base2[, c("preciom",
"areaconst",
"estrato",
"banios",
"habitaciones")])## preciom areaconst estrato banios
## Min. : 75.0 Min. : 40.00 Min. :3.00 Min. :0.000
## 1st Qu.: 175.0 1st Qu.: 65.00 1st Qu.:4.00 1st Qu.:2.000
## Median : 245.0 Median : 85.00 Median :5.00 Median :2.000
## Mean : 297.3 Mean : 97.47 Mean :4.63 Mean :2.488
## 3rd Qu.: 335.0 3rd Qu.:110.00 3rd Qu.:5.00 3rd Qu.:3.000
## Max. :1750.0 Max. :932.00 Max. :6.00 Max. :8.000
## habitaciones
## Min. :0.000
## 1st Qu.:3.000
## Median :3.000
## Mean :2.966
## 3rd Qu.:3.000
## Max. :6.000
El precio promedio de los apartamentos es de aproximadamente 297 millones de pesos, con valores que oscilan entre 75 y 1750 millones, lo que evidencia una alta variabilidad en el mercado inmobiliario. La mediana del precio es 245 millones, lo cual indica que la distribución presenta cierta asimetría hacia valores altos, debido a algunas propiedades con precios significativamente elevados.
En cuanto al área construida, el promedio es de aproximadamente 97 m², con valores entre 40 m² y 932 m². Esto sugiere que, aunque la mayoría de los apartamentos tienen tamaños moderados, existen algunos inmuebles de gran tamaño que generan dispersión en los datos.
Respecto al estrato socioeconómico, la mayor parte de los apartamentos se concentra entre estrato 4 y 5, con un promedio de 4.63, lo que indica que la oferta en la zona sur corresponde principalmente a sectores de nivel socioeconómico medio y medio–alto.
En relación con las características internas del inmueble, el número promedio de baños es 2.48 y el número promedio de habitaciones es cercano a 3, lo cual coincide con el perfil típico de apartamentos familiares en el mercado inmobiliario.
#Matriz de correlación
cor_matrix <- cor(base2[, c("preciom",
"areaconst",
"estrato",
"banios",
"habitaciones")],
use = "complete.obs")
cor_matrix## preciom areaconst estrato banios habitaciones
## preciom 1.0000000 0.7579955 0.6727067 0.7196705 0.3317538
## areaconst 0.7579955 1.0000000 0.4815593 0.6618179 0.4339608
## estrato 0.6727067 0.4815593 1.0000000 0.5686171 0.2125953
## banios 0.7196705 0.6618179 0.5686171 1.0000000 0.5149227
## habitaciones 0.3317538 0.4339608 0.2125953 0.5149227 1.0000000
# Gráfico de la matriz
plot_ly(
x = colnames(cor_matrix),
y = rownames(cor_matrix),
z = cor_matrix,
type = "heatmap",
colors = colorRamp(c("blue", "white", "red"))
)Los resultados muestran que el precio de los apartamentos presenta una fuerte correlación positiva con el área construida (0.76), lo que indica que, a mayor tamaño del inmueble, mayor tiende a ser su valor en el mercado. Este resultado es consistente con la lógica del sector inmobiliario.
También se observa una correlación positiva importante entre el precio y el número de baños (0.72), lo que sugiere que apartamentos con mayor número de baños suelen tener precios más altos, posiblemente porque esta característica está asociada con viviendas más amplias o de mayor nivel.
El estrato socioeconómico presenta una correlación de 0.67 con el precio, lo que evidencia que las viviendas ubicadas en estratos más altos tienden a tener mayores valores de mercado, reflejando diferencias en ubicación, infraestructura y calidad del entorno.
Por su parte, el número de habitaciones presenta una correlación moderada con el precio (0.33), lo que indica que esta variable tiene una relación menos directa con el valor del inmueble en comparación con otras variables como el área construida o el número de baños.
En conjunto, estas correlaciones sugieren que el área construida, el número de baños y el estrato son variables clave para explicar el precio de los apartamentos.
#Grafico área vs precio
p1 <- plot_ly(base2,
x = ~areaconst,
y = ~preciom,
type = "scatter",
mode = "markers",
color = ~estrato) %>%
layout(title = "Precio vs Area construida")
p1El gráfico de dispersión entre área construida y precio muestra una tendencia positiva clara, lo que indica que el precio de los apartamentos tiende a aumentar a medida que incrementa el tamaño del inmueble.
Sin embargo, también se observa una dispersión considerable en los valores, lo cual sugiere que el área construida no es el único factor que influye en el precio. Otros elementos como la ubicación específica, el estrato, los parqueaderos o las características del edificio también pueden afectar significativamente el valor final del inmueble.
Adicionalmente, se identifican algunos valores extremos, correspondientes a apartamentos muy grandes o con precios particularmente altos.
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
## (406 observations deleted due to missingness)
## Multiple R-squared: 0.7485, Adjusted R-squared: 0.748
## F-statistic: 1414 on 5 and 2375 DF, p-value: < 2.2e-16
El modelo de regresión lineal múltiple estimado presenta un coeficiente de determinación 𝑅2=0.7485, lo que indica que aproximadamente el 75% de la variabilidad del precio de los apartamentos es explicada por las variables incluidas en el modelo. Este resultado sugiere que el modelo tiene una alta capacidad explicativa.
Los coeficientes estimados muestran que todas las variables incluidas en el modelo son estadísticamente significativas (p < 0.001).
El área construida tiene un coeficiente positivo de 1.28, lo que indica que, manteniendo constantes las demás variables, un incremento de un metro cuadrado en el área construida incrementa el precio del apartamento en aproximadamente 1.28 millones de pesos.
El estrato socioeconómico también presenta un efecto positivo importante, indicando que los apartamentos ubicados en estratos más altos tienden a tener precios mayores.
El número de parqueaderos y el número de baños también presentan efectos positivos sobre el precio, lo cual es coherente con las preferencias del mercado inmobiliario.
Por otro lado, el coeficiente asociado al número de habitaciones es negativo, lo cual podría explicarse porque, manteniendo constante el área construida, un mayor número de habitaciones implica espacios más pequeños o una redistribución del área que puede disminuir el valor percibido del inmueble.
En el gráfico se pueden observar algunos puntos que presentan valores relativamente altos de influencia. Estas observaciones generalmente corresponden a propiedades con características atípicas, como áreas construidas muy grandes o precios significativamente superiores al promedio del mercado.
Aunque estos valores pueden influir en la estimación de los coeficientes del modelo, también pueden representar propiedades reales del mercado inmobiliario, por lo que no necesariamente deben eliminarse. Sin embargo, su identificación es importante para evaluar la estabilidad del modelo y considerar posibles análisis adicionales.
#Estrato 5
vivienda2 <- data.frame(
areaconst = 300,
estrato = 5,
habitaciones = 5,
parqueaderos = 3,
banios = 3
)
predict(modelo2, vivienda2, interval="prediction")## fit lwr upr
## 1 675.0247 481.455 868.5945
#Estrato 6
vivienda2_6 <- data.frame(
areaconst = 300,
estrato = 6,
habitaciones = 5,
parqueaderos = 3,
banios = 3
)
predict(modelo2, vivienda2_6, interval="prediction")## fit lwr upr
## 1 735.9218 542.3141 929.5296
## # A tibble: 5 × 6
## barrio preciom areaconst habitaciones banios parqueaderos
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 san joaquin 260 300 5 4 1
## 2 seminario 670 300 6 5 3
## 3 melendez 370 300 5 6 3
## 4 cuarto de legua 410 296. 4 4 2
## 5 cuarto de legua 490 288 4 5 1
leaflet(ofertas5_v2) %>%
addTiles() %>%
addCircleMarkers(
lng = ~longitud,
lat = ~latitud,
radius = 7,
color = "green",
popup = ~paste(
"Barrio:", barrio,
"<br>Precio:", preciom, "millones",
"<br>Area:", areaconst,
"<br>Habitaciones:", habitaciones,
"<br>Banos:", banios,
"<br>Parqueaderos:", parqueaderos
)
)El análisis exploratorio de los apartamentos ubicados en la zona sur permitió identificar las principales características del mercado inmobiliario dentro de este segmento. En términos generales, se observó que el precio de las viviendas presenta una alta variabilidad, con valores que oscilan entre aproximadamente 75 y 1750 millones de pesos, aunque la mayor concentración de inmuebles se encuentra por debajo de los 400 millones, lo que sugiere la presencia de algunos valores extremos correspondientes a propiedades de mayor tamaño o características particulares.
El análisis de correlación mostró que el precio de los apartamentos está fuertemente relacionado con el área construida, el número de baños y el estrato socioeconómico, evidenciando que estos factores son determinantes en la formación del valor de mercado de las viviendas. En particular, el área construida presentó una de las relaciones más fuertes con el precio, lo cual es consistente con la lógica del mercado inmobiliario, donde viviendas más amplias suelen tener un mayor valor.
A partir de estas relaciones se estimó un modelo de regresión lineal múltiple que permitió explicar aproximadamente el 75% de la variabilidad del precio de los apartamentos, lo que indica un buen nivel de ajuste del modelo y su utilidad para realizar estimaciones del valor de viviendas con características específicas.
Con base en este modelo se realizaron predicciones para la segunda solicitud del cliente, correspondiente a un apartamento de 300 m², 5 habitaciones, 3 baños y 3 parqueaderos ubicado en la zona sur, considerando dos posibles estratos socioeconómicos. Para un estrato 5, el modelo estima un precio promedio aproximado de 675 millones de pesos, con un intervalo de predicción entre 481 y 868 millones. Por su parte, para un estrato 6, el valor estimado asciende a aproximadamente 736 millones de pesos, con un intervalo entre 542 y 930 millones. Estos resultados sugieren que el presupuesto disponible de 850 millones de pesos es suficiente para adquirir una vivienda con estas características dentro del mercado analizado.
Adicionalmente, se realizó una búsqueda dentro de la base de datos para identificar ofertas reales que cumplan con el presupuesto máximo establecido, seleccionando aquellas que presentan mayor similitud con las características solicitadas. Entre las cinco ofertas más cercanas se encontraron propiedades ubicadas en barrios como San Joaquín, Seminario, Meléndez y Cuarto de Legua, con precios que oscilan entre aproximadamente 260 y 670 millones de pesos. Estas viviendas presentan áreas construidas cercanas a los 300 m² y características similares en cuanto a número de habitaciones, baños y parqueaderos.
El análisis desarrollado permitió evaluar el mercado inmobiliario de la ciudad a partir de la base de datos disponible, con el fin de apoyar la toma de decisiones en la selección de viviendas que cumplan con las características solicitadas por el cliente. Mediante el uso de técnicas de análisis exploratorio de datos y modelos de regresión lineal múltiple, fue posible identificar las variables que más influyen en la formación del precio de las viviendas, entre las que destacan principalmente el área construida, el estrato socioeconómico, el número de baños y la disponibilidad de parqueaderos.
En el caso de la primera solicitud, correspondiente a una casa ubicada en la zona norte con aproximadamente 200 m² de área construida, el modelo estimó un valor cercano a 312 millones de pesos para estrato 4 y alrededor de 393 millones de pesos para estrato 5. Estos resultados indican que el presupuesto disponible de 350 millones de pesos permite encontrar opciones viables dentro del mercado, especialmente en viviendas de estrato 4 o propiedades que se encuentren ligeramente por debajo del valor promedio estimado por el modelo. A partir del análisis realizado se identificaron varias ofertas potenciales que cumplen con las características solicitadas y se encuentran dentro del presupuesto disponible.
Para la segunda solicitud, correspondiente a un apartamento de 300 m² ubicado en la zona sur, el modelo estimó precios aproximados de 675 millones de pesos para estrato 5 y 736 millones de pesos para estrato 6. Estos valores se encuentran dentro del límite del crédito preaprobado de 850 millones de pesos, lo cual indica que el cliente cuenta con suficiente capacidad financiera para acceder a este tipo de propiedades. Asimismo, el análisis permitió identificar varias ofertas reales en barrios como San Joaquín, Seminario, Meléndez y Cuarto de Legua, las cuales presentan características similares a las solicitadas y representan alternativas viables dentro del mercado.
En general, los modelos estimados presentaron un buen nivel de ajuste y permitieron explicar una proporción considerable de la variabilidad del precio de las viviendas. Aunque algunos supuestos del modelo presentaron ligeras desviaciones, los resultados obtenidos siguen siendo útiles como herramienta de apoyo para la toma de decisiones y para orientar el proceso de búsqueda de propiedades.
En conclusión, el análisis realizado proporciona a la agencia inmobiliaria C&A (Casas y Apartamentos) una base cuantitativa para asesorar al cliente en la selección de viviendas, permitiendo identificar opciones acordes con sus necesidades y presupuesto. Las ofertas identificadas representan alternativas viables que podrían ser presentadas al cliente como parte del proceso de negociación y selección final de las propiedades.
A partir de los análisis realizados, se pueden plantear algunas recomendaciones que permitirían fortalecer el modelo y mejorar la calidad de las predicciones obtenidas:
Aplicar una transformación logarítmica al precio de la vivienda (log(precio)), con el fin de reducir la asimetría de los datos y mejorar el cumplimiento de los supuestos de normalidad y homocedasticidad del modelo.
Evaluar la inclusión de variables adicionales que pueden influir en el precio, como barrio, antigüedad de la vivienda, tipo de vivienda o cercanía a servicios, lo que podría aumentar la capacidad explicativa del modelo.
Revisar y tratar posibles valores atípicos (outliers) identificados en el análisis exploratorio, ya que estos pueden afectar el ajuste del modelo y generar mayor variabilidad en las predicciones.
Probar modelos alternativos de predicción, como regresión regularizada (Ridge o Lasso) o modelos de árboles de decisión, para comparar su desempeño frente al modelo lineal utilizado.
Implementar validación del modelo, por ejemplo mediante partición de datos en entrenamiento y prueba o validación cruzada, con el fin de evaluar la capacidad de generalización del modelo en nuevos datos.
Refinar el sistema de recomendación de ofertas, incorporando más variables en la medida de similitud (por ejemplo estrato o ubicación), para que las viviendas sugeridas sean más comparables con la solicitada por el usuario.