La nueva empresa de María, C&A, con amplia experiencia, ha recibido dos solicitudes de una multinacional para ubicar a dos de sus trabajadores en la ciudad de Cali, Colombia. La empresa solicitante ha especificado los tipos de viviendas y los requisitos para la compra del inmueble, que son los siguientes:
| Características | Vivienda 1 | Vivienda 2 |
|---|---|---|
| Tipo | Casa | Apartamento |
| Área construida | 200 | 300 |
| Parqueaderos | 1 | 3 |
| Baños | 2 | 3 |
| Habitaciones | 4 | 5 |
| Estrato | 4 o 5 | 5 o 6 |
| Zona | Norte | Sur |
| Crédito preaprobado | 350 millones | 850 millones |
Colaboremos con la empresa C&A para identificar las mejores opciones que se ajusten a los requisitos del cliente.
La limpieza y descripción de los datos se encuentra publicada en el siguiente enlace https://rpubs.com/Ablancosegura/Prueba2 en el cual realizamos el analisis EDA, corregimos valores atipicos, corregimos valores duplicados, imputamos variables categoricas que significaban lo mismo, y por ultimo borramos los valores NA´S que al final fueron un 4.8% de los datos todo lo realizamos en la primera actividad del semestre anterior. (metodos y simulación estadistica)
TipoViviendaCasa <-ExpViviendaAnalisis[ExpViviendaAnalisis$tipo=="casa" & ExpViviendaAnalisis$zona=="zona norte",]
kable(head(TipoViviendaCasa,3), format = "markdown")
| id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 231 | zona norte | 2 | 3 | 180 | 138 | 1 | 2 | 5 | casa | la riviera | -76.49000 | 3.47400 |
| 4443 | zona norte | 2 | 5 | 850 | 496 | 2 | 4 | 6 | casa | santa mónica | -76.53162 | 3.46797 |
| 6028 | zona norte | 1 | 4 | 337 | 80 | 4 | 4 | 3 | casa | acopi | -76.54001 | 3.37234 |
##Validando si los datos de estos columnas contienen los filtros anteriores.
unique(TipoViviendaCasa$tipo)
## [1] "casa"
unique(TipoViviendaCasa$zona)
## [1] "zona norte"
Vamos a proceder con la validación para determinar si todas las casas realmente se encuentran ubicadas en la zona norte de la ciudad.
En general, la ubicación de la mayoría de las viviendas es adecuada y
se ajusta a las expectativas de los compradores. Sin embargo, hemos
observado que algunas de las propiedades se encuentran un tanto alejadas
de la zona norte de la ciudad. Este hecho podría atribuirse a posibles
errores en el proceso de marcado de las ubicaciones mediante el sistema
GPS durante el momento de realizar la oferta. Es importante tener en
cuenta estos casos particulares, ya que la ubicación es un factor clave
que influye significativamente en la decisión de compra de los clientes.
Por lo tanto, es fundamental abordar estos errores y asegurarnos de que
todas las propiedades se encuentren correctamente ubicadas y descritas
para garantizar la transparencia y la satisfacción de los clientes, por
ende procederemos a la eliminación de viviendas que no se encuentren en
la zona norte de la ciudad, las cuales se han identificados por tener
una latitud mayor a >= 3.44846 y una longitud mayor a -76.535507,
esto conforme al mapa de la alcaldia de cali que se encuentra en: https://idesc.cali.gov.co/download/mapas/zonas_geograficas.pdf
### Procederemos a la eliminación:
TipoViviendaCasas2 <- TipoViviendaCasa[TipoViviendaCasa$longitud >= -76.535507,]
TipoViviendaCasas2 <- TipoViviendaCasas2[TipoViviendaCasas2$latitud >= 3.44846,]
library(leaflet)
ofertas <- data.frame(
lat = TipoViviendaCasas2$latitud,
long = TipoViviendaCasas2$longitud
)
# Crea un mapa
map <- leaflet(ofertas) %>%
addTiles() %>%
addCircles(
lng = ~long,
lat = ~lat,
popup = c(~as.character(lat),~as.character(long) ),
color = "blue", radius = 2
)
map # Muestra el mapa
Con esta nueva selección de viviendas, podemos estar completamente seguros de que todas nuestras propiedades están ubicadas en la zona norte de la ciudad.
Precio x Area (Cor 0.73): Existe una fuerte correlación positiva entre el precio y el área de una propiedad. Esto significa que a medida que el área de la propiedad aumenta, también lo hace el precio de venta, y viceversa.
Precio x Estrato (Cor 0.64):Indica una relación moderadamente fuerte entre estas dos variables. En este contexto, un valor positivo de correlación sugiere que a medida que el estrato de la propiedad aumenta, también lo hace el precio de venta. Por lo tanto, las propiedades ubicadas en estratos más altos tienden a tener precios de venta más altos, mientras que las propiedades en estratos más bajos tienden a tener precios más bajos.
Precio x Numero de Baños (Cor: 0.57):Esta correlación sugiere una relación moderada entre el precio de venta y el número de baños de una propiedad. Un valor positivo de correlación indica que a medida que aumenta el número de baños, también tiende a aumentar el precio de venta de la propiedad. Esto sugiere que las propiedades con más baños tienden a tener precios de venta más altos en comparación con aquellas con menos baños.
Precio x Numero de Habitaciones (Cor: 0.37):Esta correlación indica una relación débil entre el precio de venta y el número de habitaciones de una propiedad. Un valor positivo de correlación sugiere que, en general, a medida que aumenta el número de habitaciones, también tiende a aumentar el precio de venta de la propiedad, aunque la asociación es menos fuerte en comparación con otras variables.
modeloRLM = lm(preciom ~ areaconst + estrato + habitaciones +parqueaderos + banios, data = TipoViviendaCasas2 )
summary(modeloRLM)
##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = TipoViviendaCasas2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -721.70 -65.03 -13.65 36.26 938.44
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -219.38445 32.46468 -6.758 3.82e-11 ***
## areaconst 0.64575 0.04653 13.880 < 2e-16 ***
## estrato 80.86168 7.88416 10.256 < 2e-16 ***
## habitaciones 4.30285 5.01209 0.858 0.39102
## parqueaderos 23.54787 5.08028 4.635 4.53e-06 ***
## banios 18.01026 6.56116 2.745 0.00626 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 130.3 on 513 degrees of freedom
## Multiple R-squared: 0.6734, Adjusted R-squared: 0.6702
## F-statistic: 211.5 on 5 and 513 DF, p-value: < 2.2e-16
Intercepto (Intercepto): El valor del intercepto es -219.38445 millones de pesos COP. Esto significa que cuando todas las variables independientes (área construida, estrato, parqueaderos, habitaciones y baños) son cero, el precio estimado de la vivienda es de -204.25337 millones de pesos COP.
Coeficientes:
Para areaconst, el coeficiente es 0.64. Esto indica que un aumento de una unidad en el área construida se asocia, en promedio, con un aumento de 0.64 millones de pesos COP en el precio de la vivienda, manteniendo todas las demás variables constantes.
Para estrato, el coeficiente es 80.86. Esto significa que un aumento de una unidad en el estrato se asocia, en promedio, con un aumento de 80.86 millones de pesos COP en el precio de la vivienda, manteniendo todas las demás variables constantes.
Para parqueaderos, el coeficiente es 23.54. Esto sugiere que un parqueadero adicional se asocia, en promedio, con un aumento de 23.54 millones de pesos COP en el precio de la vivienda, manteniendo todas las demás variables constantes.
Para habitaciones, Por cada unidad adicional en el número de habitaciones, se espera que el precio de la vivienda aumente en promedio alrededor de 4.30 unidades monetarias, manteniendo constantes todas las demás variables en el modelo.
Para baños, el coeficiente es 18.01. Indica que un baño adicional se asocia, en promedio, con un aumento de 18.01 millones de pesos COP en el precio de la vivienda, manteniendo todas las demás variables constantes.
Valores p (Valores p): Todos los valores p para los coeficientes son muy pequeños, lo que sugiere que todas las variables independientes son significativas en el modelo.
R-cuadrado: El coeficiente de determinación R-cuadrado es 0.6734, lo que significa que alrededor del 67.34% de la variabilidad en el precio de la vivienda se explica por las variables incluidas en el modelo.
Para mejorar el modelo se podrian tener encuenta las siguientes opciones:
Convertir la variable estrato en una variable binaria: Dado que los estratos para la zona norte se encuentran típicamente en el rango de 3 a 6, podría ser beneficioso convertir la variable estrato en una variable binaria que indique si la vivienda está en un estrato alto o no. Esto podría ayudar a capturar mejor el efecto del estrato en el precio de la vivienda.
Validar la ubicación de las casas eliminadas: Sería prudente verificar si las casas eliminadas previamente de los datos realmente pertenecían a la zona norte de la ciudad. Si hay evidencia de que estas casas fueron mal referenciadas en el GPS y pertenecen al norte, podríamos reconsiderar incluirlas en el análisis para evitar la pérdida de información importante.
Incluir la variable barrio en el modelo: Podríamos incorporar la variable barrio al modelo, codificándola numéricamente. Esto podría permitir capturar las diferencias de precio entre diferentes barrios, lo que puede ser relevante para el mercado de viviendas.
1. Supuesto de Normalidad.
options(scipen = 999)
normalidad <- modeloRLM$residuals
shapiro.test(normalidad)
##
## Shapiro-Wilk normality test
##
## data: normalidad
## W = 0.8481, p-value < 0.00000000000000022
W es 0.84825.
El valor de la estadística de prueba de la distribución de Shapiro-Wilk está cerca de 1, lo que sugiere que los datos tienden a seguir una distribución normal, pero no lo suficiente como para afirmar con certeza que provienen de una distribución normal.
p-value
El valor p es < 0.00000000000000022, lo que significa que es muy pequeño, hay evidencia suficiente para rechazar la hipótesis nula de que los datos provienen de una distribución normal. En otras palabras, hay evidencia de que los datos no son normalmente distribuidos.
2. Supuesto de Varianza Constante.
options(scipen = 999)
gqtest(modeloRLM)
##
## Goldfeld-Quandt test
##
## data: modeloRLM
## GQ = 1.1503, df1 = 254, df2 = 253, p-value = 0.1329
## alternative hypothesis: variance increases from segment 1 to 2
Dado que el valor p (0.1329) es mayor que el nivel de significancia típico de 0.05, no hay suficiente evidencia para rechazar la hipótesis nula. En otras palabras, no hay suficiente evidencia para concluir que la varianza difiere significativamente entre los dos segmentos. Esto sugiere que no hay evidencia de heterocedasticidad en los datos.
3. Independencia de los errores
options(scipen = 999)
dwtest(modeloRLM)
##
## Durbin-Watson test
##
## data: modeloRLM
## DW = 1.8989, p-value = 0.1229
## alternative hypothesis: true autocorrelation is greater than 0
El estadístico de Durbin-Watson (DW) es igual a 1.8989, y el valor p asociado es 0.0001469. Este test evalúa la presencia de autocorrelación en los residuos de un modelo. En este caso, el valor p es significativamente pequeño (menor que 0.05), lo que sugiere que hay evidencia estadísticamente significativa de autocorrelación positiva en los residuos del modelo. La hipótesis alternativa indica que la autocorrelación positiva es mayor que cero.
3. Multicolinealidad
par(mfrow = c(2, 2))
plot(modeloRLM)
vif(modeloRLM)
## areaconst estrato habitaciones parqueaderos banios
## 1.689786 1.611565 1.829670 1.286544 2.283445
Los valores VIF anteriores revelan una leve multicolinealidad entre las variables, siendo el número de baños el que presenta el valor más alto, con 2.28. Aunque este valor sugiere cierta correlación entre el número de baños y otras variables predictoras, no podemos eliminar esta característica del modelo, ya que los requisitos del cliente estipulan que el número de baños debe ser al menos 3. Por lo tanto, en lugar de eliminar esta variable, debemos mantenerla en el modelo para garantizar que se ajuste a las preferencias del cliente y, al mismo tiempo, explorar formas de mitigar la multicolinealidad mediante técnicas como la regularización o la selección de características.
En términos generales, el modelo de regresión nos da una buena idea de cómo las diferentes características afectan el precio de las viviendas. Pero debemos ser conscientes de algunas limitaciones que encontramos al verificar nuestros supuestos. Por ejemplo, los residuos del modelo no se ajustan perfectamente a una distribución normal y parece que la varianza de los errores podría no ser constante.
predict(modeloRLM,
newdata = data.frame(areaconst = 200,
estrato = c(4, 5),
parqueaderos = 1,
habitaciones = 4,
banios=2)
,interval = "confidence" )
## fit lwr upr
## 1 309.9924 291.1207 328.8641
## 2 390.8541 363.1416 418.5666
Los resultados del modelo son contundentes y ofrecen dos opciones estimados de compras para el cliente.
Opción A: Para el primer caso (con estrato 4), el modelo predice un precio de vivienda de aproximadamente 310, con un intervalo de confianza del 95% entre aproximadamente 291 y 329.
Opción B: Para el segundo caso (con estrato 5), el modelo predice un precio de vivienda de aproximadamente 391, con un intervalo de confianza del 95% entre aproximadamente 363 y 419.
OfertasCasas <- subset(TipoViviendaCasas2,estrato == 4 & areaconst >= 200 & preciom <=350 & parqueaderos >=1 & banios>=2 & habitaciones >= 4)
OfertasCasas <- as.data.frame(OfertasCasas)
knitr::kable(OfertasCasas, format = "markdown")
| id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 5031 | zona norte | 3 | 4 | 350 | 350.0 | 1 | 4 | 5 | casa | salomia | -76.53464 | 3.44987 |
| 2544 | zona norte | 1 | 4 | 340 | 264.5 | 2 | 4 | 4 | casa | vipasa | -76.52096 | 3.47665 |
| 952 | zona norte | 2 | 4 | 330 | 275.0 | 2 | 3 | 5 | casa | la merced | -76.50647 | 3.47516 |
| 1144 | zona norte | 1 | 4 | 320 | 200.0 | 2 | 4 | 4 | casa | la merced | -76.51156 | 3.48029 |
| 1822 | zona norte | 1 | 4 | 340 | 295.0 | 2 | 2 | 4 | casa | vipasa | -76.51777 | 3.48060 |
| 1020 | zona norte | 2 | 4 | 230 | 250.0 | 2 | 3 | 5 | casa | la merced | -76.50799 | 3.47424 |
| 4458 | zona norte | 2 | 4 | 315 | 270.0 | 2 | 4 | 4 | casa | el bosque | -76.53176 | 3.48780 |
| 4488 | zona norte | 1 | 4 | 350 | 265.0 | 2 | 4 | 5 | casa | Prados Del Norte | -76.53198 | 3.45165 |
| 1108 | zona norte | 2 | 4 | 330 | 260.0 | 1 | 3 | 4 | casa | la merced | -76.51060 | 3.48108 |
| 937 | zona norte | 2 | 4 | 350 | 280.0 | 2 | 3 | 4 | casa | la merced | -76.50603 | 3.46643 |
oferta <- data.frame(
preciom = OfertasCasas$preciom,
lat = OfertasCasas$latitud,
long = OfertasCasas$longitud
)
pal <- colorNumeric(palette = "RdYlBu", domain = OfertasCasas$preciom)
# Crea un mapa
map <- leaflet(oferta) %>%
addTiles() %>%
addCircleMarkers(
lng = ~long,
lat = ~lat,
popup = ~as.character(preciom),
#color = "blue",
radius = (~preciom / 40),
color = ~pal(preciom), # Escala de colores basada en los valores
#palette = "YlOrRd", # Paleta de colores a utilizar
stroke = TRUE, # Sin borde en los círculos
fillOpacity = 0.8,
popupOptions = popupOptions(autoOpen = TRUE)
)
map # Muestra el mapa
1.Casa 1020: Destaca como la opción más asequible entre todas las ofertas, con un precio de 230 millones de pesos (COP). Con una generosa área construida de 250 metros cuadrados, cuenta con dos parqueaderos, tres baños y cinco habitaciones. Estratégicamente ubicada en la zona norte de la ciudad, en el barrio La Merced.
2.Casa 4458: sobresale como una opción atractiva entre las propiedades disponibles, con un valor de 315 millones de pesos (COP). Ofrece una amplia área construida de 270 metros cuadrados, junto con dos parqueaderos. Además, cuenta con cuatro baños y cuatro habitaciones, proporcionando un espacio cómodo para la familia. Estratégicamente ubicada en la Zona Norte de la ciudad, específicamente en el barrio El Bosque.
3.Casa 1144: destaca como una opción atractiva en el mercado, con un precio de 320 millones de pesos (COP). Ofrece una cómoda área construida de 200 metros cuadrados, así como dos espacios de estacionamiento. Con cuatro baños y cuatro habitaciones, ubicada estratégicamente en la Zona Norte de la ciudad, en el barrio La Merced.
4. Casa 4488: Se presenta como una excelente opción en el mercado, con un precio de 350 millones de pesos (COP). Ofrece una generosa área construida de 265 metros cuadrados, junto con dos espacios de estacionamiento. Con cuatro baños y cinco habitaciones,ubicada en la Zona Norte de la ciudad, en el barrio Prados Del Norte.
5. Casa 5031 Con un precio de 350 millones de pesos (COP). Ofrece una amplia área construida de 350 metros cuadrados y cuenta con un espacio de estacionamiento. Con cuatro baños y cinco habitaciones, esta casa brinda un amplio y confortable espacio para la familia, Estratégicamente ubicada en la Zona Norte de la ciudad, en el barrio Salomia.
La Casa 1020 emerge como la elección más idónea para el cliente, al cumplir con todos los requisitos necesarios y ajustarse a un presupuesto considerablemente por debajo del crédito aprobado, el cual alcanza los 350 millones de pesos colombianos (COP). Con un diferencial de aproximadamente 120 millones de COP, esta opción brinda un margen financiero cómodo para otros gastos o inversiones adicionales.
TipoViviendaCasa <-ExpViviendaAnalisis[ExpViviendaAnalisis$tipo=="apartamento" & ExpViviendaAnalisis$zona=="zona sur",]
kable(head(TipoViviendaCasa,3), format = "markdown")
| id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2797 | zona sur | 3 | 4 | 210 | 65.00 | 1 | 2 | 3 | apartamento | ciudad bochalema | -76.52200 | 3.37137 |
| 1941 | zona sur | 4 | 4 | 155 | 58.00 | 1 | 3 | 3 | apartamento | el caney | -76.51846 | 3.38300 |
| 4184 | zona sur | 2 | 5 | 250 | 66.37 | 1 | 2 | 3 | apartamento | ciudad bochalema | -76.53000 | 3.36306 |
##Validando si los datos de estos columnas contienen los filtros anteriores.
unique(TipoViviendaCasa$tipo)
## [1] "apartamento"
unique(TipoViviendaCasa$zona)
## [1] "zona sur"
Vamos a proceder con la validación para determinar si todas las casas realmente se encuentran ubicadas en la zona norte de la ciudad.
En general, la ubicación de la mayoría de las viviendas es adecuada y
se ajusta a las expectativas de los compradores. Sin embargo, hemos
observado que algunas de las propiedades se encuentran un tanto alejadas
de la zona sur de la ciudad. Este hecho podría atribuirse a posibles
errores en el proceso de marcado de las ubicaciones mediante el sistema
GPS durante el momento de realizar la oferta. Es importante tener en
cuenta estos casos particulares, ya que la ubicación es un factor clave
que influye significativamente en la decisión de compra de los clientes.
Por lo tanto, es fundamental abordar estos errores y asegurarnos de que
todas las propiedades se encuentren correctamente ubicadas y descritas
para garantizar la transparencia y la satisfacción de los clientes, por
ende procederemos a la eliminación de viviendas que no se encuentren en
la zona sur de la ciudad, las cuales se han identificados por tener una
latitud mayor a >= 3.41396 y una longitud mayor a -76.509 y -76.551,
esto conforme al mapa de la alcaldia de cali que se encuentra en: https://idesc.cali.gov.co/download/mapas/zonas_geograficas.pdf
### Procederemos a la eliminación:
TipoViviendaCasas2 <- TipoViviendaCasa[TipoViviendaCasa$longitud <= -76.509,]
TipoViviendaCasas2 <- TipoViviendaCasas2[TipoViviendaCasas2$longitud >= -76.551,]
TipoViviendaCasas2 <- TipoViviendaCasas2[TipoViviendaCasas2$latitud <= 3.41396,]
oferta <- data.frame(
lat = TipoViviendaCasas2$latitud,
long = TipoViviendaCasas2$longitud
)
# Crea un mapa
map <- leaflet(oferta) %>%
addTiles() %>%
addCircles(
lng = ~long,
lat = ~lat,
popup = ~as.character(lat),
color = "blue", radius = 10
)
map # Muestra el mapa
Con esta nueva selección de viviendas, podemos estar completamente seguros de que todas nuestras propiedades están ubicadas en la zona sur de la ciudad.
Precio x Area (Cor 0.77): Existe una fuerte correlación positiva entre el precio y el área de una propiedad. Esto significa que a medida que el área de la propiedad aumenta, también lo hace el precio de venta, y viceversa.
Precio x Estrato (Cor 0.67):Indica una relación moderadamente fuerte entre estas dos variables. En este contexto, un valor positivo de correlación sugiere que a medida que el estrato de la propiedad aumenta, también lo hace el precio de venta. Por lo tanto, las propiedades ubicadas en estratos más altos tienden a tener precios de venta más altos, mientras que las propiedades en estratos más bajos tienden a tener precios más bajos.
Precio x Numero de Baños (Cor: 0.75):Esta correlación sugiere una relación fuerte entre el precio de venta y el número de baños de una propiedad. Un valor positivo de correlación indica que a medida que aumenta el número de baños, también tiende a aumentar el precio de venta de la propiedad. Esto sugiere que las propiedades con más baños tienden a tener precios de venta más altos en comparación con aquellas con menos baños.
Precio x Numero de Habitaciones (Cor: 0.35):Esta correlación indica una relación débil entre el precio de venta y el número de habitaciones de una propiedad. Un valor positivo de correlación sugiere que, en general, a medida que aumenta el número de habitaciones, también tiende a aumentar el precio de venta de la propiedad, aunque la asociación es menos fuerte en comparación con otras variables.
modeloRLM = lm(preciom ~ areaconst + estrato + habitaciones +parqueaderos + banios, data = TipoViviendaCasas2 )
summary(modeloRLM)
##
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
## banios, data = TipoViviendaCasas2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1067.66 -38.50 -1.79 38.80 908.70
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -268.45650 15.34333 -17.497 < 0.0000000000000002 ***
## areaconst 1.26664 0.05689 22.265 < 0.0000000000000002 ***
## estrato 51.65778 3.16462 16.324 < 0.0000000000000002 ***
## habitaciones -15.38556 3.98408 -3.862 0.000116 ***
## parqueaderos 93.21141 4.75090 19.620 < 0.0000000000000002 ***
## banios 49.75222 3.56293 13.964 < 0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 93.56 on 2124 degrees of freedom
## Multiple R-squared: 0.778, Adjusted R-squared: 0.7775
## F-statistic: 1489 on 5 and 2124 DF, p-value: < 0.00000000000000022
Intercepto (Intercepto): El valor del intercepto es -268.5 millones de pesos COP. Esto significa que cuando todas las variables independientes (área construida, estrato, parqueaderos, habitaciones y baños) son cero, el precio estimado de la vivienda es de -268.5 millones de pesos COP.
Coeficientes:
Por cada unidad adicional de área construida, el precio de la casa aumenta en promedio aproximadamente 1.27 unidades monetarias.
Por cada unidad adicional en el estrato, el precio de la casa aumenta en promedio alrededor de 51.66 unidades monetarias.
Por cada unidad adicional en el número de parqueaderos, el precio de la casa aumenta en promedio aproximadamente 94.21 unidades monetarias.
Por cada unidad adicional en el número de baños, el precio de la casa aumenta en promedio aproximadamente 45.75 unidades monetarias.
Valores p (Valores p): Todos los valores p para los coeficientes son muy pequeños, lo que sugiere que todas las variables independientes son significativas en el modelo.
R-cuadrado: El coeficiente de determinación R-cuadrado es 0.7775, lo que significa que alrededor del 77.75% de la variabilidad en el precio de la vivienda se explica por las variables incluidas en el modelo.
Para mejorar el modelo se podrian tener encuenta las siguientes opciones:
Convertir la variable estrato en una variable binaria: Dado que los estratos para la zona norte se encuentran típicamente en el rango de 3 a 6, podría ser beneficioso convertir la variable estrato en una variable binaria que indique si la vivienda está en un estrato alto o no. Esto podría ayudar a capturar mejor el efecto del estrato en el precio de la vivienda.
Validar la ubicación de las casas eliminadas: Sería prudente verificar si las casas eliminadas previamente de los datos realmente pertenecían a la zona norte de la ciudad. Si hay evidencia de que estas casas fueron mal referenciadas en el GPS y pertenecen al norte, podríamos reconsiderar incluirlas en el análisis para evitar la pérdida de información importante.
Incluir la variable barrio en el modelo: Podríamos incorporar la variable barrio al modelo, codificándola numéricamente. Esto podría permitir capturar las diferencias de precio entre diferentes barrios, lo que puede ser relevante para el mercado de viviendas.
1. Supuesto de Normalidad.
options(scipen = 999)
normalidad <- modeloRLM$residuals
shapiro.test(normalidad)
##
## Shapiro-Wilk normality test
##
## data: normalidad
## W = 0.76934, p-value < 0.00000000000000022
W es 0.76963.
El valor de la estadística de prueba de la distribución de Shapiro-Wilk está cerca de 1, lo que sugiere que los datos tienden a seguir una distribución normal, pero no lo suficiente como para afirmar con certeza que provienen de una distribución normal.
p-value
El valor p es < 0.00000000000000022, lo que significa que es muy pequeño, hay evidencia suficiente para rechazar la hipótesis nula de que los datos provienen de una distribución normal. En otras palabras, hay evidencia de que los datos no son normalmente distribuidos.
2. Supuesto de Varianza Constante.
options(scipen = 999)
gqtest(modeloRLM)
##
## Goldfeld-Quandt test
##
## data: modeloRLM
## GQ = 0.98462, df1 = 1059, df2 = 1059, p-value = 0.5995
## alternative hypothesis: variance increases from segment 1 to 2
Dado que el valor p (0.5995) es mayor que el nivel de significancia típico de 0.05, no hay suficiente evidencia para rechazar la hipótesis nula. En otras palabras, no hay suficiente evidencia para concluir que la varianza difiere significativamente entre los dos segmentos. Esto sugiere que no hay evidencia de heterocedasticidad en los datos.
3. Independencia de los errores
options(scipen = 999)
dwtest(modeloRLM)
##
## Durbin-Watson test
##
## data: modeloRLM
## DW = 1.8503, p-value = 0.0002657
## alternative hypothesis: true autocorrelation is greater than 0
El estadístico de Durbin-Watson (DW) es igual a 1.8435, y el valor p asociado es 0.0001469. Este test evalúa la presencia de autocorrelación en los residuos de un modelo. En este caso, el valor p es significativamente pequeño (menor que 0.05), lo que sugiere que hay evidencia estadísticamente significativa de autocorrelación positiva en los residuos del modelo. La hipótesis alternativa indica que la autocorrelación positiva es mayor que cero.
3. Multicolinealidad
par(mfrow = c(2, 2))
plot(modeloRLM)
vif(modeloRLM)
## areaconst estrato habitaciones parqueaderos banios
## 2.173760 1.676921 1.376160 2.074059 2.647172
Los valores VIF anteriores revelan una leve multicolinealidad entre las variables, siendo el número de baños el que presenta el valor más alto, con 2.64. Aunque este valor sugiere cierta correlación entre el número de baños y otras variables predictoras, no podemos eliminar esta característica del modelo, ya que los requisitos del cliente estipulan que el número de baños debe ser al menos 3. Por lo tanto, en lugar de eliminar esta variable, debemos mantenerla en el modelo para garantizar que se ajuste a las preferencias del cliente y, al mismo tiempo, explorar formas de mitigar la multicolinealidad mediante técnicas como la regularización o la selección de características.
En líneas generales, el modelo de regresión proporciona una valiosa perspectiva sobre cómo diversas características influyen en el precio de las viviendas. Sin embargo, debemos tener en cuenta ciertas limitaciones que surgen al verificar nuestros supuestos. Por ejemplo, los residuos del modelo no se adhieren perfectamente a una distribución normal y existe la posibilidad de que la varianza de los errores no sea constante. Además, el test de Durbin-Watson revela una autocorrelación positiva en los residuos, lo que indica una dependencia entre las observaciones a lo largo del tiempo. Estas limitaciones sugieren que el modelo puede beneficiarse de ajustes adicionales para mejorar su capacidad predictiva y la validez de sus conclusiones.
predict(modeloRLM,
newdata = data.frame(areaconst = 300,
estrato = c(5, 6),
parqueaderos = 3,
habitaciones = 5,
banios=3)
,interval = "confidence" )
## fit lwr upr
## 1 721.7887 697.6303 745.9471
## 2 773.4465 749.4189 797.4741
Los resultados del modelo son contundentes y ofrecen dos opciones estimados de compras para el cliente.
Opción A: Con un precio promedio estimado de 721.79 millones de pesos colombianos, con un intervalo de confianza del 95% entre aproximadamente 697.63 y 745.95 y en estrato 5
Opción B: el modelo predice un precio de vivienda de aproximadamente 773.44, con un intervalo de confianza del 95% entre aproximadamente 749.41 y 797.47.
OfertasCasas <- subset(TipoViviendaCasas2,estrato >=5 & areaconst >= 300 & preciom <=850 & parqueaderos >=3 & banios>=3 & habitaciones >= 5)
OfertasCasas <- as.data.frame(OfertasCasas)
knitr::kable(OfertasCasas, format = "markdown")
| id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud |
|---|
No existe una oferta exacta para la vivienda tipo 2
apartamentos ubicados en la zona sur con las caracteristicas que
requiere el cliente.
Ahora tenemos diferentes opciones que puede tomar el cliente:
OfertasCasas <- subset(TipoViviendaCasas2,estrato >=5 & areaconst >= 300 & preciom <=850 & parqueaderos >=2 & banios>=2 & habitaciones >= 4)
OfertasCasas <- as.data.frame(OfertasCasas)
knitr::kable(OfertasCasas, format = "markdown")
| id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 4952 | zona sur | 4 | 5 | 650 | 600 | 2 | 4 | 5 | apartamento | el ingenio | -76.53400 | 3.38100 |
| 4394 | zona sur | 3 | 5 | 690 | 486 | 2 | 4 | 4 | apartamento | el ingenio | -76.53111 | 3.38292 |
| 7658 | zona sur | 6 | 5 | 520 | 320 | 2 | 4 | 4 | apartamento | cuarto de legua | -76.55100 | 3.40900 |
oferta <- data.frame(
preciom = OfertasCasas$preciom,
lat = OfertasCasas$latitud,
long = OfertasCasas$longitud
)
pal <- colorNumeric(palette = "RdYlBu", domain = OfertasCasas$preciom)
# Crea un mapa
map <- leaflet(oferta) %>%
addTiles() %>%
addCircleMarkers(
lng = ~long,
lat = ~lat,
popup = ~as.character(preciom),
#color = "blue",
radius = (~preciom / 40),
color = ~pal(preciom), # Escala de colores basada en los valores
#palette = "YlOrRd", # Paleta de colores a utilizar
stroke = TRUE, # Sin borde en los círculos
fillOpacity = 0.8,
popupOptions = popupOptions(autoOpen = TRUE)
)
map # Muestra el mapa
1. Apartamento 4952: Se destaca como una opción destacada en términos de espacio y comodidad. Con un precio de 650 millones de pesos (COP), ofrece una generosa área construida de 600 metros cuadrados, con dos espacios de estacionamiento, cuatro baños y cinco habitaciones. Estratégicamente ubicado en la zona sur de la ciudad, en el barrio El Ingenio.
2. Apartamento 4394: Con un precio de 690 millones de pesos (COP), este apartamento ofrece una buena relación entre su tamaño y su valor. Con una área construida de 486 metros cuadrados, cuenta con dos espacios de estacionamiento, cuatro baños y cuatro habitaciones. Ubicado en la zona sur de la ciudad, en el barrio El Ingenio.
3. Apartamento 7658: Destacando por su atractivo precio de 520 millones de pesos (COP), este apartamento ofrece una superficie construida de 320 metros cuadrados. Cuenta con dos espacios de estacionamiento, cuatro baños y cuatro habitaciones. Ubicado en la zona sur de la ciudad, en el barrio Cuarto de Legua.
Debido a que no cumplimos con las características principales del cliente, estamos a la espera de que tome en cuenta las opciones anteriores para que podamos llegar a un acuerdo satisfactorio.