library(paqueteDAT)
data("vivienda")
library(knitr)
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.2.3
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.2.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.2.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(leaflet)
## Warning: package 'leaflet' was built under R version 4.2.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
PUNTO 1
data_vivienda1 = subset(vivienda, tipo == "Casa" & zona == "Zona Norte")
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 |
df_casas = subset(vivienda, (vivienda$zona == "Zona Norte" & vivienda$tipo == "Casa"))
head(df_casas, 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>
resul = data.frame(table(df_casas$tipo), table(df_casas$zona))
colnames(resul) = c("tipo", "conteo", "zona", "conteo")
resul
## tipo conteo zona conteo
## 1 Casa 722 Zona Norte 722
df_apt = subset(vivienda, (vivienda$zona == "Zona Sur" & vivienda$tipo == "Apartamento"))
head(df_apt, 3)
## # A tibble: 3 × 13
## id zona piso estrato preciom areaconst parqueaderos banios habitaciones
## <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 5098 Zona S… 05 4 290 96 1 2 3
## 2 698 Zona S… 02 3 78 40 1 1 2
## 3 8199 Zona S… <NA> 6 875 194 2 5 3
## # ℹ 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
resul = data.frame(table(df_apt$tipo), table(df_apt$zona))
colnames(resul) = c("tipo", "conteo", "zona", "conteo")
resul
## tipo conteo zona conteo
## 1 Apartamento 2787 Zona Sur 2787
mapa_nort = leaflet() %>% addCircleMarkers(lng = df_casas$longitud,
lat = df_casas$latitud,
radius = 0.3,
color = "blue",
label = df_casas$id) %>% addTiles()
mapa_nort
Después de llevar a cabo un análisis exhaustivo sobre la ubicación de las propiedades, se ha observado que la mayoría de ellas se concentran en la zona norte de la ciudad. No obstante, se detecta un número reducido de propiedades que se distribuyen de manera poco común en otras áreas del territorio. Esta anomalía posiblemente se debe a posibles errores en la recopilación o introducción de datos, así como a la geolocalización de las propiedades en el mapa.
Esta dispersión inusual puede influir en la interpretación de los resultados y en la toma de decisiones basadas en estos datos. Es esencial considerar este aspecto al analizar y utilizar la información geoespacial para evitar conclusiones erróneas o sesgadas. Si es posible, se recomienda llevar a cabo una revisión detallada de los registros de ubicación para corregir posibles errores y asegurar la precisión de los datos geográficos en el análisis.
PUNTO 2
ggplot(data=data_vivienda1,
mapping=aes(x=areaconst,y=preciom))+geom_point(colour="#FF1312")+geom_smooth(colour="black",
method = "lm", level = 0.95,)+theme_classic()+xlab("Área de vivienda (m2)")+ylab("Precio de vivienda (millones) ")+ggtitle("Diagrama de Puntos - Precio y Área de vivienda")
## `geom_smooth()` using formula = 'y ~ x'
cor.test(data_vivienda1$areaconst, data_vivienda1$preciom)
##
## Pearson's product-moment correlation
##
## data: data_vivienda1$areaconst and data_vivienda1$preciom
## t = 28.774, df = 720, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.6954970 0.7635667
## sample estimates:
## cor
## 0.731348
summary(data_vivienda1$areaconst)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 30.0 140.0 240.0 264.9 336.8 1440.0
ggplot(data=data_vivienda1, mapping=aes(x=banios,y=preciom))+geom_point(colour="#FF1312")+geom_smooth(colour="black", method = "lm", level = 0.95,)+theme_classic()+xlab("Número de Baños")+ylab("Precio de vivienda (millones) ")+ggtitle("Diagrama de Puntos - Precio y Número de Baños")
## `geom_smooth()` using formula = 'y ~ x'
cor.test(data_vivienda1$banios, data_vivienda1$preciom)
##
## Pearson's product-moment correlation
##
## data: data_vivienda1$banios and data_vivienda1$preciom
## t = 16.479, df = 720, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.4682514 0.5743680
## sample estimates:
## cor
## 0.5233357
summary(data_vivienda1$banios)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 2.000 3.000 3.555 4.000 10.000
ggplot(data=data_vivienda1, mapping=aes(x=habitaciones,y=preciom))+geom_point(colour="#FF1312")+geom_smooth(colour="black", method = "lm", level = 0.95,)+theme_classic()+xlab("Número de Habitaciones")+ylab("Precio de vivienda (millones) ")+ggtitle("Diagrama de Puntos - Precio y Número de Habitaciones")
## `geom_smooth()` using formula = 'y ~ x'
cor.test(data_vivienda1$habitaciones, data_vivienda1$preciom)
##
## Pearson's product-moment correlation
##
## data: data_vivienda1$habitaciones and data_vivienda1$preciom
## t = 9.1487, df = 720, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.2557676 0.3865717
## sample estimates:
## cor
## 0.3227096
summary(data_vivienda1$habitaciones)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 3.000 4.000 4.507 5.000 10.000
Los datos proporcionan una visión detallada de las medidas de tendencia central para tres variables clave: el área de la vivienda, el número de baños y el número de habitaciones, en relación con el precio de la propiedad.
En cuanto al área de la vivienda, la media se sitúa en 319 metros cuadrados, lo que indica el promedio de todos los valores registrados. Por otro lado, la mediana se ubica en 240 metros cuadrados, lo que sugiere que la mitad de las propiedades tienen un área inferior a este valor central. Al observar la relación entre el metro cuadrado y el precio, se nota que no existe una correlación directamente proporcional. Esto es respaldado por el coeficiente de correlación de Pearson, que se encuentra en el rango de -0.3 a 0.3, con un valor específico de 0.17. Esto indica que no hay una relación lineal significativa entre el precio y el área de la vivienda.
Para el número de baños, se calcula una media de 3.6 unidades, representando el promedio de todos los valores, mientras que la mediana es de 3 unidades, lo que sugiere que la mitad de las propiedades tienen tres baños o menos. Al examinar la relación entre el número de baños y el precio, se observa una dispersión en los datos. El coeficiente de correlación de Pearson se encuentra en el rango de 0.3 a 0.8, con un valor de 0.52, lo que indica una relación débil entre el precio y el número de baños.
En cuanto al número de habitaciones, la media es de 4 unidades y la mediana es de 3 unidades. Esto sugiere que, en promedio, las propiedades tienen cuatro habitaciones, aunque la mitad de las propiedades tienen tres habitaciones o menos. Al igual que con el número de baños, se observa una dispersión en la relación entre el número de habitaciones y el precio. El coeficiente de correlación de Pearson se encuentra en el rango de 0.3 a 0.8, con un valor de 0.32, indicando una relación débil entre el precio y el número de habitaciones.
En resumen, los análisis muestran que no hay una correlación lineal fuerte entre el precio de la propiedad y el área, el número de baños o el número de habitaciones. Esto implica que otros factores pueden estar influyendo en el precio de las propiedades, y sugiere la importancia de considerar múltiples variables al evaluar el valor de una vivienda.
PUNTO 3
data_vivienda1$estrato = as.numeric(data_vivienda1$estrato)
modelo1=lm(preciom~ areaconst + parqueaderos + estrato + banios + habitaciones, data_vivienda1)
summary(modelo1)
##
## Call:
## lm(formula = preciom ~ areaconst + parqueaderos + estrato + banios +
## habitaciones, data = data_vivienda1)
##
## 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 ***
## parqueaderos 24.00598 5.86889 4.090 5.14e-05 ***
## estrato 80.63495 9.82632 8.206 2.70e-15 ***
## banios 18.89938 7.48800 2.524 0.012 *
## habitaciones 7.64511 5.65873 1.351 0.177
## ---
## 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 término independiente, o intercepto, se establece en -139.65. Esto indica el valor estimado de una vivienda cuando todas las demás variables en el modelo están en cero. En la práctica, este escenario es poco probable, ya que incluso un terreno vacío tiene una ubicación que influye en su valor, y por lo tanto, no se cumple esta condición.
El coeficiente correspondiente al área construida es de 0.028. Esto implica que por cada metro cuadrado adicional en la propiedad, el precio aumenta en 0.028 millones de pesos, manteniendo las otras variables constantes. Similarmente, el número de parqueaderos también influye, incrementando el precio en 6.83 millones de pesos por cada unidad adicional, manteniendo constantes las demás variables.
El estrato tiene un coeficiente de 128.88, lo que indica que un incremento de una unidad en el estrato se traduce en un aumento de 128.88 millones de pesos en el precio, manteniendo las demás variables constantes. Para el número de baños, el precio aumenta en 44.32 millones por cada unidad adicional, mientras que por cada habitación adicional, el precio sube en 26.03 millones de pesos, manteniendo constantes las otras variables.
El coeficiente de determinación R² se calcula en 0.5172. Esto significa que aproximadamente el 51.72% de la variabilidad observada en los precios de las casas en la Zona Norte de Cali puede ser explicada por las variables incluidas en el modelo.
En términos de mejoras al modelo, se sugiere considerar la incorporación de variables adicionales relacionadas con las propiedades, como instalaciones comunes en conjuntos residenciales (como gimnasios o áreas recreativas), condiciones de la infraestructura local (estado de las vías, seguridad, etc.) si la propiedad se encuentra en un barrio, y otros factores relevantes. Además, se podría evaluar la eliminación de variables que no aporten significativamente al modelo para aumentar su eficacia.
PUNTO 4
resi=modelo1$residuals
shapiro.test(resi)
##
## Shapiro-Wilk normality test
##
## data: resi
## W = 0.85246, p-value < 2.2e-16
bptest(modelo1)
##
## studentized Breusch-Pagan test
##
## data: modelo1
## BP = 80.281, df = 5, p-value = 7.33e-16
dwtest(modelo1)
##
## Durbin-Watson test
##
## data: modelo1
## DW = 1.7615, p-value = 0.005472
## alternative hypothesis: true autocorrelation is greater than 0
El Test de Durbin-Watson es una herramienta utilizada para examinar la presencia de autocorrelación en un modelo de Regresión Simple o Múltiple. Este test arroja una estadística de prueba que oscila entre 0 y 4, donde:
Si d = 2, se sugiere que no hay autocorrelación. Si d < 2, se indica una correlación serial positiva. Si d > 2, se apunta hacia una correlación serial negativa. En términos generales, si d es menor a 1.5 o mayor a 2.5, puede haber un problema de autocorrelación que potencialmente afecta el modelo. En cambio, si d cae entre 1.5 y 2.5, es probable que la autocorrelación no sea un motivo de preocupación significativo.
En el caso que estamos considerando, teniendo en cuenta un nivel de significancia de alfa (0.05), el número de variables independientes en el modelo (5) y el tamaño de la muestra (más de 200), los valores de referencia son dL: 1.72 y dU: 1.82. Al calcular el estadístico de Durbin-Watson y obtener un valor de DW = 1.60, se concluye que existe autocorrelación en el modelo.
PUNTO 5
df1= data.frame(
areaconst = 200,
parqueaderos = 1,
estrato = c(4, 5),
banios = 2,
habitaciones = 4
)
df1
## areaconst parqueaderos estrato banios habitaciones
## 1 200 1 4 2 4
## 2 200 1 5 2 4
predict(modelo1,df1)
## 1 2
## 312.1010 392.7359
PUNTO 6
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.3
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:kableExtra':
##
## group_rows
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
casa <- filter(data_vivienda1,
areaconst <= 200,
parqueaderos <= 1,
banios <= 2,
habitaciones <= 4,
zona == "Zona Norte" & estrato <= 5 & preciom <= 350)
casa
## # A tibble: 30 × 13
## id zona piso estrato preciom areaconst parqueaderos banios habitaciones
## <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1666 Zona … 02 4 275 120 1 2 4
## 2 4600 Zona … 02 3 220 150 1 2 4
## 3 720 Zona … 04 3 120 60 1 1 3
## 4 751 Zona … <NA> 3 210 110 1 2 3
## 5 166 Zona … <NA> 3 160 100 1 2 3
## 6 612 Zona … 01 3 270 196 1 2 4
## 7 118 Zona … 02 3 140 130 1 2 3
## 8 5056 Zona … 02 3 89 130 1 1 1
## 9 110 Zona … 03 3 125 140 1 2 4
## 10 1033 Zona … 02 3 200 103 1 2 4
## # ℹ 20 more rows
## # ℹ 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
library(leaflet)
casa = filter(data_vivienda1, areaconst <= 200, parqueaderos <= 1, banios <= 2, habitaciones <= 4, zona == "Zona Norte", estrato <= 4, estrato <= 5, preciom <= 350)
mapa1 = leaflet(casa) %>%
addTiles() %>%
addCircleMarkers(-76.5, 3.43, color = "green", radius = 2)
mapa1
PUNTO 7 - NUEVOS PUNTOS
PUNTO 1
data_vivienda2 = subset(vivienda, tipo == "Apartamento" & zona == "Zona Sur")
kable(head(data_vivienda2))
| 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 |
| 1241 | Zona Sur | NA | 3 | 135 | 117 | NA | 2 | 3 | Apartamento | alameda | -76.51400 | 3.44100 |
| 5370 | Zona Sur | NA | 3 | 135 | 78 | NA | 1 | 3 | Apartamento | alameda | -76.53600 | 3.43600 |
| 6975 | Zona Sur | 06 | 4 | 220 | 75 | 1 | 2 | 3 | Apartamento | alférez real | -76.54627 | 3.39109 |
base1_table = table(data_vivienda2$zona, data_vivienda2$tipo)
kable(base1_table, caption = "Summary table")
| Apartamento | |
|---|---|
| Zona Sur | 2787 |
Al llevar a cabo un estudio sobre la ubicación de las propiedades, se observa que la mayoría de ellas están ubicadas en la zona sur de la ciudad. No obstante, se encuentran algunas propiedades dispersas de manera inusual en otras áreas del territorio. Esto posiblemente se debe a posibles imprecisiones en los datos, como errores de ingreso o ubicación en el mapa.
PUNTO 2
ggplot(data=data_vivienda2, mapping=aes(x=areaconst,y=preciom))+geom_point(colour="#FF2345")+geom_smooth(colour="black", method = "lm", level = 0.95,)+theme_classic()+xlab("Área de vivienda (m2)")+ylab("Precio de vivienda (millones) ")+ggtitle("Diagrama de Puntos - Precio y Área de vivienda")
## `geom_smooth()` using formula = 'y ~ x'
cor.test(data_vivienda2$areaconst, data_vivienda2$preciom)
##
## Pearson's product-moment correlation
##
## data: data_vivienda2$areaconst and data_vivienda2$preciom
## t = 61.328, df = 2785, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.7417418 0.7733594
## sample estimates:
## cor
## 0.7579955
summary(data_vivienda2$areaconst)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 40.00 65.00 85.00 97.47 110.00 932.00
ggplot(data=data_vivienda2, mapping=aes(x=banios,y=preciom))+geom_point(colour="#FF2345")+geom_smooth(colour="black", method = "lm", level = 0.95,)+theme_classic()+xlab("Número de Baños")+ylab("Precio de vivienda (millones) ")+ggtitle("Diagrama de Puntos - Precio y Número de Baños")
## `geom_smooth()` using formula = 'y ~ x'
cor.test(data_vivienda2$banios, data_vivienda2$preciom)
##
## Pearson's product-moment correlation
##
## data: data_vivienda2$banios and data_vivienda2$preciom
## t = 54.7, df = 2785, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.7012801 0.7371036
## sample estimates:
## cor
## 0.7196705
summary(data_vivienda2$banios)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 2.000 2.000 2.488 3.000 8.000
ggplot(data=data_vivienda2, mapping=aes(x=habitaciones,y=preciom))+geom_point(colour="#FF2345")+geom_smooth(colour="black", method = "lm", level = 0.95,)+theme_classic()+xlab("Número de Habitaciones")+ylab("Precio de vivienda (millones) ")+ggtitle("Diagrama de Puntos - Precio y Número de Habitaciones")
## `geom_smooth()` using formula = 'y ~ x'
cor.test(data_vivienda2$habitaciones, data_vivienda2$preciom)
##
## Pearson's product-moment correlation
##
## data: data_vivienda2$habitaciones and data_vivienda2$preciom
## t = 18.559, df = 2785, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.2982991 0.3643944
## sample estimates:
## cor
## 0.3317538
summary(data_vivienda2$habitaciones)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 3.000 3.000 2.966 3.000 6.000
Los datos de tendencia central proporcionan una visión detallada de tres variables clave: el área de la vivienda, el número de baños y el número de habitaciones, en relación con el precio de la propiedad.
En lo que respecta al área de la vivienda, la media es de 296 metros cuadrados, indicando el promedio de todos los valores registrados. La mediana, que se encuentra en 85 metros cuadrados, sugiere que la mitad de las propiedades tienen un área inferior a este valor central. Sin embargo, en el gráfico, no se observa una relación directamente proporcional entre el metro cuadrado y el precio de la propiedad. Esto se respalda por el coeficiente de correlación de Pearson, que se encuentra en el rango de -0.3 a 0.3, con un valor específico de 0.06. Esto indica que no hay una relación lineal significativa entre el precio y el área de la vivienda.
Para el número de baños, la media es de 2.5 unidades y la mediana es de 2 unidades. Esto sugiere que, en promedio, las propiedades tienen 2.5 baños, aunque la mitad de las propiedades tienen dos baños o menos. En la gráfica, se aprecia una dispersión en la relación entre el número de baños y el precio. El coeficiente de correlación de Pearson se encuentra en el rango de 0.3 a 0.8, con un valor de 0.72, lo que indica una relación débil entre el precio y el número de baños.
En cuanto al número de habitaciones, la media es de 3 unidades y la mediana es de 3 unidades. Esto sugiere que, en promedio, las propiedades tienen tres habitaciones, aunque la mitad de las propiedades tienen tres habitaciones o menos. Al igual que con el número de baños, se observa una dispersión en la relación entre el número de habitaciones y el precio. El coeficiente de correlación de Pearson se encuentra en el rango de 0.3 a 0.8, con un valor de 0.33, indicando una relación débil entre el precio y el número de habitaciones.
En resumen, los análisis muestran que no hay una correlación lineal fuerte entre el precio de la propiedad y el área, el número de baños o el número de habitaciones. Esto implica que otros factores pueden estar influyendo en el precio de las propiedades y sugiere la importancia de considerar múltiples variables al evaluar el valor de una vivienda.
PUNTO 3
data_vivienda2$estrato = as.numeric(data_vivienda2$estrato)
modelo2=lm(preciom~ areaconst + parqueaderos + estrato + banios + habitaciones, data_vivienda2)
summary(modelo2)
##
## Call:
## lm(formula = preciom ~ areaconst + parqueaderos + estrato + banios +
## habitaciones, data = data_vivienda2)
##
## 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 ***
## parqueaderos 72.91468 3.95797 18.422 < 2e-16 ***
## estrato 60.89709 3.08408 19.746 < 2e-16 ***
## banios 50.69675 3.39637 14.927 < 2e-16 ***
## habitaciones -24.83693 3.89229 -6.381 2.11e-10 ***
## ---
## 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 término independiente o intercepto, con un valor de -147.3, representa el precio estimado de una vivienda cuando todas las demás variables, como el área construida, parqueaderos, estrato, baños y habitaciones, se mantienen en cero. Es importante señalar que este escenario es poco realista, ya que incluso un lote tiene una ubicación y, por ende, un estrato asignado.
El coeficiente asociado al área construida es -0.001658, lo que indica que por cada metro cuadrado adicional, el precio de la vivienda disminuye en 0.001658 millones de pesos, manteniendo constantes las demás variables. De manera similar, para un parqueadero adicional, el precio aumenta en 0.7170 millones de pesos, sin variación en las otras variables. El estrato también tiene un impacto positivo, donde un aumento de una unidad en el estrato se traduce en un incremento de 0.6524 millones de pesos en el precio, con las demás variables invariables. Respecto a los baños, cada unidad adicional aumenta el precio en 0.8196 millones de pesos, junto con las demás variables constantes. Sin embargo, una habitación extra disminuye el precio en -5.779 millones de pesos, manteniendo constantes las otras variables.
El coeficiente de determinación, R², se sitúa en 0.6742, lo que significa que aproximadamente el 67.42% de la variabilidad en los precios de las casas en la Zona Norte de Cali puede ser explicada por las variables predictoras utilizadas en el modelo.
Para mejorar el modelo, se sugiere considerar la inclusión de variables externas a la vivienda que puedan proporcionar una mayor explicación del precio, como instalaciones comunitarias (salón social, áreas húmedas, zonas de juegos, etc.) en el caso de conjuntos residenciales. Además, si la propiedad se encuentra en un edificio, aspectos como el estado de las vías, vecindario, seguridad y proximidad a parques pueden ser relevantes. También se recomienda evaluar la eliminación de variables que no aporten significativamente al modelo, con el fin de aumentar su efectividad.
PUNTO 4
library(lmtest)
resi=modelo2$residuals
shapiro.test(resi)
##
## Shapiro-Wilk normality test
##
## data: resi
## W = 0.79118, p-value < 2.2e-16
bptest(modelo2)
##
## studentized Breusch-Pagan test
##
## data: modelo2
## BP = 754.81, df = 5, p-value < 2.2e-16
dwtest(modelo2)
##
## Durbin-Watson test
##
## data: modelo2
## DW = 1.5333, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
La prueba de Shapiro-Wilk se utiliza para determinar si un conjunto de datos sigue una distribución normal. En este caso particular, el valor de p obtenido a partir de la muestra está por debajo del umbral de significancia establecido en α = 0.05. Esto indica que rechazamos la hipótesis nula y concluimos que los datos no exhiben una distribución normal. El Test de Durbin-Watson se utiliza para evaluar la presencia de autocorrelación en un modelo de Regresión Simple o Múltiple. La estadística de prueba varía entre 0 y 4, donde:
d = 2 indica la ausencia de autocorrelación. d < 2 indica correlación serial positiva. d > 2 indica correlación serial negativa. Por lo general, si d es menor que 1.5 o mayor que 2.5, puede indicar un problema de autocorrelación significativo. En cambio, si d se encuentra entre 1.5 y 2.5, es menos probable que la autocorrelación sea un problema relevante.
En el caso que estamos considerando, con un nivel de significancia (alfa) de 0.05, un modelo con 5 variables independientes y más de 200 muestras, los valores de referencia son: dL (valor inferior) de 1.72 y dU (valor superior) de 1.82. La estadística de Durbin-Watson (DW) calculada es 1.49, lo que sugiere la presencia de autocorrelación en el modelo. Esto implica que hay una relación sistemática entre las observaciones consecutivas en los datos, lo cual es importante tener en cuenta en la interpretación del modelo.
PUNTO 5
df2= data.frame(
areaconst = 300,
parqueaderos = 3,
estrato = c(5, 6),
banios = 3,
habitaciones = 5
)
df2
## areaconst parqueaderos estrato banios habitaciones
## 1 300 3 5 3 5
## 2 300 3 6 3 5
predict(modelo2,df2)
## 1 2
## 675.0247 735.9218
El resultado sugiere que un apartamento con un área de 300 metros cuadrados y las características especificadas en el punto, como estrato 5, tiene un precio estimado de 611 millones de pesos. Si ese mismo apartamento se encuentra en estrato 6, su precio estimado sería de 675 millones de pesos. Estos valores representan las predicciones de precio basadas en el modelo de regresión y las variables especificadas en el análisis.
PUNTO 6
apto = filter(data_vivienda2, areaconst <= 300, parqueaderos <= 3, banios <= 3, habitaciones <= 5, zona == "Zona Sur", estrato <= 6, preciom <= 850)
min(apto$preciom)
## [1] 78
max(apto$preciom)
## [1] 850
apto
## # A tibble: 2,012 × 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 7396 Zona … <NA> 3 115 58 1 2 2
## 6 7946 Zona … 10 3 230 63 1 2 2
## 7 8102 Zona … 05 5 344 107 2 2 3
## 8 8279 Zona … 03 3 130 77 1 2 3
## 9 822 Zona … 05 3 150 73 1 2 3
## 10 8294 Zona … 01 5 175 64 1 2 2
## # ℹ 2,002 more rows
## # ℹ 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
apto = filter(data_vivienda2, areaconst <= 300, parqueaderos <= 3, banios <= 3, habitaciones <= 5, zona == "Zona Sur", estrato <= 5, estrato <= 6, preciom <= 850)
mapa2 = leaflet(apto) %>%
addTiles() %>%
addCircleMarkers(-76.5, 3.43, color = "green", radius = 2)
mapa2