Importación de la data

vivienda <- readRDS("C:/Users/sebas/OneDrive/Maestria/Semestre 2/Mod. Estadísticos para toma de decisiones/Módulo 1_Modelos Estadísticos/Unidad 1_Modelos Multivariados/Vivienda.RDS")

Análisis Exploratorio

# Vista global de las variables
glimpse(vivienda)
## Rows: 8,322
## Columns: 13
## $ id           <dbl> 1147, 1169, 1350, 5992, 1212, 1724, 2326, 4386, 1209, 159…
## $ zona         <chr> "Zona Oriente", "Zona Oriente", "Zona Oriente", "Zona Sur…
## $ piso         <chr> NA, NA, NA, "02", "01", "01", "01", "01", "02", "02", "02…
## $ estrato      <dbl> 3, 3, 3, 4, 5, 5, 4, 5, 5, 5, 6, 4, 5, 6, 4, 5, 5, 4, 5, …
## $ preciom      <dbl> 250, 320, 350, 400, 260, 240, 220, 310, 320, 780, 750, 62…
## $ areaconst    <dbl> 70, 120, 220, 280, 90, 87, 52, 137, 150, 380, 445, 355, 2…
## $ parqueaderos <dbl> 1, 1, 2, 3, 1, 1, 2, 2, 2, 2, NA, 3, 2, 2, 1, 4, 2, 2, 2,…
## $ banios       <dbl> 3, 2, 2, 5, 2, 3, 2, 3, 4, 3, 7, 5, 6, 2, 4, 4, 4, 3, 2, …
## $ habitaciones <dbl> 6, 3, 4, 3, 3, 3, 3, 4, 6, 3, 6, 5, 6, 2, 5, 5, 4, 3, 3, …
## $ tipo         <chr> "Casa", "Casa", "Casa", "Casa", "Apartamento", "Apartamen…
## $ barrio       <chr> "20 de julio", "20 de julio", "20 de julio", "3 de julio"…
## $ longitud     <dbl> -76.51168, -76.51237, -76.51537, -76.54000, -76.51350, -7…
## $ latitud      <dbl> 3.43382, 3.43369, 3.43566, 3.43500, 3.45891, 3.36971, 3.4…

1. Realice un filtro a la base de datos e incluya solo las ofertas de : base1: casas, de la zona norte de la ciudad. Presente los primeros 3 registros de las bases y algunas tablas que comprueben la consulta. (Adicional un mapa con los puntos de las bases. Discutir si todos los puntos se ubican en la zona correspondiente o se presentan valores en otras zonas, por que?).

# Filtrar las casas ubicadas en la zona norte
zonaNorte_Casas <- vivienda %>%
  filter(zona == "Zona Norte" & tipo == "Casa")

# Mostrar los primeros 3 registros de las bases
head(zonaNorte_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>

# Tablas que comprueban la consulta
# Tabla de frecuencia de los tipos de propiedad en la zona norte
table(zonaNorte_Casas$tipo)
## 
## Casa 
##  722

# Tabla de frecuencia de los estratos en la zona norte
table(zonaNorte_Casas$estrato)
## 
##   3   4   5   6 
## 235 161 271  55

# Tabla de frecuencia de los barrios en la zona norte
table(zonaNorte_Casas$barrio)
## 
##                     acopi           alameda del río                    alamos 
##                        70                         1                         3 
##         atanasio girardot              barranquilla        barrio tranquilo y 
##                         1                         3                         1 
##               base aérea                    berlin             brisas de los 
##                         2                         1                        22 
##        brisas del guabito                      Cali                 calibella 
##                         1                        13                         1 
##                    calima             calimio norte                  cambulos 
##                         6                         3                         1 
##                centenario                 chapinero                chipichape 
##                         3                         1                         5 
##         ciudad los álamos        colinas del bosque                 cristales 
##                        11                         1                         1 
##                 el bosque                  el cedro           el gran limonar 
##                        37                         1                         1 
##                el guabito                   el sena                el trébol 
##                         1                         1                         1 
##           evaristo garcía          flora industrial                  floralia 
##                         1                         4                         3 
##                    gaitan                   granada      jorge eliecer gaitán 
##                         1                        10                         1 
##                 juanamb√∫                   la base                la campiña 
##                        11                         1                         4 
##              la esmeralda                  la flora                  La Flora 
##                         1                        99                         1 
##               la floresta                 la merced                 la rivera 
##                         2                        24                         9 
##               la rivera i              la rivera ii                la riviera 
##                         1                         2                         1 
##              la villa del               las acacias             las américas 
##                         1                         1                         1 
##                las ceibas              las delicias               las granjas 
##                         2                         3                         1 
##                 los andes             los guaduales            los guayacanes 
##                        13                        10                         2 
##                manzanares                     menga   metropolitano del norte 
##                         1                         2                         1 
##          nueva tequendama         oasis de comfandi                 occidente 
##                         1                         1                         1 
##                    pacara     parque residencial el              paseo de los 
##                         2                         1                         2 
##         paso del comercio         poblado campestre                   popular 
##                         2                         1                         5 
##       portada de comfandi      portales de comfandi                  porvenir 
##                         1                         1                         2 
##          prados del norte        quintas de salomia             rozo la torre 
##                        31                         1                         1 
##                   salomia                  san luis                  san luís 
##                        20                         2                         1 
##               san vicente             santa bárbara              santa monica 
##                        31                         1                        16 
##              Santa Monica              santa mónica        santa monica norte 
##                         1                         1                         1 
##  santa monica residencial  santa mónica residencial                 santander 
##                         5                        15                         1 
##            tejares de san        torres de comfandi         unión de vivienda 
##                         1                         2                         1 
## urbanización barranquilla     urbanización la flora    urbanización la merced 
##                         2                        23                         4 
##     urbanización la nueva            valle del lili                 versalles 
##                         1                         1                        16 
##            villa colombia         villa de veracruz           villa del prado 
##                         1                         4                        40 
##           Villa Del Prado             villa del sol        villas de veracruz 
##                         1                        12                         7 
##        Villas De Veracruz                    vipasa                zona norte 
##                         1                        30                        19 
##              zona oriente 
##                         1

# Crear el mapa
mapa_vivienda <- leaflet(zonaNorte_Casas) %>%
  addTiles() %>%
  addMarkers(lng = ~longitud, lat = ~latitud, popup = ~paste("ID:", id, "<br>Barrio:", barrio))
mapa_vivienda

# Filtrar las casas que no están en la zona norte
zonaGlobal_Casas <- vivienda %>%
  filter(zona != "Zona Norte" & tipo == "Casa")

# Crear el mapa con todos los puntos
mapa_global <- leaflet() %>%
  addTiles()

# Agregar marcadores para casas en la zona norte (en color azul)
mapa_global<- mapa_global %>%
  addCircleMarkers(data = zonaNorte_Casas, lng = ~longitud, lat = ~latitud, 
                   color = "blue", radius = 5, popup = ~paste("ID:", id, "<br>Barrio:", barrio))

# Agregar marcadores para casas en otras zonas (en color rojo)
mapa_global <- mapa_global %>%
  addCircleMarkers(data = zonaGlobal_Casas, lng = ~longitud, lat = ~latitud, 
                   color = "red", radius = 5, popup = ~paste("ID:", id, "<br>Barrio:", barrio))
mapa_global

Según los mapas, podemos observar lo siguiente:

2. Realice un análisis exploratorio de datos enfocado en la correlación entre la variable respuesta (precio de la casa) en función del área construida, estrato, numero de baños, numero de habitaciones y zona donde se ubica la vivienda. Use gráficos interactivos con el paquete plotly e interprete los resultados.

# Crear matriz de correlación
correlacion <- cor(zonaNorte_Casas[, c("preciom", "areaconst", "estrato", "banios", "habitaciones")])
correlacion
##                preciom areaconst   estrato    banios habitaciones
## preciom      1.0000000 0.7313480 0.6123503 0.5233357    0.3227096
## areaconst    0.7313480 1.0000000 0.4573818 0.4628152    0.3753323
## estrato      0.6123503 0.4573818 1.0000000 0.4083039    0.1073141
## banios       0.5233357 0.4628152 0.4083039 1.0000000    0.5755314
## habitaciones 0.3227096 0.3753323 0.1073141 0.5755314    1.0000000

# Extraer la correlación de la variable precio de la casa
correlacion_ <- correlacion[1, -1]

# Crear un gráfico de barras para visualizar la correlación de la variable de interés con las otras variables
correlacion_gráfico <- plot_ly(x = names(correlacion_), y = correlacion_, type = "bar") %>%
  layout(title = "Correlación con respecto al Precio de la casa",
         xaxis = list(title = "Variables"),
         yaxis = list(title = "Correlación"))
# Mostrar el gráfico
correlacion_gráfico

3. Estime un modelo de regresión lineal múltiple con las variables del punto anterior (precio = f(área construida, estrato, número de cuartos, número de parqueaderos, número de baños ) ) e interprete los coeficientes si son estadísticamente significativos. Las interpretaciones deber están contextualizadas y discutir si los resultados son lógicos. Adicionalmente interprete el coeficiente R2 y discuta el ajuste del modelo e implicaciones (que podrían hacer para mejorarlo).

# Estimar el modelo de regresión lineal múltiple
modelo_regresion <- lm(preciom ~ areaconst + estrato + banios + habitaciones + parqueaderos, data = zonaNorte_Casas)

# Mostrar resumen del modelo
summary(modelo_regresion)
## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + banios + habitaciones + 
##     parqueaderos, data = zonaNorte_Casas)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -784.29  -77.56  -16.03   47.67  978.61 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -238.17090   44.40551  -5.364 1.34e-07 ***
## areaconst       0.67673    0.05281  12.814  < 2e-16 ***
## estrato        80.63495    9.82632   8.206 2.70e-15 ***
## banios         18.89938    7.48800   2.524    0.012 *  
## habitaciones    7.64511    5.65873   1.351    0.177    
## parqueaderos   24.00598    5.86889   4.090 5.14e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 155.1 on 429 degrees of freedom
##   (287 observations deleted due to missingness)
## Multiple R-squared:  0.6041, Adjusted R-squared:  0.5995 
## F-statistic: 130.9 on 5 and 429 DF,  p-value: < 2.2e-16

El modelo de regresión lineal múltiple estimado para predecir el precio de las casas en la zona norte se presenta a continuación:

Para mejorar el ajuste del modelo y explorar otras posibles influencias en el precio de las casas, podríamos considerar incluir variables adicionales relevantes, como la ubicación específica dentro de la zona norte, características adicionales de la propiedad, y analizar la presencia de multicolinealidad entre nuestras variables predictivas que podrían afectar nuestro modelo.

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

4.1 Linealidad

# Gráfico de residuos vs valores ajustados
plot(modelo_regresion, which = 1)

Si bien la mayoría de los residuos se distribuyen alrededor de la línea horizontal en cero, se observan algunos puntos que se alejan significativamente de este valor. Esta variación en la dispersión de los residuos en torno a cero puede sugerir que el supuesto de homocedasticidad no se cumple por completo, lo que requeriría una evaluación más detallada de la variabilidad de los errores del modelo.

4.2 Normalidad de los residuos

# Prueba de Shapiro-Wilk
shapiro.test(resid(modelo_regresion))
## 
##  Shapiro-Wilk normality test
## 
## data:  resid(modelo_regresion)
## W = 0.85246, p-value < 2.2e-16
# Gráfico Q-Q
qqnorm(resid(modelo_regresion))
qqline(resid(modelo_regresion))

El valor de estadístico W es 0.85246 y el p-valor asociado es menor que 2.2e-16. Es decir, indica que hay evidencia significativa para rechazar la hipótesis nula de normalidad de los residuos. Por lo tanto, los residuos no siguen una distribución normal, lo que sugiere que el modelo puede no ser completamente adecuado para los datos.

4.3 Homocedasticidad de los residuos

# Gráfico de residuos vs valores ajustados
plot(modelo_regresion, which = 3)

# Prueba de Breusch-Pagan
bptest(modelo_regresion)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_regresion
## BP = 80.281, df = 5, p-value = 7.33e-16

El valor del estadístico de prueba es BP = 80.281 con 5 grados de libertad, y el p-valor asociado es menor que 7.33e-16. Esto indica que hay evidencia significativa para rechazar la hipótesis nula de homocedasticidad de los residuos. Por lo tanto, podemos concluir que los residuos del modelo no tienen una varianza constante, lo que sugiere la presencia de heterocedasticidad. Adicionalmente, indica que la varianza de los errores no es constante en todos los niveles de las variables predictoras, lo que puede sesgar las estimaciones de los coeficientes y afectar la precisión de las inferencias.

4.4 Independencia de los residuos

# Gráfico de autocorrelación de los residuos
acf(resid(modelo_regresion))

Al observar 7 rezagos fuera de las líneas horizontales en el gráfico de autocorrelación parcial de los residuos, se evidencia que existe autocorrelación en los residuos del modelo de regresión. Esto implica que los residuos no son independientes y pueden estar correlacionados entre sí a través del tiempo o de alguna otra variable no considerada en el modelo. Esta falta de independencia podría indicar que el modelo no captura completamente la estructura de los datos.

5. Con el modelo identificado debe predecir el precio de la vivienda con las características de la primera solicitud.

# Características vivienda 1
vivienda_1 <- data.frame(areaconst=c(200,200),estrato=c(4,5),habitaciones=c(4,4),parqueaderos=c(1,1),banios=c(2,2))

# Predicción del precio vivienda 1
Precio_vivienda1 <- predict(modelo_regresion, newdata = vivienda_1)
Precio_vivienda1
##        1        2 
## 312.1010 392.7359

Tenemos como valores predichos dos resultados que representan lo siguiente para vivienda 1:

6. Con las predicciones del modelo sugiera potenciales ofertas que responda a la solicitud de la vivienda 1. Tenga encuentra que la empresa tiene crédito pre-aprobado de máximo 350 millones de pesos. Realice un análisis y presente en un mapa al menos 5 ofertas potenciales que debe discutir.

# características de la vivienda 1
Filter_vivienda1 <- zonaNorte_Casas %>%
  filter(areaconst >= 200,
         banios >= 2,
         habitaciones >= 4,
         estrato == c(4,5),
         parqueaderos >= 1,
         preciom <= 350)

# Ofertas potenciales en orden descendente
Ofertas_vivienda1 <- Filter_vivienda1 %>%
  arrange(preciom)
Ofertas_vivienda1 <- head(Ofertas_vivienda1,5)
Ofertas_vivienda1
## # A tibble: 5 × 13
##      id zona    piso  estrato preciom areaconst parqueaderos banios habitaciones
##   <dbl> <chr>   <chr>   <dbl>   <dbl>     <dbl>        <dbl>  <dbl>        <dbl>
## 1  1020 Zona N… 02          4     230       250            2      3            5
## 2  7432 Zona N… 01          4     260       280            2      4            6
## 3  1914 Zona N… 02          5     300       205            2      5            6
## 4  4458 Zona N… 02          4     315       270            2      4            4
## 5  1343 Zona N… 02          5     320       200            2      4            4
## # ℹ 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>

# mapa con las ofertas potenciales seleccionadas
mapa_vivienda1 <- leaflet() %>%
  addTiles()

# marcadores para las ofertas potenciales
mapa_vivienda1 <- mapa_vivienda1 %>%
  addCircleMarkers(data = Ofertas_vivienda1, lng = ~longitud, lat = ~latitud, 
                   color = "red", radius = 5, popup = ~paste("ID:", id, "<br>Barrio:", barrio, "<br>Precio:", preciom, "millones de pesos COP"))

mapa_vivienda1

Se ordenaron las ofertas de menor a mayor con respecto al precio en millones COP (variable objetivo), para aquellas 5 que cumplian con las características de las variables explicativas, se tienen los siguientes resultados:

7. Realice los pasos del 1 al 6. Para la segunda solicitud que tiene un crédito pre-aprobado por valor de $850 millones.

7.1 Realice un filtro a la base de datos e incluya solo las ofertas de : base1: apartamentos, de la zona sur de la ciudad. Presente los primeros 3 registros de las bases y algunas tablas que comprueben la consulta. (Adicional un mapa con los puntos de las bases. Discutir si todos los puntos se ubican en la zona correspondiente o se presentan valores en otras zonas, por que?).

# Filtrar apartamentos ubicados en la zona sur
zonaSur_Apartamentos <- vivienda %>%
  filter(zona == "Zona Sur" & tipo == "Apartamento")

# Mostrar los primeros 3 registros de las bases
head(zonaSur_Apartamentos, 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>

# Tablas que comprueban la consulta
# Tabla de frecuencia de los tipos de propiedad en la zona sur
table(zonaSur_Apartamentos$tipo)
## 
## Apartamento 
##        2787

# Tabla de frecuencia de los estratos en la zona sur
table(zonaSur_Apartamentos$estrato)
## 
##    3    4    5    6 
##  201 1091 1033  462

# Tabla de frecuencia de los barrios en la zona sur
table(zonaSur_Apartamentos$barrio)
## 
##                         acopi                    aguablanca 
##                             1                             1 
##                     aguacatal                       alameda 
##                             1                             2 
##                 alférez real                  alferez real 
##                             4                             1 
##                   alto jordán            altos de guadalupe 
##                             1                             1 
##                      arboleda             belisario caicedo 
##                             1                             2 
##                   bella suiza           bloques del limonar 
##                             5                             1 
##                     bochalema           bosques del limonar 
##                            33                            12 
##            brisas del limonar                  buenos aires 
##                             1                             4 
##                        caldas                          Cali 
##                             1                             3 
##                     calicanto                      cambulos 
##                             2                             2 
##                   camino real                   Camino Real 
##                            14                             1 
##                     campestre                         caney 
##                             1                            58 
##                caney especial                   cañasgordas 
##                             1                             5 
##                  cañaveralejo                   cañaverales 
##                             9                            19 
##       cañaverales los samanes                         capri 
##                             1                            43 
##                   cataya real               cerro cristales 
##                             1                             1 
##                    champagnat                   ciudad 2000 
##                             1                            19 
##              ciudad bochalema                  ciudad capri 
##                            48                             9 
##                 ciudad jardin                 ciudad jardín 
##                             9                           218 
##           ciudad jardin pance              ciudad meléndez 
##                             1                             1 
##               ciudad melendez               ciudad pacifica 
##                             1                             2 
##               Ciudad Pacifica          ciudad universitaria 
##                             1                             1 
##            ciudadela comfandi            ciudadela melendez 
##                             2                             1 
##           ciudadela pasoancho               colinas del sur 
##                             3                             3 
##                    colseguros              colseguros andes 
##                            22                             1 
##                     cristales               cristobal colón 
##                             1                             2 
##               cuarto de legua                 departamental 
##                            30                            16 
##                      el caney                      El Caney 
##                           124                             1 
##                     el dorado               el gran limonar 
##                             6                             3 
##                     el guabal                    el ingenio 
##                             4                           128 
##                  el ingenio 3                  el ingenio i 
##                             1                            13 
##                 el ingenio ii                el ingenio iii 
##                             9                            10 
##                     el jordán                       el lido 
##                             1                            33 
##                    el limonar                    el refugio 
##                            59                            77 
##                 fuentes de la                  gran limonar 
##                             1                             8 
##                     guadalupe                       ingenio 
##                            10                             1 
##                    ingenio ii                   la alborada 
##                             1                             4 
##                    la cascada                      la flora 
##                             2                             1 
##                   la hacienda                   La Hacienda 
##                           108                             1 
##                      la luisa                      la selva 
##                             1                             7 
##                   las acacias                  las camelias 
##                             1                             1 
##                   las granjas                  las vegas de 
##                             7                             1 
##                  los cambulos                  los cámbulos 
##                            19                             3 
##                los farallones             mayapan las vegas 
##                             2                            31 
##                     meléndez                      melendez 
##                            19                            40 
##                    miraflores                   multicentro 
##                             1                            27 
##                       napoles                       nápoles 
##                             1                            12 
##                     normandía              nueva tequendama 
##                             1                            36 
##            oasis de pasoancho                   pampa linda 
##                             1                            13 
##                    pampalinda                  panamericano 
##                             3                             2 
##                         pance           parcelaciones pance 
##                           205                            18 
##                     pasoancho                         ponce 
##                             5                             1 
##            prados del limonar            Prados Del Limonar 
##                             3                             1 
##               primero de mayo                quintas de don 
##                            24                            58 
##                       refugio                       samanes 
##                             1                             1 
##          samanes de guadalupe                     san bosco 
##                             1                             2 
##                  san fernando                  San Fernando 
##                            18                             1 
##            san fernando nuevo            san fernando viejo 
##                             4                             5 
##                   san joaquin                   santa anita 
##                             1                            36 
##                   Santa Anita                   santa elena 
##                             2                             1 
##                  santa isabel                santa teresita 
##                             7                             6 
##                 santo domingo              sector aguacatal 
##                             1                             1 
## sector cañaveralejo guadalupe                     seminario 
##                             2                            22 
##                      templete                    tequendama 
##                             2                            14 
##                unicentro cali       urbanización colseguros 
##                             1                             2 
##        urbanizacion gratamira    urbanización nueva granada 
##                             1                             1 
##         urbanización río lili       urbanización tequendama 
##                             3                             2 
##                 valle de lili                valle del lili 
##                             1                           837 
##                Valle Del Lili                     versalles 
##                             1                             1 
##                 villa del sur                        vipasa 
##                             1                             1 
##                      zona sur 
##                            32

# Crear el mapa
mapa_vivienda <- leaflet(zonaSur_Apartamentos) %>%
  addTiles() %>%
  addMarkers(lng = ~longitud, lat = ~latitud, popup = ~paste("ID:", id, "<br>Barrio:", barrio))
mapa_vivienda

# Filtrar los apto que no están en la zona sur
zonaGlobal_Apto <- vivienda %>%
  filter(zona != "Zona Sur" & tipo == "Apartamento")

# Crear el mapa con todos los puntos
mapa_global <- leaflet() %>%
  addTiles()

# Agregar marcadores para apto en la zona sur (en color azul)
mapa_global<- mapa_global %>%
  addCircleMarkers(data = zonaSur_Apartamentos, lng = ~longitud, lat = ~latitud, 
                   color = "blue", radius = 5, popup = ~paste("ID:", id, "<br>Barrio:", barrio))

# Agregar marcadores para Apto en otras zonas (en color rojo)
mapa_global <- mapa_global %>%
  addCircleMarkers(data = zonaGlobal_Apto, lng = ~longitud, lat = ~latitud, 
                   color = "red", radius = 5, popup = ~paste("ID:", id, "<br>Barrio:", barrio))
mapa_global

Según los mapas, podemos observar lo siguiente:

  • Las ubicaciones marcadas en azul representan las coordenadas de las viviendas tipo apartamento en la zona sur. Se destaca una alta concentración de puntos azules en esta área, aunque también hay puntos dispersos en otras partes de la ciudad que no corresponden a la zona sur. Esto sugiere un posible error en las coordenadas asignadas.
  • Las ubicaciones marcadas en rojo representan el resto de zonas distintos a la zona sur.

7.2 Realice un análisis exploratorio de datos enfocado en la correlación entre la variable respuesta (precio de la casa) en función del área construida, estrato, numero de baños, numero de habitaciones y zona donde se ubica la vivienda. Use gráficos interactivos con el paquete plotly e interprete los resultados.

# Crear matriz de correlación
correlacion2 <- cor(zonaSur_Apartamentos[, c("preciom", "areaconst", "estrato", "banios", "habitaciones")])
correlacion2
##                preciom areaconst   estrato    banios habitaciones
## preciom      1.0000000 0.7579955 0.6727067 0.7196705    0.3317538
## areaconst    0.7579955 1.0000000 0.4815593 0.6618179    0.4339608
## estrato      0.6727067 0.4815593 1.0000000 0.5686171    0.2125953
## banios       0.7196705 0.6618179 0.5686171 1.0000000    0.5149227
## habitaciones 0.3317538 0.4339608 0.2125953 0.5149227    1.0000000

# Extraer la correlación de la variable precio de la casa
correlacion_2 <- correlacion2[1, -1]

# Crear un gráfico de barras para visualizar la correlación de la variable de interés con las otras variables
correlacion_gráfico2 <- plot_ly(x = names(correlacion_2), y = correlacion_2, type = "bar") %>%
  layout(title = "Correlación con respecto al Precio de la casa",
         xaxis = list(title = "Variables"),
         yaxis = list(title = "Correlación"))
# Mostrar el gráfico
correlacion_gráfico2

Las correlaciones entre las variables son las siguientes:

  • Hay una correlación positiva fuerte (0.76) entre el precio del inmueble y el área construida.
  • Existe una correlación moderada positiva (0.67) entre el precio del inmueble y el estrato.
  • Se observa una correlación moderada positiva (0.72) entre el precio del inmueble y el número de baños.
  • La correlación entre el precio del inmueble y el número de habitaciones es baja (0.33).
  • Hay una correlación moderada positiva (0.66) entre el área construida y el número de baños.
  • Existe una correlación moderada positiva (0.48) entre el área construida y el estrato.
  • La correlación entre el área construida y el número de habitaciones es moderada (0.43).
  • Existe una correlación moderada positiva (0.57) entre el estrato y el número de baños.
  • La correlación entre el estrato y el número de habitaciones es baja (0.21).
  • Hay una correlación moderada positiva (0.51) entre el número de baños y el número de habitaciones.

7.3 Estime un modelo de regresión lineal múltiple con las variables del punto anterior (precio = f(área construida, estrato, número de cuartos, número de parqueaderos, número de baños ) ) e interprete los coeficientes si son estadísticamente significativos. Las interpretaciones deber están contextualizadas y discutir si los resultados son lógicos. Adicionalmente interprete el coeficiente R2 y discuta el ajuste del modelo e implicaciones (que podrían hacer para mejorarlo).

# Estimar el modelo de regresión lineal múltiple
modelo_regresion2 <- lm(preciom ~ areaconst + estrato + banios + habitaciones + parqueaderos, data = zonaSur_Apartamentos)

# Mostrar resumen del modelo
summary(modelo_regresion2)
## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + banios + habitaciones + 
##     parqueaderos, data = zonaSur_Apartamentos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1092.02   -42.28    -1.33    40.58   926.56 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -261.62501   15.63220 -16.736  < 2e-16 ***
## areaconst       1.28505    0.05403  23.785  < 2e-16 ***
## estrato        60.89709    3.08408  19.746  < 2e-16 ***
## banios         50.69675    3.39637  14.927  < 2e-16 ***
## habitaciones  -24.83693    3.89229  -6.381 2.11e-10 ***
## parqueaderos   72.91468    3.95797  18.422  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 98.02 on 2375 degrees of freedom
##   (406 observations deleted due to missingness)
## Multiple R-squared:  0.7485, Adjusted R-squared:  0.748 
## F-statistic:  1414 on 5 and 2375 DF,  p-value: < 2.2e-16

El modelo de regresión lineal múltiple estimado para predecir el precio de los apartamentos en la zona sur se presenta a continuación:

  • Intercepto: El coeficiente del intercepto es -265.05. Esto sugiere que, si todas las variables independientes son cero, el precio esperado del apartamento sería de -265.05 unidades monetarias. Sin embargo, este valor tiene poco significado práctico, para realizar su conclusión se deben convertir las variables predictores restando la media para concluir cuanto sería el precio esperado de la casa si todas sus variables independientes son 0.

  • Área Construida (areaconst): El coeficiente para el área construida es 1.66, con un error estándar de 0.05. Esto implica que por cada unidad adicional de área construida, se espera un aumento de aproximadamente 1.66 unidades monetarias en el precio del apartamento. Este coeficiente es altamente significativo (p < 0.001), indicando una relación positiva entre el área construida y el precio del apartamento.

  • Estrato: El coeficiente para el estrato es 70.37, con un error estándar de 2.79. Manteniendo constantes las demás variables, el precio del apartamento aumenta en 70.37 unidades monetarias por cada incremento unitario en el estrato. Este coeficiente es altamente significativo (p < 0.001), lo que sugiere que el estrato tiene un impacto significativo en el precio del apartamento.

  • Número de Baños (banios): El coeficiente para el número de baños es 57.71, con un error estándar de 3.12. Esto indica que, manteniendo constantes las demás variables, el precio del apartamento aumenta en 57.71 unidades monetarias por cada baño adicional. Este coeficiente también es altamente significativo (p < 0.001), lo que sugiere que el número de baños influye en el precio del apartamento.

  • Número de Habitaciones (habitaciones): El coeficiente para el número de habitaciones es -23.29, con un error estándar de 3.55. Aunque negativo, este coeficiente es significativo (p < 0.001), lo que indica que el número de habitaciones tiene un efecto significativo en el precio del apartamento en esta muestra.

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

7.4.1 Linealidad

# Gráfico de residuos vs valores ajustados
plot(modelo_regresion2, which = 1)

Si bien la mayoría de los residuos se distribuyen alrededor de la línea horizontal en cero, se observan algunos puntos que se alejan a una distancia considerable de este valor. Esta variación en la dispersión de los residuos en torno a cero puede sugerir que el supuesto de homocedasticidad no se cumple por completo, lo que requeriría una evaluación más detallada de la variabilidad de los errores del modelo.

7.4.2 Normalidad de los residuos

# Prueba de Shapiro-Wilk
shapiro.test(resid(modelo_regresion2))
## 
##  Shapiro-Wilk normality test
## 
## data:  resid(modelo_regresion2)
## W = 0.79118, p-value < 2.2e-16
# Gráfico Q-Q
qqnorm(resid(modelo_regresion2))
qqline(resid(modelo_regresion2))

El resultado del test de normalidad de Shapiro-Wilk muestra un valor de estadístico W de 0.79118 y un p-valor menor que 2.2e-16. Por lo tanto, se rechaza la hipótesis nula de normalidad de los residuos. Esto indica que los residuos no siguen una distribución normal, lo que plantea dudas sobre la adecuación del modelo para los datos.

7.4.3 Homocedasticidad de los residuos

# Gráfico de residuos vs valores ajustados
plot(modelo_regresion2, which = 3)

# Prueba de Breusch-Pagan
bptest(modelo_regresion2)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_regresion2
## BP = 754.81, df = 5, p-value < 2.2e-16

El resultado del test de Breusch-Pagan para residuos studentizados muestra un estadístico BP de 754.81, con 5 grados de libertad y un p-valor menor que 2.2e-16. Por lo tanto, se rechaza la hipótesis nula de homocedasticidad, lo que sugiere que hay evidencia significativa de heterocedasticidad en el modelo.

7.4.4 Independencia de los residuos

# Gráfico de autocorrelación de los residuos
acf(resid(modelo_regresion2))

Al observar la mayroría de rezagos fuera de las líneas horizontales en el gráfico de autocorrelación parcial de los residuos, se evidencia que existe autocorrelación en los residuos del modelo de regresión. Esto implica que los residuos no son independientes y pueden estar correlacionados entre sí a través del tiempo o de alguna otra variable no considerada en el modelo. Esta falta de independencia podría indicar que el modelo no captura completamente la estructura de los datos.

7.5 Con el modelo identificado debe predecir el precio de la vivienda con las características de la primera solicitud.

# Características vivienda 2
vivienda_2 <- data.frame(areaconst=c(300,300),estrato=c(5,6),habitaciones=c(5,5),parqueaderos=c(3,3),banios=c(3,3))

# Predicción del precio vivienda 1
Precio_vivienda2 <- predict(modelo_regresion2, newdata = vivienda_2)
Precio_vivienda2
##        1        2 
## 675.0247 735.9218

Tenemos como valores predichos dos resultados que representan lo siguiente para vivienda 1:

  • La primera predicción corresponde al precio estimado para una vivienda con las características dadas y un estrato 5, que se calcula en $675.0247 millones de pesos COP.
  • La segunda predicción, por otro lado, muestra el precio pronosticado para una vivienda con las mismas características pero con un estrato 6, el cual asciende a $735.9218 millones de pesos COP.

7.6 Con las predicciones del modelo sugiera potenciales ofertas que responda a la solicitud de la vivienda 2 Tenga encuentra que la empresa tiene crédito pre-aprobado de máximo 850 millones de pesos. Realice un análisis y presente en un mapa al menos 5 ofertas potenciales que debe discutir.

# características de la vivienda 2
Filter_vivienda2 <- zonaSur_Apartamentos %>%
  filter(areaconst >= 300,
         banios >= 3,
         habitaciones >= 5,
         estrato %in% c(5,6),
         parqueaderos >= 3,
         preciom <= 850)

# Ofertas potenciales en orden descendente
Ofertas_vivienda2 <- Filter_vivienda2 %>%
  arrange(preciom)
Ofertas_vivienda2 <- head(Ofertas_vivienda2,5)
Ofertas_vivienda2
## # A tibble: 2 × 13
##      id zona    piso  estrato preciom areaconst parqueaderos banios habitaciones
##   <dbl> <chr>   <chr>   <dbl>   <dbl>     <dbl>        <dbl>  <dbl>        <dbl>
## 1  7512 Zona S… <NA>        5     670       300            3      5            6
## 2  7182 Zona S… <NA>        5     730       573            3      8            5
## # ℹ 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>

# mapa con las ofertas potenciales seleccionadas
mapa_vivienda2 <- leaflet() %>%
  addTiles()

# marcadores para las ofertas potenciales
mapa_vivienda2 <- mapa_vivienda2 %>%
  addCircleMarkers(data = Ofertas_vivienda2, lng = ~longitud, lat = ~latitud, 
                   color = "red", radius = 5, popup = ~paste("ID:", id, "<br>Barrio:", barrio, "<br>Precio:", preciom, "millones de pesos COP"))

mapa_vivienda2

Se ordenaron las ofertas de menor a mayor con respecto al precio en millones COP (variable objetivo), para aquellas 5 que cumplian con las características de las variables explicativas, se tienen los siguientes resultados: