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")
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