Maria comenzó como agente de bienes raíces en Cali hace 10 años. Después de laborar dos años para una empresa nacional, se traslado a Bogotá y trabajó para otra agencia de bienes raíces. Sus amigos y familiares la convencieron de que con su experiencia y conocimientos del negocio debía abrir su propia agencia. Terminó por adquirir la licencia de intermediario y al poco tiempo fundó su propia compañía, C&A (Casas y Apartamentos) en Cali. Santiago y Lina, dos vendedores de la empresa anterior aceptaron trabajar en la nueva compaña. En la actualidad ocho agentes de bienes raíces colaboran con ella en C&A.
Actualmente las ventas de bienes raíces en Cali se han visto disminuidas de manera significativa en lo corrido del año. Durante este periodo muchas instituciones bancarias de ahorro y vivienda están prestando grandes sumas de dinero para la industria y la construcción comercial y residencial. Cuando el efecto producto de las tensiones políticas y sociales disminuya, se espera que la actividad económica de este sector se reactive.
Hace dos días, María recibió una carta solicitando asesoría para la compra de dos viviendas por parte de una compañía internacional que desea ubicar a dos de sus empleados con sus familias en la ciudad. Las solicitudes incluyen las siguientes condiciones:
| 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 |
Se debe ayudar a María a responder la solicitud, mediante técnicas modelación que usted conoce. Ella requiere le envíe un informe ejecutivo donde analice los dos casos y sus recomendaciones (Informe). Como soporte del informe debe anexar las estimaciones, validaciones y comparación de modelos requeridos (Anexos).
Resolvemos el problema de la siguiente forma:
PRIMER ANÁLISIS - CASAS ZONA NORTE
#install.packages("devtools") # solo la primera vez
#devtools::install_github("dgonxalex80/paqueteMODELOS", force =TRUE)
library(paqueteMODELOS)
data("vivienda")
#vivienda <- na.omit(vivienda)
data_vivienda1 = subset(vivienda, tipo == "Casa" & zona == "Zona Norte")
data_vivienda1<-data_vivienda1[data_vivienda1$habitaciones != 0, ]#excluir apartamentos sin habitaciones
#data_vivienda1 = subset(vivienda, tipo == "Casa" & zona == "Zona Norte" & areaconst >= 200 & parqueaderos == 1& banios == 2 & habitaciones == 4 )#para filtrar las condiciones pedidas
kable(head(data_vivienda1))
| 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 |
| 4460 | Zona Norte | 02 | 4 | 625 | 355 | 3 | 5 | 5 | Casa | acopi | -76.53179 | 3.40590 |
| 6081 | Zona Norte | 02 | 5 | 750 | 237 | 2 | 6 | 6 | Casa | acopi | -76.54044 | 3.36862 |
| 7824 | Zona Norte | 02 | 4 | 600 | 160 | 1 | 4 | 5 | Casa | acopi | -76.55210 | 3.42125 |
#data_vivienda1
Al realizar el filtro anterior se observan 702 registros(filas) y 13 variables excluyendo las casas que no presentan habitaciones.
A continuación visualizamos la distribución de los inmuebles por tipo y por zona sin excluir los inmuebles sin habitaciones
base1_table = table(vivienda$zona, vivienda$tipo)
kable(base1_table, caption = "Tabla de distribución por tipo y zona")
| Apartamento | Casa | |
|---|---|---|
| Zona Centro | 24 | 100 |
| Zona Norte | 1198 | 722 |
| Zona Oeste | 1029 | 169 |
| Zona Oriente | 62 | 289 |
| Zona Sur | 2787 | 1939 |
# install.packages("leaflet")
library(leaflet)
## Warning: package 'leaflet' was built under R version 4.2.3
colores <- colorFactor(palette = c( "green"), domain = data_vivienda1$zona)
# se crea el mapa con las Casas según su latitud y longitud según el color marcado en el paso anterior.
mapa <- leaflet(data_vivienda1) %>%
addTiles() %>%
addCircleMarkers(lng = ~longitud, lat = ~latitud, color = ~colores(zona), radius = 4)
# Ver Mapa
mapa
Con lo observado en el mapa, parece que la base de datos tiene una problemas ya que aunque que muchas viviendas que indican su ubicación en la zona norte, en el mapa aparecen en otras zonas, esto se puede deber quizá a errores en los datos, es decir, a su digitación.
# Calculamos las medidas descriptivas de las variables
library(summarytools)
summarytools::descr(data_vivienda1[,4:9])
## Descriptive Statistics
## data_vivienda1
## N: 702
##
## areaconst banios estrato habitaciones parqueaderos preciom
## ----------------- ----------- -------- --------- -------------- -------------- ---------
## Mean 262.95 3.59 4.21 4.64 2.18 444.20
## Std.Dev 167.15 1.48 0.99 1.69 1.41 268.48
## Min 30.00 0.00 3.00 1.00 1.00 89.00
## Q1 140.00 2.00 3.00 3.00 1.00 257.00
## Median 240.00 3.00 4.00 4.00 2.00 390.00
## Q3 337.00 4.00 5.00 5.00 3.00 550.00
## Max 1440.00 10.00 6.00 10.00 10.00 1940.00
## MAD 148.26 1.48 1.48 1.48 1.48 222.39
## IQR 196.75 2.00 2.00 2.00 2.00 292.25
## CV 0.64 0.41 0.23 0.36 0.64 0.60
## Skewness 1.89 0.80 0.05 1.15 1.87 1.79
## SE.Skewness 0.09 0.09 0.09 0.09 0.12 0.09
## Kurtosis 6.45 1.04 -1.27 1.11 4.65 4.79
## N.Valid 702.00 702.00 702.00 702.00 432.00 702.00
## Pct.Valid 100.00 100.00 100.00 100.00 61.54 100.00
#data_apartamentos = subset(vivienda, tipo == "Apartamento" )
# install.packages("PerformanceAnalytics")
library(PerformanceAnalytics)
chart.Correlation(data_vivienda1[,4:9], histogram = TRUE, method = "pearson")
#chart.Correlation(columnas_seleccionadas, histogram = F, pch = 19)
#data_apartamentos
#vivienda
#str(data_apartamentos)
correlation_test11 <- cor.test(data_vivienda1$preciom, data_vivienda1$areaconst, method = "pearson")
correlation_test12 <- cor.test(data_vivienda1$preciom, data_vivienda1$estrato, method = "pearson")
correlation_test22 <- cor.test(data_vivienda1$preciom, data_vivienda1$banios, method = "pearson")
correlation_test32 <- cor.test(data_vivienda1$preciom, data_vivienda1$habitaciones, method = "pearson")
correlation_test11
##
## Pearson's product-moment correlation
##
## data: data_vivienda1$preciom and data_vivienda1$areaconst
## t = 28.456, df = 700, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.6960834 0.7649033
## sample estimates:
## cor
## 0.7323582
correlation_test12
##
## Pearson's product-moment correlation
##
## data: data_vivienda1$preciom and data_vivienda1$estrato
## t = 20.844, df = 700, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.5709912 0.6625008
## sample estimates:
## cor
## 0.6188413
correlation_test22
##
## Pearson's product-moment correlation
##
## data: data_vivienda1$preciom and data_vivienda1$banios
## t = 17.516, df = 700, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.4983786 0.6014474
## sample estimates:
## cor
## 0.5520181
correlation_test32
##
## Pearson's product-moment correlation
##
## data: data_vivienda1$preciom and data_vivienda1$habitaciones
## t = 10.78, df = 700, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.3120334 0.4390569
## sample estimates:
## cor
## 0.3773184
| Coeficiente de correlación | ||
|---|---|---|
| Precio | ||
| Área | Coeficiente de correlación = 0.73, Intervalo de confianza (0.69, 0.76), p-valor \(2.2e^{-16}\) | |
| Estrato | Coeficiente de correlación = 0.61, Intervalo de confianza (0.57, 0.66), p-valor \(2.2e^{-16}\) | |
| Número de Baños | Coeficiente de correlación = 0.55, Intervalo de confianza (0.49, 0.60), p-valor \(2.2e^{-16}\) | |
| Número de Habitaciones | Coeficiente de correlación = 0.38, Intervalo de confianza (0.31, 0.43), p-valor \(2.2e^{-16}\) |
Con respecto a la correlación de las variables y al precio de la vivienda (apartamentos), en todos los casos esta es positiva pero se destaca su mayor fortaleza en area construida 0,73, Estrato 0,61, número de baños 0,55 y número de habitaciones 0.38, de manera similar se presentarón valores estadísiticamente significativos p- valores menores al 5%.
modelo_casas = lm(preciom ~ areaconst + estrato + parqueaderos + banios + habitaciones, data = data_vivienda1)
summary(modelo_casas)
##
## Call:
## lm(formula = preciom ~ areaconst + estrato + parqueaderos + banios +
## habitaciones, data = data_vivienda1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -783.25 -78.11 -15.78 48.08 979.35
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -240.66853 45.04002 -5.343 1.49e-07 ***
## areaconst 0.67543 0.05319 12.699 < 2e-16 ***
## estrato 81.20468 9.87951 8.220 2.49e-15 ***
## parqueaderos 24.40463 5.92440 4.119 4.57e-05 ***
## banios 18.25750 7.56265 2.414 0.0162 *
## habitaciones 8.02546 5.79739 1.384 0.1670
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 155.5 on 426 degrees of freedom
## (270 observations deleted due to missingness)
## Multiple R-squared: 0.6041, Adjusted R-squared: 0.5995
## F-statistic: 130 on 5 and 426 DF, p-value: < 2.2e-16
intervalos_confianza1 <- confint(modelo_casas)
intervalos_confianza1
## 2.5 % 97.5 %
## (Intercept) -329.1968601 -152.1401978
## areaconst 0.5708802 0.7799714
## estrato 61.7860165 100.6233430
## parqueaderos 12.7599378 36.0493298
## banios 3.3927353 33.1222624
## habitaciones -3.3695870 19.4205032
Para este modelo de regresión multiple donde el precio es la variable respuesta y las variables predictoras son: área construida, estrato, número de parqueaderos, número de baños, número de habitaciones, se tiene un p-valor de \(2.2(10)^{-16}\) el el ANOVA del modelo, sugiriendo que es adecuado desarrollar el modelo.
El desarrollo del modelo es:
\(y = \beta_{0} + \beta_{1}x_{1} + \beta_{2}x_{2} + \beta_{3}x_{3} +\beta_{4}x_{4} + \beta_{5}x_{5} + \epsilon\)
\(Precio = -245.6 + 0.66(área) + 85.6(estrato) + 28.06(parqueaderos) + 11.5(baños) + 8.91(habitaciones) \epsilon\)
El coeficiente del área construida que es 0.66, este indica que, un aumento en un metro cuadrado en el área, el precio de la vivienda incrementa en 0.66 millones de pesos, sin que haya variabilidad en las demás variables. A su vez, ocurre de forma similiar con el parqueadero, aumentando una unidad de éste para la vivienda, el precio de la misma incrementa en 28.06 millones de pesos, sosteniendo de igual forma una constante en las demás variables. Para el Estrato, aumentado una unidad en él, el precio de la vivienda aumenta en 85.6 millones de pesos, con las demás variables constantes. Los baños tendrán el mismo comportamiento mencionado, una unidad adicional en baño en la propiedad, el precio de la misma aumenta en 11.5 millones de pesos, junto con las demás variables constantes, mientras que una unidad adicional en las habitaciones en la propiedad, el precio de la misma aumenta en 8.91 millones de pesos, junto con las demás variables constantes.
Este modelo explica el 59,52% de la variación, ya que el \(R^2\) toma un valor es de 0.5952, lo que significa que, en términos porcentuales, el 59,52% de la variabilidad en el precio de las casas en el Norte de la ciudad de Cali, son explicadas por las variables predictoras dadas en el modelo.
además se obtiene las siguientes observaciones con respecto a la estimación de los parámetros:
\(\beta_1\), su intervalo de confianza fue, ( 0.53, 0.79) y estadísiticamente signicativo (p-valor= \(2(10)^{-16}\) )
\(\beta_2\), su intervalo de confianza fue, (59.6, 111,5) y estadísiticamente signicativo (p-valor= \(4.51e-15\) )
\(\beta_3\), su intervalo de confianza fue, (14.7 , 41.4) y estadísiticamente signicativo (p-valor= \(4.74e-05\) )
\(\beta_4\), su intervalo de confianza fue, (-7.23 , 30.23) y estadísiticamente signicativo (p-valor= \(0.228\) )
\(\beta_5\), su intervalo de confianza fue, (-5.15, 22.97) y estadísiticamente NO signicativo (p-valor= \(0.213\) )
Recomendaciones sugeridas para la mejora del modelo:
Incorporar factores externos a la propiedad que contribuyan a una mejor comprensión de su precio es esencial para desarrollar un modelo de valoración más completo. Esto es válido tanto para propiedades en unidades residenciales como para propiedades en barrios. Por ejemplo algunos aspectos a considerar son: unidad residencial, salón social, zona húmeda, zona de juegos, senderos peatonales, estado de la vía, vecinos y comunidad, seguridad y parques y Espacios Verdes.
También se podría optimizar el modelo, es decir:
Eliminar variables no significativas es fundamental para mantener la eficacia del modelo. Algunas variables podrían no aportar información relevante y, por lo tanto, podrían ser excluidas. La eliminación de estas variables puede mejorar la precisión del modelo al reducir el ruido y la complejidad.
En resumen, considerar factores adicionales tanto en unidades residenciales como en barrios puede mejorar la capacidad del modelo para predecir con precisión los precios de las propiedades. Al mismo tiempo, eliminar variables no significativas garantiza que el modelo se enfoque en las características más relevantes, lo que contribuye a su eficacia general.
resi=modelo_casas$residuals
shapiro.test(resi)
##
## Shapiro-Wilk normality test
##
## data: resi
## W = 0.85285, p-value < 2.2e-16
La prueba de Shapiro Wilks indica si un conjunto de datos siguen una distribución normal o no. Para los residuos del modelo
\(y = \beta_{0} + \beta_{1}x_{1} + \beta_{2}x_{2} + \beta_{3}x_{3} +\beta_{4}x_{4} + \beta_{5}x_{5} + \epsilon\)
\(Precio = -238.1 + 0.68(área) + 80.6(estrato) + 24.0(parqueaderos) + 18.9(baños) + 7.7(habitaciones) \epsilon\)
el p-valor(\(2.2e-16\)) de la muestra está por debajo del nivel de \(\alpha\) = 0.05, lo que significa que se rechaza la hipótsis nula y se determina que, los errores, no siguen una ditribución normal.
#install.packages("lmtest")
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.2.3
bptest(modelo_casas)
##
## studentized Breusch-Pagan test
##
## data: modelo_casas
## BP = 79.318, df = 5, p-value = 1.165e-15
Se utiliza la prueba de Breusch-Pagan para determinar si hay homocedasticidad o heterocedasticidad.
Esta prueba utiliza las siguientes hipótesis nulas y alternativas :
Hipótesis nula (\(H_{0}\) ): la homocedasticidad está presente (los residuos se distribuyen con la misma varianza)
Hipótesis alternativa (\(H_{a}\) ): Heteroscedasticidad está presente (los residuos no se distribuyen con la misma varianza)
Como p-value = 6.257e-10 menor al valor de referencia \(\alpha\) (0.05), por lo tanto, se rechaza la hipótesis nula de homocedasticidad (los residuos se distribuyen con la misma varianza), presentando heterocedasticidad (los residuos no se distribuyen con la misma varianza) en el modelo.
dwtest(modelo_casas)
##
## Durbin-Watson test
##
## data: modelo_casas
## DW = 1.7631, p-value = 0.005876
## alternative hypothesis: true autocorrelation is greater than 0
El Test de Durbin-Watson permite evaluar si existe autocorrelación en un modelo de Regresión Simple o múltiple; La estadística de prueba siempre varía de 0 a 4 donde:
d = 2 indica que no hay autocorrelación
d < 2 indica correlación serial positiva
d > 2 indica correlación serial negativa
En general, si d es menor que 1,5 o mayor que 2,5, existe un problema de autocorrelación potencialmente grave. De lo contrario, si d está entre 1,5 y 2,5, es probable que la autocorrelación no sea motivo de preocupación.
Para el modelo de las casas del norte de la ciudad, teniendo en cuenta el valor \(\alpha\) (0.05) la cantidad de variables independientes del modelo (5) y el número de muestras (+200), los valores de referencia son: dL: 1.72 y dU: 1.82, el valor de DW= 1.76, lo cuál indica que hay autocorrelación en el modelo.
caracteristicas= data.frame(
areaconst = 200,
parqueaderos = 1,
estrato = c(4, 5),
banios = 2,
habitaciones = 4
)
caracteristicas
## areaconst parqueaderos estrato banios habitaciones
## 1 200 1 4 2 4
## 2 200 1 5 2 4
predict(modelo_casas,caracteristicas)
## 1 2
## 312.2568 393.4615
Los precios que predice el modelo para las casas con las especificaciones:
es de 312 256 800 millones.
Mientras que para las casas con especificaciones
es de 393 461 500 millones.
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éditopreaprobado de máximo 350 millones de pesos. Realice un análisis y presente enun mapa al menos 5 ofertas potenciales que debe discutir.
library(dplyr)
casa = filter(data_vivienda1, areaconst <= 200, parqueaderos <= 1, banios <= 2, habitaciones <= 4, zona == "Zona Norte", estrato %in% c(4, 5), preciom <= 350)
casa
## # A tibble: 3 x 13
## id zona piso estrato preciom areaconst parqueaderos banios habitaciones
## <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1666 Zona N~ 02 4 275 120 1 2 4
## 2 1073 Zona N~ <NA> 4 280 104. 1 2 3
## 3 4779 Zona N~ <NA> 5 280 140 1 2 3
## # i 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
Con las especificaciones solicitadas se encontraron 3 casas, cuyas ubicaciones se encuentran a continuación:
library(leaflet)
colores <- colorFactor(palette = c("red"), domain = casa$zona)
#c( "green")
# se crea el mapa con las Casas según su latitud y longitud según el color marcado en el paso anterior.
mapa <- leaflet(casa) %>%
addTiles() %>%
addCircleMarkers(lng = ~longitud, lat = ~latitud, color = ~colores(zona), radius = 10)
# Ver Mapa
mapa
SEGUNDO ANÁLISIS - APARTAMENTOS ZONA SUR
#install.packages("devtools") # solo la primera vez
#devtools::install_github("dgonxalex80/paqueteMODELOS", force =TRUE)
library(paqueteMODELOS)
data("vivienda")
vivienda <- na.omit(vivienda)
data_apartamento1 = subset(vivienda, tipo == "Apartamento" & zona == "Zona Sur")
data_apartamento1<-data_apartamento1[data_apartamento1$habitaciones != 0, ]#excluir apartamentos sin habitaciones
#kable(head(data_apartamento1))
data_apartamento1
## # A tibble: 1,856 x 13
## id zona piso estrato preciom areaconst parqueaderos banios habitaciones
## <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 5098 Zona ~ 05 4 290 96 1 2 3
## 2 698 Zona ~ 02 3 78 40 1 1 2
## 3 6975 Zona ~ 06 4 220 75 1 2 3
## 4 5615 Zona ~ 08 3 210 72 2 2 3
## 5 7946 Zona ~ 10 3 230 63 1 2 2
## 6 8102 Zona ~ 05 5 344 107 2 2 3
## 7 7073 Zona ~ 02 6 910 182 2 4 3
## 8 8279 Zona ~ 03 3 130 77 1 2 3
## 9 822 Zona ~ 05 3 150 73 1 2 3
## 10 8288 Zona ~ 01 5 310 166 2 4 3
## # i 1,846 more rows
## # i 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
Una vez realizado el filtro se obtienen 1856 apartamentos de la Zona Sur.
library(leaflet)
colores <- colorFactor(palette = c("red"), domain = data_apartamento1$zona)
# se crea el mapa con las Casas según su latitud y longitud según el color marcado en el paso anterior.
mapa <- leaflet(data_apartamento1) %>%
addTiles() %>%
addCircleMarkers(lng = ~longitud, lat = ~latitud, color = ~colores(zona), radius = 4)
# Ver Mapa
mapa
Con lo observado en el mapa, parece que la base de datos tiene una problemas ya que aunque que muchas viviendas que indican su ubicación en la zona zur, en el mapa aparecen en otras zonas, esto se puede deber quizá a errores en los datos, es decir, a su digitación.
# Calculamos las medidas descriptivas de las variables
library(summarytools)
summarytools::descr(data_apartamento1[,4:9])
## Descriptive Statistics
## data_apartamento1
## N: 1856
##
## areaconst banios estrato habitaciones parqueaderos preciom
## ----------------- ----------- --------- --------- -------------- -------------- ---------
## Mean 100.68 2.58 4.75 3.02 1.40 312.92
## Std.Dev 50.53 0.92 0.80 0.59 0.60 186.13
## Min 40.00 1.00 3.00 1.00 1.00 78.00
## Q1 71.00 2.00 4.00 3.00 1.00 210.00
## Median 90.00 2.00 5.00 3.00 1.00 260.00
## Q3 112.00 3.00 5.00 3.00 2.00 350.00
## Max 932.00 7.00 6.00 6.00 4.00 1750.00
## MAD 29.65 0.00 1.48 0.00 0.00 103.78
## IQR 41.00 1.00 1.00 0.00 1.00 140.00
## CV 0.50 0.35 0.17 0.20 0.43 0.59
## Skewness 4.88 1.15 -0.01 0.09 1.51 2.80
## SE.Skewness 0.06 0.06 0.06 0.06 0.06 0.06
## Kurtosis 51.80 1.21 -0.67 1.82 2.56 12.39
## N.Valid 1856.00 1856.00 1856.00 1856.00 1856.00 1856.00
## Pct.Valid 100.00 100.00 100.00 100.00 100.00 100.00
library(PerformanceAnalytics)
chart.Correlation(data_apartamento1[,4:9], histogram = TRUE, method = "pearson")
#str(data_apartamentos)
library(PerformanceAnalytics)
correlation_test <- cor.test(data_apartamento1$preciom, data_apartamento1$areaconst, method = "pearson")
correlation_test1 <- cor.test(data_apartamento1$preciom, data_apartamento1$estrato, method = "pearson")
correlation_test2 <- cor.test(data_apartamento1$preciom, data_apartamento1$banios, method = "pearson")
correlation_test3 <- cor.test(data_apartamento1$preciom, data_apartamento1$habitaciones, method = "pearson")
correlation_test
##
## Pearson's product-moment correlation
##
## data: data_apartamento1$preciom and data_apartamento1$areaconst
## t = 45.138, df = 1854, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.7011670 0.7445689
## sample estimates:
## cor
## 0.7235824
correlation_test1
##
## Pearson's product-moment correlation
##
## data: data_apartamento1$preciom and data_apartamento1$estrato
## t = 36.973, df = 1854, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.6244736 0.6768987
## sample estimates:
## cor
## 0.6514631
correlation_test2
##
## Pearson's product-moment correlation
##
## data: data_apartamento1$preciom and data_apartamento1$banios
## t = 44.027, df = 1854, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.6919408 0.7364751
## sample estimates:
## cor
## 0.7149323
correlation_test3
##
## Pearson's product-moment correlation
##
## data: data_apartamento1$preciom and data_apartamento1$habitaciones
## t = 14.743, df = 1854, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.2825963 0.3640651
## sample estimates:
## cor
## 0.323931
| Coeficiente de correlación | ||
|---|---|---|
| Precio | ||
| Área | Coeficiente de correlación = 0.72, Intervalo de confianza (0.70, 0.75), p-valor \(2.2e^{-16}\) | |
| Estrato | Coeficiente de correlación = 0.65, Intervalo de confianza (0.62, 0.68), p-valor \(2.2e^{-16}\) | |
| Número de Baños | Coeficiente de correlación = 0.72, Intervalo de confianza (0.69, 0.74), p-valor \(2.2e^{-16}\) | |
| Número de Habitaciones | Coeficiente de correlación = 0.32, Intervalo de confianza (0.28, 0.36), p-valor \(2.2e^{-16}\) |
Con respecto a la correlación de las variables y al precio de la vivienda (apartamentos), en todos los casos esta es positiva pero se destaca su mayor fortaleza en area construida 0,72, Estrato 0,65, número de baños 0,72, y número de habitaciones 0.32, de manera similar se presentarón valores estadísiticamente significativos p- valores menores al 5%.
modelo_apartamentos1 = lm(preciom ~ areaconst + estrato + parqueaderos + banios + habitaciones, data = data_apartamento1)
intervalos_confianza <- confint(modelo_apartamentos1)
intervalos_confianza
## 2.5 % 97.5 %
## (Intercept) -297.200567 -229.323893
## areaconst 1.093546 1.333121
## estrato 50.987938 64.625221
## parqueaderos 72.503282 92.395241
## banios 40.170561 55.463135
## habitaciones -28.295395 -10.791459
summary(modelo_apartamentos1)
##
## Call:
## lm(formula = preciom ~ areaconst + estrato + parqueaderos + banios +
## habitaciones, data = data_apartamento1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1024.87 -41.67 -1.75 40.41 934.57
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -263.26223 17.30447 -15.21 < 2e-16 ***
## areaconst 1.21333 0.06108 19.87 < 2e-16 ***
## estrato 57.80658 3.47669 16.63 < 2e-16 ***
## parqueaderos 82.44926 5.07125 16.26 < 2e-16 ***
## banios 47.81685 3.89869 12.27 < 2e-16 ***
## habitaciones -19.54343 4.46245 -4.38 1.26e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 95.68 on 1850 degrees of freedom
## Multiple R-squared: 0.7365, Adjusted R-squared: 0.7358
## F-statistic: 1034 on 5 and 1850 DF, p-value: < 2.2e-16
Para este modelo de regresión multiple donde el precio es la variable respuesta y las variables predictoras son: área construida, estrato, número de parqueaderos, número de baños, número de habitaciones, se tiene un p-valor de \(2.2(10)^{-16}\) el el ANOVA del modelo, sugiriendo que es adecuado desarrollar el modelo.
El desarrollo del modelo es:
\(y = \beta_{0} + \beta_{1}x_{1} + \beta_{2}x_{2} + \beta_{3}x_{3} +\beta_{4}x_{4} + \beta_{5}x_{5}\)
\(Precio = -263 + 1.2(área) + 57.8(estrato) + 82.5(parqueaderos) + 47.8(baños) - 19.54(habitaciones)\)
El coeficiente del área construida que es 1.21, este indica que, un aumento en un metro cuadrado en el área, el precio de la vivienda incrementa en 1.21 millones de pesos, sin que haya variabilidad en las demás variables. A su vez, ocurre de forma similiar con el parqueadero, aumentando una unidad de éste para la vivienda, el precio de la misma incrementa en 82.5 millones de pesos, sosteniendo de igual forma una constante en las demás variables. Para el Estrato, aumentado una unidad en él, el precio de la vivienda aumenta en 57.8 millones de pesos, con las demás variables constantes. Los baños tendrán el mismo comportamiento mencionado, una unidad adicional en baño en la propiedad, el precio de la misma aumenta en 47.8 millones de pesos, junto con las demás variables constantes, con respecto al número de habitaciones por unidad que aumenta disminuye el precio -19.5 millones.
Este modelo explica el 74% de la variación, ya que el \(R^2\) toma un valor es de 0.74, lo que significa que, en términos porcentuales, el 74%de la variabilidad en el precio de los apartamentos de la ciudad de Cali, son explicadas por las variables predictoras dadas en el modelo.
\(\beta_1\), su intervalo de confianza fue, (1.9, 1.3) y estadísiticamente signicativo (p-valor= \(2(10)^{-16}\) )
\(\beta_2\), su intervalo de confianza fue, (50.1, 64.6) y estadísiticamente signicativo (p-valor= \(2(10)^{-16}\) )
\(\beta_3\), su intervalo de confianza fue, (72.5,92.4) y estadísiticamente signicativo (p-valor= \(2(10)^{-16}\) )
\(\beta_4\), su intervalo de confianza fue, (40.2, 55.5) y estadísiticamente signicativo (p-valor= \(2(10)^{-16}\) )
\(\beta_4\), su intervalo de confianza fue, (-28.3, -10.79) y estadísiticamente signicativo (p-valor= \(2.26(10)^{-5}\) )
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).
resi=modelo_apartamentos1$residuals
shapiro.test(resi)
##
## Shapiro-Wilk normality test
##
## data: resi
## W = 0.7789, p-value < 2.2e-16
La prueba de Shapiro Wilks indica si un conjunto de datos siguen una distribución normal o no. Para los residuos del modelo
\(y = \beta_{0} + \beta_{1}x_{1} + \beta_{2}x_{2} + \beta_{3}x_{3} +\beta_{4}x_{4} + \beta_{5}x_{5}\)
\(Precio = -263 + 1.2(área) + 57.8(estrato) + 82.5(parqueaderos) + 47.8(baños) - 19.54(habitaciones)\)
el p-valor(\(2.2e-16\)) de la muestra está por debajo del nivel de \(\alpha\) = 0.05, lo que significa que se rechaza la hipótsis nula y se determina que, los errores, no siguen una ditribución normal.
library(lmtest)
bptest(modelo_apartamentos1)
##
## studentized Breusch-Pagan test
##
## data: modelo_apartamentos1
## BP = 648.02, df = 5, p-value < 2.2e-16
Se utiliza la prueba de Breusch-Pagan para determinar si hay homocedasticidad o heterocedasticidad.
Esta prueba utiliza las siguientes hipótesis nulas y alternativas :
Hipótesis nula (\(H_{0}\) ): la homocedasticidad está presente (los residuos se distribuyen con la misma varianza)
Hipótesis alternativa (\(H_{a}\) ): Heteroscedasticidad está presente (los residuos no se distribuyen con la misma varianza)
Como p-value = 2.2e-16 menor al valor de referencia \(α\) (0.05), por lo tanto, se rechaza la hipótesis nula de homocedasticidad (los residuos se distribuyen con la misma varianza), presentando heterocedasticidad (los residuos no se distribuyen con la misma varianza) en el modelo.
dwtest(modelo_apartamentos1)
##
## Durbin-Watson test
##
## data: modelo_apartamentos1
## DW = 1.5102, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
El Test de Durbin-Watson permite evaluar si existe autocorrelación en un modelo de Regresión Simple o múltiple; La estadística de prueba siempre varía de 0 a 4 donde:
d = 2 indica que no hay autocorrelación
d < 2 indica correlación serial positiva
d > 2 indica correlación serial negativa
En general, si d es menor que 1,5 o mayor que 2,5, existe un problema de autocorrelación potencialmente grave. De lo contrario, si d está entre 1,5 y 2,5, es probable que la autocorrelación no sea motivo de preocupación.
Para el modelo de las casas del norte de la ciudad, teniendo en cuenta el valor α (0.05) la cantidad de variables independientes del modelo (5) y el número de muestras (+200), los valores de referencia son: dL: 1.72 y dU: 1.82, el valor de DW= 1.51, lo cuál indica que hay autocorrelación en el modelo.
caracteristicas1= data.frame(
areaconst = 300,
parqueaderos = 3,
estrato = c(5, 6),
banios = 3,
habitaciones = 5
)
caracteristicas1
## areaconst parqueaderos estrato banios habitaciones
## 1 300 3 5 3 5
## 2 300 3 6 3 5
predict(modelo_apartamentos1,caracteristicas1)
## 1 2
## 682.8518 740.6584
Los precios que predice el modelo para los apartamentos con las especificaciones:
es de 682851800 millones.
Mientras que para las casas con especificaciones
es de 740658400 millones.
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éditopreaprobado de máximo 350 millones de pesos. Realice un análisis y presente enun mapa al menos 5 ofertas potenciales que debe discutir.
library(dplyr)
apartamento = filter(data_apartamento1, areaconst <= 300, parqueaderos == 3, banios == 3, habitaciones <= 5, preciom <= 850, estrato %in% c(5, 6))
apartamento
## # A tibble: 9 x 13
## id zona piso estrato preciom areaconst parqueaderos banios habitaciones
## <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 6175 Zona S~ 05 5 350 270 3 3 4
## 2 6205 Zona S~ 05 5 350 260 3 3 3
## 3 5423 Zona S~ 02 6 695 227 3 3 3
## 4 5816 Zona S~ 03 6 550 130 3 3 4
## 5 7680 Zona S~ 01 5 450 267 3 3 3
## 6 46 Zona S~ 02 6 550 143 3 3 3
## 7 4284 Zona S~ 03 6 390 105 3 3 3
## 8 7739 Zona S~ 09 5 475 184 3 3 3
## 9 2380 Zona S~ 05 5 415 110 3 3 3
## # i 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
#data_apartamento1
Con las especificaciones solicitadas se encontraron 9 apartamentos, cuyas ubicaciones se encuentran a continuación:
library(leaflet)
colores <- colorFactor(palette = c("blue"), domain = apartamento$zona)
#c("blue","red", "green","purple","orange")
# se crea el mapa con las Casas según su latitud y longitud según el color marcado en el paso anterior.
mapa1 <- leaflet(apartamento) %>%
addTiles() %>%
addCircleMarkers(lng = ~longitud, lat = ~latitud, color = ~colores(zona), radius = 10)
# Ver Mapa
mapa1