Caso C&A

1. Enunciado

Maria comenzó como agente de bienes raíces en Cali hace 10 años. Después de laborar dos años para una empresa nacional, se traslado a Bogotá y trabajó para otra agencia de bienes raíces. Sus amigos y familiares la convencieron de que con su experiencia y conocimientos del negocio debía abrir su propia agencia. Terminó por adquirir la licencia de intermediario y al poco tiempo fundó su propia compañía, C&A (Casas y Apartamentos) en Cali. Santiago y Lina, dos vendedores de la empresa anterior aceptaron trabajar en la nueva compaña. En la actualidad ocho agentes de bienes raíces colaboran con ella en C&A.

Actualmente las ventas de bienes raíces en Cali se han visto disminuidas de manera significativa en lo corrido del año. Durante este periodo muchas instituciones bancarias de ahorro y vivienda están prestando grandes sumas de dinero para la industria y la construcción comercial y residencial. Cuando el efecto producto de las tensiones políticas y sociales disminuya, se espera que la actividad económica de este sector se reactive.

Hace dos días, María recibió una carta solicitando asesoría para la compra de dos viviendas por parte de una compañía internacional que desea ubicar a dos de sus empleados con sus familias en la ciudad. Las solicitudes incluyen las siguientes condiciones:

Características Vivienda 1 Vivienda 2
Tipo Casa Apartamento
Área construida (m²) 200 300
Parqueaderos 1 3
Baños 2 3
Habitaciones 4 5
Estrato 4 o 5 5 o 6
Zona Norte Sur
Crédito preaprobado 350 millones 850 millones

Ayude a María a responder la solicitud, mediante técnicas modelación que usted conoce. Ella requiere le envíe un informe ejecutivo donde analice los dos casos y sus recomendaciones (Informe). Como soporte del informe debe anexar las estimaciones, validaciones y comparación de modelos requeridos (Anexos) .

2. Datos

Los datos de los tres últimos meses se adjuntan en la base que puede obtener con el siguiente código en R

Variable Descripción
zona Ubicación de la vivienda: Zona Centro, Zona Norte,…
piso Piso que ocupa la vivienda: primer piso, segundo piso…
estrato Estrato socio-económico: 3, 4, 5, 6
preciom Precio de la vivienda en millones de pesos
areaconst Área construida
parqueaderos Número de parqueaderos
banios Número de baños
habitaciones Número de habitaciones
tipo Tipo de vivienda: Casa, Apartamento
barrio Barrio de ubicación de la vivienda: 20 de Julio, Álamos,…
longitud Coordenada geográfica (longitud)
latitud Coordenada geográfica (latitud)

3. Carga y limpieza de datos

# Configurar un mirror de CRAN
options(repos = c(CRAN = "https://cran.rstudio.com/"))

# Cargar datos
install.packages("devtools") # solo la primera vez
devtools::install_github("centromagis/paqueteMODELOS", force = TRUE)
## Warning: cannot remove prior installation of package 'stringi'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Vladimir\AppData\Local\R\win-library\4.3\00LOCK\stringi\libs\x64\stringi.dll
## a
## C:\Users\Vladimir\AppData\Local\R\win-library\4.3\stringi\libs\x64\stringi.dll:
## Permission denied
## Warning: restored 'stringi'
## Warning: cannot remove prior installation of package 'rlang'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Vladimir\AppData\Local\R\win-library\4.3\00LOCK\rlang\libs\x64\rlang.dll
## a C:\Users\Vladimir\AppData\Local\R\win-library\4.3\rlang\libs\x64\rlang.dll:
## Permission denied
## Warning: restored 'rlang'
## Warning: cannot remove prior installation of package 'cli'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Vladimir\AppData\Local\R\win-library\4.3\00LOCK\cli\libs\x64\cli.dll a
## C:\Users\Vladimir\AppData\Local\R\win-library\4.3\cli\libs\x64\cli.dll:
## Permission denied
## Warning: restored 'cli'
## Warning: cannot remove prior installation of package 'Rcpp'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Vladimir\AppData\Local\R\win-library\4.3\00LOCK\Rcpp\libs\x64\Rcpp.dll
## a C:\Users\Vladimir\AppData\Local\R\win-library\4.3\Rcpp\libs\x64\Rcpp.dll:
## Permission denied
## Warning: restored 'Rcpp'
## Warning: cannot remove prior installation of package 'digest'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Vladimir\AppData\Local\R\win-library\4.3\00LOCK\digest\libs\x64\digest.dll
## a C:\Users\Vladimir\AppData\Local\R\win-library\4.3\digest\libs\x64\digest.dll:
## Permission denied
## Warning: restored 'digest'
## Warning: cannot remove prior installation of package 'curl'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Vladimir\AppData\Local\R\win-library\4.3\00LOCK\curl\libs\x64\curl.dll
## a C:\Users\Vladimir\AppData\Local\R\win-library\4.3\curl\libs\x64\curl.dll:
## Permission denied
## Warning: restored 'curl'
## Warning: cannot remove prior installation of package 'fastmap'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Vladimir\AppData\Local\R\win-library\4.3\00LOCK\fastmap\libs\x64\fastmap.dll
## a
## C:\Users\Vladimir\AppData\Local\R\win-library\4.3\fastmap\libs\x64\fastmap.dll:
## Permission denied
## Warning: restored 'fastmap'
## Warning: cannot remove prior installation of package 'xfun'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Vladimir\AppData\Local\R\win-library\4.3\00LOCK\xfun\libs\x64\xfun.dll
## a C:\Users\Vladimir\AppData\Local\R\win-library\4.3\xfun\libs\x64\xfun.dll:
## Permission denied
## Warning: restored 'xfun'
## Warning: cannot remove prior installation of package 'htmltools'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Vladimir\AppData\Local\R\win-library\4.3\00LOCK\htmltools\libs\x64\htmltools.dll
## a
## C:\Users\Vladimir\AppData\Local\R\win-library\4.3\htmltools\libs\x64\htmltools.dll:
## Permission denied
## Warning: restored 'htmltools'
library(paqueteMODELOS)
data("vivienda")

# Eliminar observaciones con valores NA
vivienda_clean <- na.omit(vivienda)
## package 'devtools' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\Vladimir\AppData\Local\Temp\RtmpI9uODo\downloaded_packages
## stringi      (1.8.3  -> 1.8.4  ) [CRAN]
## cpp11        (0.4.7  -> 0.5.0  ) [CRAN]
## rlang        (1.1.3  -> 1.1.4  ) [CRAN]
## cli          (3.6.2  -> 3.6.3  ) [CRAN]
## Rcpp         (1.0.12 -> 1.0.13 ) [CRAN]
## digest       (0.6.35 -> 0.6.37 ) [CRAN]
## curl         (5.2.1  -> 5.2.2  ) [CRAN]
## fastmap      (1.1.1  -> 1.2.0  ) [CRAN]
## xfun         (0.46   -> 0.47   ) [CRAN]
## cards        (NA     -> 0.2.1  ) [CRAN]
## broom.hel... (1.16.0 -> 1.17.0 ) [CRAN]
## htmltools    (0.5.7  -> 0.5.8.1) [CRAN]
## package 'stringi' successfully unpacked and MD5 sums checked
## package 'cpp11' successfully unpacked and MD5 sums checked
## package 'rlang' successfully unpacked and MD5 sums checked
## package 'cli' successfully unpacked and MD5 sums checked
## package 'Rcpp' successfully unpacked and MD5 sums checked
## package 'digest' successfully unpacked and MD5 sums checked
## package 'curl' successfully unpacked and MD5 sums checked
## package 'fastmap' successfully unpacked and MD5 sums checked
## package 'xfun' successfully unpacked and MD5 sums checked
## package 'cards' successfully unpacked and MD5 sums checked
## package 'broom.helpers' successfully unpacked and MD5 sums checked
## package 'htmltools' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\Vladimir\AppData\Local\Temp\RtmpI9uODo\downloaded_packages
## ── R CMD build ─────────────────────────────────────────────────────────────────
##          checking for file 'C:\Users\Vladimir\AppData\Local\Temp\RtmpI9uODo\remotesb48846ca33ba\Centromagis-paqueteMODELOS-78ce06f/DESCRIPTION' ...     checking for file 'C:\Users\Vladimir\AppData\Local\Temp\RtmpI9uODo\remotesb48846ca33ba\Centromagis-paqueteMODELOS-78ce06f/DESCRIPTION' ...   ✔  checking for file 'C:\Users\Vladimir\AppData\Local\Temp\RtmpI9uODo\remotesb48846ca33ba\Centromagis-paqueteMODELOS-78ce06f/DESCRIPTION' (602ms)
##       ─  preparing 'paqueteMODELOS': (396ms)
##    checking DESCRIPTION meta-information ...  ✔  checking DESCRIPTION meta-information
##       ─  checking for LF line-endings in source and make files and shell scripts
##       ─  checking for empty or unneeded directories
##       ─  building 'paqueteMODELOS_0.1.0.tar.gz'
##      
## 

4. Resultados

1. Realice un filtro a la base de datos e incluya sólo las ofertas de apartamentos. Presente los primeros 3 registros de las bases y algunas tablas que comprueben la consulta.

# Cargar librerías necesarias
library(dplyr)
library(paqueteMODELOS)

# Cargar los datos
data("vivienda")

# Filtrar la base de datos para incluir solo apartamentos
apartamentos <- vivienda %>% filter(tipo == "Apartamento")

# Mostrar los primeros 3 registros de la base filtrada
print(head(apartamentos, 3))

# Tabla de conteo de tipos de vivienda en la base filtrada
print(table(apartamentos$tipo))

# Resumen estadístico de la base filtrada
print(summary(apartamentos))
## # A tibble: 3 × 13
##      id zona    piso  estrato preciom areaconst parqueaderos banios habitaciones
##   <dbl> <chr>   <chr>   <dbl>   <dbl>     <dbl>        <dbl>  <dbl>        <dbl>
## 1  1212 Zona N… 01          5     260        90            1      2            3
## 2  1724 Zona N… 01          5     240        87            1      3            3
## 3  2326 Zona N… 01          4     220        52            2      2            3
## # ℹ 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
## 
## Apartamento 
##        5100 
##        id           zona               piso              estrato     
##  Min.   :   3   Length:5100        Length:5100        Min.   :3.000  
##  1st Qu.:2180   Class :character   Class :character   1st Qu.:4.000  
##  Median :4158   Mode  :character   Mode  :character   Median :5.000  
##  Mean   :4284                                         Mean   :4.727  
##  3rd Qu.:6556                                         3rd Qu.:6.000  
##  Max.   :8317                                         Max.   :6.000  
##                                                                      
##     preciom         areaconst      parqueaderos        banios     
##  Min.   :  58.0   Min.   : 35.0   Min.   : 1.000   Min.   :0.000  
##  1st Qu.: 175.0   1st Qu.: 68.0   1st Qu.: 1.000   1st Qu.:2.000  
##  Median : 279.0   Median : 90.0   Median : 1.000   Median :2.000  
##  Mean   : 366.9   Mean   :112.8   Mean   : 1.568   Mean   :2.617  
##  3rd Qu.: 430.0   3rd Qu.:130.0   3rd Qu.: 2.000   3rd Qu.:3.000  
##  Max.   :1950.0   Max.   :932.0   Max.   :10.000   Max.   :8.000  
##                                   NA's   :869                     
##   habitaciones       tipo              barrio             longitud     
##  Min.   :0.000   Length:5100        Length:5100        Min.   :-76.59  
##  1st Qu.:3.000   Class :character   Class :character   1st Qu.:-76.54  
##  Median :3.000   Mode  :character   Mode  :character   Median :-76.53  
##  Mean   :2.971                                         Mean   :-76.53  
##  3rd Qu.:3.000                                         3rd Qu.:-76.52  
##  Max.   :9.000                                         Max.   :-76.46  
##                                                                        
##     latitud     
##  Min.   :3.334  
##  1st Qu.:3.380  
##  Median :3.419  
##  Mean   :3.419  
##  3rd Qu.:3.453  
##  Max.   :3.498  
## 

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.

# Instalar paquetes si no los tienes instalados

install.packages("plotly")
install.packages("dplyr")
## Warning: package 'dplyr' is in use and will not be installed
# Cargar las librerías necesarias
library(dplyr)
library(plotly)
library(paqueteMODELOS)

# Cargar los datos
data("vivienda")

# Gráfico de dispersión interactivo entre precio y área construida
plot_area <- plot_ly(data = vivienda, 
                     x = ~areaconst, 
                     y = ~preciom, 
                     type = 'scatter', 
                     mode = 'markers',
                     color = ~zona,
                     text = ~paste("Estrato:", estrato, "<br>Baños:", banios, "<br>Habitaciones:", habitaciones)) %>%
  layout(title = "Relación entre el Precio de la Vivienda y el Área Construida",
         xaxis = list(title = "Área Construida (m²)"),
         yaxis = list(title = "Precio de la Vivienda (Millones)"))

plot_area
## Warning: Ignoring 3 observations
## package 'plotly' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\Vladimir\AppData\Local\Temp\RtmpI9uODo\downloaded_packages

Interpretación de los Resultados:

Tendencia General:

  • Existe una tendencia positiva entre el área construida y el precio de la vivienda: en general, a medida que aumenta el área construida, también lo hace el precio de la vivienda. Esto es lógico, ya que viviendas más grandes suelen ser más costosas.

Dispersión por Zonas:

  • Las viviendas están distribuidas en diferentes zonas de la ciudad (Centro, Norte, Oeste, Oriente, Sur), y cada color representa una de estas zonas. Se observa que algunas zonas tienen una mayor dispersión en los precios para viviendas con áreas similares. Por ejemplo, la Zona Sur (verde) parece tener una amplia gama de precios para viviendas con áreas entre 100 y 500 m².

Comparación entre Zonas:

  • La Zona Oeste y la Zona Sur parecen tener los precios más altos, La Zona Centro, La Zona Norte ¿ y la Zona Oriente parecen tener precios más bajos en comparación con otras zonas para viviendas con áreas similares.

Densidad de Datos:

  • Hay una alta concentración de datos en el rango de 0 a 500 m² de área construida, lo que indica que la mayoría de las viviendas en la muestra tienen áreas en ese rango.

  • Por encima de 500 m², las viviendas son menos comunes, pero cuando existen, tienden a tener precios significativamente más altos.

Outliers:

  • Pueden observarse algunas viviendas que se encuentran fuera de la tendencia general, es decir, viviendas con áreas pequeñas pero precios muy altos o viceversa. Esto podría deberse a características específicas de esas viviendas, como una ubicación privilegiada dentro de la zona o instalaciones adicionales.
# Gráfico de caja interactivo para precio según estrato
plot_estrato <- plot_ly(data = vivienda, 
                        x = ~as.factor(estrato), 
                        y = ~preciom, 
                        type = 'box', 
                        color = ~as.factor(estrato)) %>%
  layout(title = "Distribución del Precio de la Vivienda por Estrato",
         xaxis = list(title = "Estrato"),
         yaxis = list(title = "Precio de la Vivienda (Millones)"))

plot_estrato
## Warning: Ignoring 3 observations

Interpretación de los Resultados:

Tendencia General:

  • Existe una clara tendencia ascendente en el precio de la vivienda a medida que aumenta el estrato socioeconómico. Las viviendas en estratos más altos (5 y 6) tienden a ser significativamente más costosas que las viviendas en estratos más bajos (3 y 4).

Mediana del Precio:

  • Estrato 3: La mediana del precio de la vivienda es relativamente baja, alrededor de 200 millones.

  • Estrato 4: La mediana aumenta un poco en comparación con el estrato 3, situándose alrededor de 250 millones.

  • Estrato 5: La mediana del precio se incrementa considerablemente a aproximadamente 350 millones.

  • Estrato 6: La mediana es aún más alta, superando los 500 millones. Rango Intercuartílico (IQR):

  • El rango intercuartílico, que es la diferencia entre el primer y tercer cuartil, es mayor en los estratos 5 y 6, lo que indica que hay una mayor variabilidad en los precios de las viviendas dentro de estos estratos.

  • El estrato 3 y 4 tienen rangos intercuartílicos más estrechos, lo que sugiere que los precios de las viviendas en estos estratos son más consistentes y menos variables.

Outliers (Valores Atípicos):

  • Se observan varios valores atípicos en todos los estratos, especialmente en los estratos 4, 5, y 6. Estos son puntos que se encuentran fuera del rango esperado (por encima del tercer cuartil más 1.5 veces el IQR).

  • En el estrato 6, hay outliers que alcanzan precios muy altos, casi hasta los 2000 millones, lo que indica que en este estrato puede haber viviendas de lujo o con características excepcionales que justifiquen estos precios.

# Gráfico de dispersión interactivo entre precio y número de baños
plot_banios <- plot_ly(data = vivienda, 
                       x = ~banios, 
                       y = ~preciom, 
                       type = 'scatter', 
                       mode = 'markers',
                       color = ~zona,
                       text = ~paste("Área construida:", areaconst, "<br>Estrato:", estrato, "<br>Habitaciones:", habitaciones)) %>%
  layout(title = "Relación entre el Precio de la Vivienda y el Número de Baños",
         xaxis = list(title = "Número de Baños"),
         yaxis = list(title = "Precio de la Vivienda (Millones)"))

plot_banios
## Warning: Ignoring 3 observations

Interpretación de los Resultados:

1. Zona Centro:

  • En la Zona Centro, la mayoría de las viviendas tienen entre 2 y 4 baños. Hay una tendencia general de que, a medida que aumenta el número de baños, el precio de la vivienda también tiende a aumentar, aunque hay una gran variabilidad en los precios para viviendas con más de 4 baños.

  • La dispersión sugiere que, en esta zona, el precio de la vivienda puede variar considerablemente incluso con un número similar de baños, lo que podría deberse a otros factores como la ubicación exacta, el estado de la propiedad, o características adicionales.

2. Zona Norte:

  • La Zona Norte muestra una tendencia similar, pero aquí se observa una mayor cantidad de viviendas con un número elevado de baños (hasta 10). Los precios en esta zona tienden a ser más altos en comparación con la Zona Centro, especialmente para viviendas con más baños.

  • La dispersión de los precios es también significativa, pero hay una clara concentración de viviendas de alto precio (más de 1000 millones) con un número de baños entre 4 y 6.

3. Zona Oeste:

  • En la Zona Oeste, el patrón es similar al de la Zona Norte, con una tendencia al alza en los precios a medida que aumenta el número de baños.

  • Se nota una gran concentración de precios entre 500 y 1500 millones para viviendas con 3 a 6 baños.

  • Al igual que en otras zonas, existe una variabilidad en los precios para viviendas con el mismo número de baños, lo que podría indicar que otros factores también influyen significativamente en el precio.

4. Zona Oriente:

  • La Zona Oriente muestra precios más bajos en general, con una menor dispersión en comparación con otras zonas.

  • La mayoría de las viviendas en esta zona tienen entre 2 y 4 baños, y sus precios están en un rango más limitado.

  • Hay menos propiedades con precios extremadamente altos, lo que sugiere que esta zona podría ser menos costosa y con menos variabilidad en los precios.

5. Zona Sur:

  • En la Zona Sur, existe una gran dispersión de precios, especialmente para viviendas con 4 a 6 baños, donde los precios pueden variar desde los 500 hasta los 2000 millones.

  • Esta zona muestra una amplia variedad de opciones de vivienda, desde propiedades más económicas hasta algunas bastante caras, lo que indica una mayor diversidad en el mercado inmobiliario de esta zona.

  • La relación entre el número de baños y el precio parece ser más consistente, pero con outliers significativos, que podrían ser propiedades de lujo o con características únicas.

Conclusión General:

  • En todas las zonas, hay una tendencia general de que a mayor número de baños, el precio de la vivienda tiende a aumentar. Sin embargo, la variabilidad dentro de cada zona sugiere que el número de baños es solo uno de los muchos factores que determinan el precio de la vivienda.

  • Las zonas Norte y Oeste tienden a tener viviendas con precios más altos y una mayor dispersión, lo que podría reflejar una mayor demanda o la presencia de propiedades de lujo.

  • La Zona Oriente parece ser la más económica y con menos variabilidad, mientras que la Zona Sur presenta una mezcla de propiedades tanto económicas como de lujo, con una amplia dispersión en los precios.

  • Esta información es crucial para María, ya que le permite identificar cómo varían los precios dentro de cada zona en función del número de baños, lo que puede ser un indicador de lujo o tamaño de la vivienda, y usar esta información para asesorar mejor a sus clientes según sus necesidades y presupuesto.

# Gráfico de dispersión interactivo entre precio y número de habitaciones
plot_habitaciones <- plot_ly(data = vivienda, 
                             x = ~habitaciones, 
                             y = ~preciom, 
                             type = 'scatter', 
                             mode = 'markers',
                             color = ~zona,
                             text = ~paste("Área construida:", areaconst, "<br>Estrato:", estrato, "<br>Baños:", banios)) %>%
  layout(title = "Relación entre el Precio de la Vivienda y el Número de Habitaciones",
         xaxis = list(title = "Número de Habitaciones"),
         yaxis = list(title = "Precio de la Vivienda (Millones)"))

plot_habitaciones
## Warning: Ignoring 3 observations

1. Zona Centro:

  • La relación entre el número de habitaciones y el precio de la vivienda en la Zona Centro muestra una tendencia general a que, a medida que aumenta el número de habitaciones, los precios también tienden a aumentar.

  • Sin embargo, la variabilidad es significativa, especialmente en viviendas con 4 o más habitaciones, donde el precio puede variar desde 200 hasta más de 1000 millones.

  • Esto sugiere que el número de habitaciones es un factor importante, pero no el único determinante del precio en esta zona. Otros factores como la ubicación específica dentro de la Zona Centro, la calidad de la construcción o las amenidades podrían influir en el precio.

2. Zona Norte:

  • En la Zona Norte, se observa una tendencia similar, pero con precios más altos en general en comparación con la Zona Centro.

  • Las viviendas con 4 o más habitaciones tienden a tener precios que pueden superar los 1000 millones, especialmente cuando el número de habitaciones es mayor.

  • Este gráfico indica que en la Zona Norte, el número de habitaciones es un fuerte indicador del precio, con una clara progresión en el precio a medida que aumenta el número de habitaciones.

3. Zona Oeste:

  • La Zona Oeste también muestra una tendencia creciente en el precio con el aumento en el número de habitaciones, pero con una mayor dispersión, especialmente en propiedades con 4 habitaciones o más.

  • Las viviendas en esta zona pueden alcanzar precios muy altos (hasta 2000 millones), lo que sugiere la presencia de propiedades de lujo o características adicionales que elevan el precio.

  • Este gráfico muestra que, aunque el número de habitaciones es relevante, existen otros factores que también influyen en el precio en esta zona.

4. Zona Oriente:

  • La Zona Oriente muestra precios significativamente más bajos en comparación con otras zonas.

  • La relación entre el número de habitaciones y el precio es menos pronunciada, con precios que se mantienen relativamente constantes incluso con un aumento en el número de habitaciones.

  • Esto podría indicar que en la Zona Oriente, el precio está más influenciado por otros factores, como la ubicación o las condiciones socioeconómicas de la zona, en lugar del número de habitaciones.

5. Zona Sur:

  • En la Zona Sur, se observa una amplia dispersión en los precios, especialmente en viviendas con 4 o más habitaciones.

  • Los precios pueden variar ampliamente, desde menos de 500 millones hasta más de 1500 millones para viviendas con un número similar de habitaciones.

  • La Zona Sur parece ser una zona con una gran diversidad en términos de propiedades, donde el número de habitaciones es un indicador relevante del precio, pero no el único factor determinante.

Conclusión General:

  • Tendencia General: En la mayoría de las zonas, existe una tendencia creciente en los precios a medida que aumenta el número de habitaciones. Sin embargo, la magnitud de esta relación varía significativamente entre zonas.

  • Zona Centro y Zona Oriente: En estas zonas, el número de habitaciones tiene menos impacto en el precio comparado con otras zonas, lo que podría sugerir que otros factores como la ubicación exacta, el acceso a servicios o la antigüedad de la propiedad juegan un papel más importante.

  • Zona Norte y Zona Oeste: Estas zonas muestran una mayor sensibilidad al número de habitaciones, con una progresión más clara en el precio a medida que aumenta el número de habitaciones, indicando que en estas zonas, el tamaño y la capacidad de la vivienda son factores críticos en la determinación del precio.

  • Zona Sur: Presenta una gran diversidad, lo que podría indicar un mercado más heterogéneo con una mezcla de propiedades económicas y de lujo.

  • Esta interpretación puede ayudar a María a entender cómo el número de habitaciones afecta el precio en diferentes zonas, permitiéndole ofrecer asesorías más precisas a sus clientes basadas en las características de la vivienda y su ubicación.

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

# Cargar las librerías necesarias
library(dplyr)

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

# Resumen del modelo
summary(modelo)
## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos + 
##     banios, data = vivienda)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1412.57   -88.36   -17.55    56.24  1101.38 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -380.7629    14.3638  -26.51   <2e-16 ***
## areaconst       0.8510     0.0222   38.33   <2e-16 ***
## estrato        97.9107     2.8342   34.55   <2e-16 ***
## habitaciones  -31.2744     2.2613  -13.83   <2e-16 ***
## parqueaderos   74.4922     2.5900   28.76   <2e-16 ***
## banios         61.0554     2.6271   23.24   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 177.2 on 6711 degrees of freedom
##   (1605 observations deleted due to missingness)
## Multiple R-squared:  0.7206, Adjusted R-squared:  0.7204 
## F-statistic:  3462 on 5 and 6711 DF,  p-value: < 2.2e-16

Interpretación de los Resultados del Modelo de Regresión Lineal Múltiple

Este modelo tiene como objetivo predecir el precio de la vivienda en función de varias variables: área construida, estrato, número de habitaciones, número de parqueaderos y número de baños. A continuación, se presentan las interpretaciones de los coeficientes y las métricas del modelo.

1. Interpretación de los Coeficientes

Intercepto (Intercept): −380.7629

  • El intercepto representa el precio estimado de una vivienda cuando todas las variables independientes (área construida, estrato, número de habitaciones, parqueaderos y baños) son iguales a cero. En este contexto, como tener valores cero para estas variables no es práctico ni realista (por ejemplo, una vivienda no puede tener 0 metros cuadrados de área construida), el intercepto no tiene una interpretación significativa en el mundo real, pero es necesario para la fórmula del modelo.

Área Construida (areaconst): 0.8510

  • Por cada metro cuadrado adicional de área construida, el precio de la vivienda aumenta en promedio en 0.851 millones de pesos (851,000 pesos), manteniendo constantes las demás variables. Este resultado es lógico, ya que las viviendas más grandes suelen ser más costosas.

Estrato (estrato): 97.9107

  • Por cada unidad adicional en el estrato socioeconómico, el precio de la vivienda aumenta en promedio en 97.91 millones de pesos, manteniendo constantes las demás variables. Este resultado también es lógico, ya que los estratos más altos generalmente se asocian con viviendas en áreas más exclusivas, lo que incrementa el precio.

Número de Habitaciones (habitaciones): −31.2744

  • Cada habitación adicional disminuye el precio de la vivienda en promedio en 31.27 millones de pesos, manteniendo constantes las demás variables. Este resultado puede parecer contraintuitivo, pero podría reflejar que las viviendas con más habitaciones tienden a estar en zonas o en tipos de viviendas menos costosas o con menor área construida por habitación.

Número de Parqueaderos (parqueaderos): 74.4922

  • Cada parqueadero adicional aumenta el precio de la vivienda en promedio en 74.49 millones de pesos, manteniendo constantes las demás variables. Este resultado es consistente con el hecho de que tener más parqueaderos generalmente aumenta el valor de una propiedad, especialmente en zonas urbanas donde el espacio para estacionamiento es limitado.

Número de Baños (banios): 61.0554

  • Cada baño adicional aumenta el precio de la vivienda en promedio en 61.06 millones de pesos, manteniendo constantes las demás variables. Este es un resultado lógico, ya que más baños a menudo se asocian con viviendas de mayor calidad y comodidad.

2. Significancia Estadística de los Coeficientes

  • Todos los coeficientes tienen valores p muy pequeños (menores a 0.001), lo que indica que son estadísticamente significativos al nivel del 0.1%, y podemos rechazar la hipótesis nula de que cada uno de estos coeficientes es igual a cero. Esto significa que cada una de las variables en el modelo tiene un impacto significativo en el precio de la vivienda.

3. Evaluación del Ajuste del Modelo

R-cuadrado (R-squared): 0.7206

  • El \(R^2\) indica que aproximadamente el 72.06% de la variabilidad en el precio de la vivienda puede explicarse por las variables independientes en este modelo.
  • Este es un valor relativamente alto, lo que sugiere que el modelo tiene un buen poder explicativo.

R-cuadrado ajustado (Adjusted R-squared): 0.7204

  • El \(R^2\) ajustado es muy similar al \(R^2\) (72.04%), lo que indica que el modelo es robusto y que la inclusión de las variables no está introduciendo ruido o sobreajuste.

Error estándar residual (Residual Standard Error): 177.2 millones de pesos

  • Este valor indica la magnitud promedio de los errores de predicción en términos de millones de pesos. Aunque el modelo es relativamente preciso, todavía hay una variabilidad en los precios que no es explicada por el modelo.

4. Discusión del Ajuste del Modelo y Mejora Potencial

  • Ajuste del Modelo: El \(R^2\) de 72.06% sugiere que el modelo explica la mayor parte de la variabilidad en el precio de las viviendas, pero aún queda un 27.94% que no está explicado. Esto sugiere que podría haber otras variables relevantes que no se han incluido en el modelo, como la antigüedad de la vivienda, la calidad de los materiales, la cercanía a servicios, etc.

Mejoras Potenciales:

  • Incorporación de nuevas variables: Podría considerarse añadir otras variables como la ubicación exacta (por coordenadas geográficas), la antigüedad de la vivienda, la calidad de la construcción o incluso variables macroeconómicas como las tasas de interés.

  • Modelos no lineales: Dado que la relación entre las variables independientes y el precio podría no ser estrictamente lineal, considerar modelos no lineales o de interacciones entre variables podría mejorar el ajuste.

  • Análisis de valores atípicos: Identificar y analizar los outliers (residuos muy grandes o pequeños) podría ayudar a entender si hay subgrupos de datos que se comportan de manera diferente o si hay errores en los datos.

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

1. Diagnóstico de la Linealidad

  • Para verificar la linealidad, se graficaran los residuos del modelo contra las variables independientes.
# Cargar las librerías necesarias

# Cargar las librerías necesarias
library(ggplot2)

# Ajustar el modelo sin valores NA
modelo <- lm(preciom ~ areaconst + estrato + habitaciones + parqueaderos + banios, data = vivienda_clean)

# Graficar residuos vs. predictores
par(mfrow=c(2,3)) # Configurar múltiples gráficos

plot(vivienda_clean$areaconst, resid(modelo), 
     main = "Residuos vs. Área Construida", 
     xlab = "Área Construida (m²)", ylab = "Residuos")
abline(0, 0)

plot(vivienda_clean$estrato, resid(modelo), 
     main = "Residuos vs. Estrato", 
     xlab = "Estrato", ylab = "Residuos")
abline(0, 0)

plot(vivienda_clean$habitaciones, resid(modelo), 
     main = "Residuos vs. Habitaciones", 
     xlab = "Habitaciones", ylab = "Residuos")
abline(0, 0)

plot(vivienda_clean$parqueaderos, resid(modelo), 
     main = "Residuos vs. Parqueaderos", 
     xlab = "Parqueaderos", ylab = "Residuos")
abline(0, 0)

plot(vivienda_clean$banios, resid(modelo), 
     main = "Residuos vs. Baños", 
     xlab = "Baños", ylab = "Residuos")
abline(0, 0)

1. Residuos vs. Área Construida

Observaciones:

  • Se observa una ligera curvatura en la nube de puntos, especialmente en los valores bajos y altos de área construida.

  • Los residuos parecen estar más concentrados en áreas construidas pequeñas (menos de 500 m²), pero muestran una dispersión más amplia a medida que el área construida aumenta.

Interpretación:

  • La ligera curvatura sugiere que la relación entre el área construida y el precio de la vivienda podría no ser completamente lineal. Podría ser útil considerar la inclusión de un término cuadrático de área construida (areaconst^2) en el modelo para capturar mejor esta relación.

2. Residuos vs. Estrato

Observaciones:

  • Los residuos se distribuyen de manera bastante uniforme alrededor de cero para los diferentes niveles de estrato.

  • No se observa un patrón claro o tendencia entre los residuos y el estrato.

Interpretación:

  • La falta de un patrón claro sugiere que la relación entre el estrato y el precio de la vivienda es aproximadamente lineal, lo que indica que no es necesario transformar esta variable o agregar términos adicionales en el modelo en cuanto a la linealidad.

3. Residuos vs. Habitaciones

Observaciones:

  • Se puede observar una mayor dispersión de los residuos en viviendas con un mayor número de habitaciones, especialmente a partir de 4 habitaciones.

  • No obstante, los residuos parecen estar distribuidos de manera bastante uniforme en torno a cero.

Interpretación:

  • Aunque la dispersión aumenta ligeramente con el número de habitaciones, no parece haber una relación no lineal fuerte. Sin embargo, podría considerarse explorar la inclusión de un término de interacción entre habitaciones y otra variable, o un término cuadrático, si se sospecha que podría haber una relación más compleja.

4. Residuos vs. Parqueaderos

Observaciones:

  • La distribución de los residuos alrededor de cero es bastante uniforme para el número de parqueaderos.
  • No hay un patrón claro que sugiera una relación no lineal.

Interpretación:

  • La relación entre el número de parqueaderos y el precio de la vivienda parece ser lineal, y no hay necesidad de transformar esta variable o agregar términos adicionales para mejorar la linealidad.

5. Residuos vs. Baños

Observaciones:

  • Al igual que con los parqueaderos, los residuos se distribuyen uniformemente alrededor de cero para el número de baños.

  • No se observan patrones claros o curvaturas en la relación.

Interpretación:

  • La relación entre el número de baños y el precio de la vivienda también parece ser lineal, lo que sugiere que el modelo lineal está capturando bien esta relación.

Conclusión General

  • Linealidad: En general, los gráficos de residuos sugieren que la mayoría de las relaciones entre las variables independientes y el precio de la vivienda son aproximadamente lineales, con la posible excepción de la relación entre el área construida y el precio, que podría beneficiarse de la inclusión de un término cuadrático.

Recomendaciones:

  • Considerar la adición de un término cuadrático para el área construida (areaconst^2) para capturar mejor la curvatura observada en el gráfico de residuos.

  • No parece ser necesario realizar transformaciones o añadir términos adicionales para las demás variables, ya que los residuos no muestran patrones significativos que sugieran relaciones no lineales.

2. Diagnóstico de Homoscedasticidad

  • Para verificar la homoscedasticidad, se graficaran los residuos estandarizados contra los valores predichos.
# Graficar residuos estandarizados vs. valores predichos
plot(predict(modelo), rstandard(modelo), 
     main = "Residuos Estandarizados vs. Valores Predichos", 
     xlab = "Valores Predichos", ylab = "Residuos Estandarizados")
abline(0, 0)

Interpretación del Gráfico para Diagnóstico de Homoscedasticidad

Distribución de los Residuos:

  • En un gráfico ideal que cumple con el supuesto de homoscedasticidad, esperaríamos que los residuos estandarizados se distribuyan de manera uniforme alrededor de la línea horizontal en cero, sin que se observe un patrón claro o un cambio en la dispersión a lo largo de los valores predichos.

Observaciones Clave:

  • En el gráfico, se observa que los residuos tienen una dispersión menor en los valores predichos bajos (aproximadamente entre 0 y 500 millones), pero a medida que los valores predichos aumentan, la dispersión de los residuos también aumenta.

  • Este patrón, donde los residuos se expanden a medida que los valores predichos aumentan, sugiere la presencia de heteroscedasticidad. Esto significa que la varianza de los errores no es constante, y tiende a aumentar con valores predichos más altos.

Implicaciones:

  • La presencia de heteroscedasticidad puede hacer que los intervalos de confianza y las pruebas de hipótesis sean menos confiables, ya que la suposición de varianza constante no se cumple.

  • Los coeficientes estimados en el modelo siguen siendo insesgados, pero las estimaciones de su varianza pueden estar sesgadas, lo que afecta la inferencia estadística.

Recomendaciones para Tratar la Heteroscedasticidad

Transformaciones de la Variable Dependiente:

  • Considerar la transformación de la variable dependiente (precio de la vivienda). Por ejemplo, una transformación logarítmica (log(preciom)) podría estabilizar la varianza.

Modelos Robustos:

  • Usar modelos robustos a la heteroscedasticidad, como la regresión ponderada por mínimos cuadrados (Weighted Least Squares, WLS) o la estimación de errores estándar robustos (robust standard errors), puede ayudar a mitigar los efectos de la heteroscedasticidad.

Modelos Alternativos:

  • Explorar modelos no lineales o de series temporales, si es relevante, también podría ayudar a capturar mejor la relación entre las variables, especialmente si hay una estructura más compleja que un simple modelo lineal.

Conclusión

  • El gráfico sugiere que el modelo actual presenta problemas de heteroscedasticidad. Para mejorar el ajuste del modelo y la validez de las inferencias estadísticas, sería recomendable considerar alguna de las acciones mencionadas, como transformar la variable dependiente o utilizar modelos que manejen mejor la heteroscedasticidad.

3. Diagnóstico de Normalidad de los Errores

Podemos usar un gráfico Q-Q (cuantil-cuantil) para verificar la normalidad de los residuos.

# Gráfico Q-Q para los residuos
qqnorm(resid(modelo), main = "Gráfico Q-Q de los Residuos")
qqline(resid(modelo))

Interpretación del Gráfico Q-Q para Diagnóstico de la Normalidad de los Errores

Línea de Referencia:

  • La línea diagonal en el gráfico representa la línea de referencia donde los residuos seguirían una distribución normal perfecta. Si los residuos están normalmente distribuidos, los puntos deberían alinearse a lo largo de esta línea.

Observaciones Clave:

  • En el gráfico, los puntos se desvían de la línea de referencia, especialmente en los extremos (cuantiles más bajos y más altos).

  • Los puntos en la parte superior derecha del gráfico se elevan por encima de la línea de referencia, lo que indica que los residuos en ese rango tienen valores mayores a los esperados bajo una distribución normal.

  • De manera similar, en la parte inferior izquierda del gráfico, los puntos se alejan hacia abajo de la línea de referencia, lo que indica que hay residuos menores a lo esperado bajo una distribución normal.

Implicaciones:

  • El desvío en los extremos del gráfico sugiere que los residuos no siguen una distribución normal, especialmente en las colas de la distribución. Esto es indicativo de la presencia de outliers o una distribución con colas más pesadas (kurtosis alta).

  • La falta de normalidad en los residuos puede afectar la validez de las pruebas de hipótesis y los intervalos de confianza derivados del modelo de regresión, ya que estos asumen que los residuos son normales.

Recomendaciones para Tratar la No-Normalidad de los Errores

Transformación de la Variable Dependiente:

  • Una transformación de la variable dependiente, como una transformación logarítmica (log(preciom)), podría ayudar a normalizar los residuos. Considerar un Modelo Alternativo:

  • Si la transformación no mejora significativamente la normalidad de los residuos, podrías considerar modelos alternativos que no asuman normalidad de los errores, como modelos de regresión robusta.

Investigación de Outliers:

  • Identificar y analizar posibles outliers puede ayudar a entender si ciertos puntos están influyendo de manera desproporcionada en el modelo y afectando la normalidad de los residuos.

Reevaluar el Modelo:

  • En casos donde la normalidad es crítica, como en la construcción de intervalos de predicción, podrías considerar técnicas bootstrap para generar intervalos de confianza y p-valores que no dependan de la normalidad de los residuos.

Conclusión

  • El gráfico Q-Q sugiere que los residuos del modelo no siguen una distribución normal, especialmente en los extremos. Esto podría ser una señal de que los supuestos del modelo de regresión no se cumplen completamente. Para mejorar el ajuste del modelo y asegurar que las inferencias sean válidas, se pueden aplicar algunas de las estrategias mencionadas, como transformar la variable dependiente o explorar modelos alternativos.

4. Diagnóstico de Independencia de los Errores

El test de Durbin-Watson se utiliza comúnmente para verificar la independencia de los errores.

# Instalar paquete necesario
install.packages("lmtest")
library(lmtest)

# Prueba de Durbin-Watson
dwtest(modelo)
## package 'lmtest' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\Vladimir\AppData\Local\Temp\RtmpI9uODo\downloaded_packages
## 
##  Durbin-Watson test
## 
## data:  modelo
## DW = 1.582, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0

El test de Durbin-Watson es una prueba estadística que se utiliza para detectar la presencia de autocorrelación en los residuos de un modelo de regresión lineal. La autocorrelación es un problema cuando los residuos de un modelo están correlacionados entre sí, lo que viola uno de los supuestos clave de la regresión lineal, que es la independencia de los errores.

Resultados del Test de Durbin-Watson

  • DW (Estadístico de Durbin-Watson): 1.582
  • p-value: <2.2e−16
  • Hipótesis alternativa: la autocorrelación verdadera es mayor que 0.

Interpretación de los Resultados

Estadístico de Durbin-Watson (DW = 1.582):

  • Un valor de 1.582 sugiere la presencia de una autocorrelación positiva en los residuos. Aunque no es muy fuerte, está por debajo de 2, lo que indica que los errores no son completamente independientes.

p-value (< 2.2e-16):

  • El p-valor es extremadamente bajo, lo que significa que podemos rechazar la hipótesis nula de que no hay autocorrelación en los residuos.

  • Este p-valor sugiere que la autocorrelación positiva observada en los residuos es estadísticamente significativa.

Implicaciones

  • Autocorrelación positiva: La presencia de autocorrelación positiva significa que los errores tienden a estar relacionados entre sí, lo que puede ser problemático porque:

  • Los errores no son independientes, lo que puede llevar a inferencias incorrectas sobre los coeficientes del modelo.

  • Los intervalos de confianza y las pruebas de hipótesis pueden no ser válidos. La eficiencia de las estimaciones de los coeficientes puede verse afectada.

Recomendaciones

Incluir un término de tendencia o estacionalidad:

  • Si los datos tienen una estructura temporal, como tendencias o estacionalidades, considerar la inclusión de un término de tiempo o de estacionalidad podría ayudar a eliminar la autocorrelación.

Modelos Alternativos:

  • Considerar el uso de modelos que manejan explícitamente la autocorrelación, como los modelos de series temporales (por ejemplo, ARIMA), o modelos que incluyan términos autoregresivos.

Errores estándar robustos:

  • Considerar el uso de errores estándar robustos que ajusten la autocorrelación, lo que permitiría obtener inferencias más confiables sin necesidad de cambiar el modelo subyacente.

Revisar la estructura del modelo:

  • Revisar si falta alguna variable que explique la dependencia observada en los errores. A veces, la autocorrelación puede deberse a la omisión de una variable importante.

Conclusión

  • El test de Durbin-Watson ha revelado la presencia de autocorrelación positiva significativa en los residuos del modelo de regresión lineal. Para mejorar el modelo y garantizar la validez de las inferencias, es recomendable explorar algunos de los enfoques mencionados para manejar la autocorrelación, como la inclusión de términos adicionales en el modelo, la transformación de las variables, o el uso de modelos alternativos.

Evaluación de la multicolinealidad

Para evaluar la multicolinealidad en un modelo de regresión lineal, se utiliza comúnmente el Factor de Inflación de la Varianza (VIF, por sus siglas en inglés). El VIF mide cuánto aumenta la varianza de los coeficientes estimados debido a la colinealidad entre las variables independientes. Un VIF alto indica que una variable independiente está altamente colineada con otras variables en el modelo, lo que puede ser problemático.

install.packages("car")
library(car)

# Ajustar el modelo de regresión lineal
modelo <- lm(preciom ~ areaconst + estrato + habitaciones + parqueaderos + banios, data = vivienda_clean)

# Calcular el VIF
vif(modelo)
## package 'car' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\Vladimir\AppData\Local\Temp\RtmpI9uODo\downloaded_packages
##    areaconst      estrato habitaciones parqueaderos       banios 
##     2.305315     1.527546     2.020226     1.906627     2.856963

Interpretación de los Valores de VIF

Rango de VIF y su Significado:

  • VIF = 1: No hay multicolinealidad entre esta variable y las demás.
  • 1 < VIF < 5: Indica una multicolinealidad moderada. Generalmente, no es motivo de preocupación, pero es bueno ser consciente de ello.
  • VIF > 5: Indica una alta multicolinealidad, lo que puede ser problemático para la estabilidad de las estimaciones del modelo.
  • VIF > 10: Señal de alarma grave. Puede indicar una multicolinealidad extremadamente alta que necesita ser abordada.

Análisis de los Resultados:

  • areaconst (VIF = 2.305315): La variable “Área Construida” tiene un VIF de 2.305, lo que indica una multicolinealidad moderada, pero no problemática.
  • estrato (VIF = 1.527546): La variable “Estrato” tiene el VIF más bajo (1.528), lo que indica una muy baja multicolinealidad con las demás variables.
  • habitaciones (VIF = 2.020226): La variable “Habitaciones” tiene un VIF de 2.020, lo que sugiere una multicolinealidad moderada.
  • parqueaderos (VIF = 1.906627): La variable “Parqueaderos” tiene un VIF de 1.907, lo que también indica una multicolinealidad moderada.
  • banios (VIF = 2.856963): La variable “Baños” tiene el VIF más alto de todas las variables, con un valor de 2.857. Aunque este valor es más alto que el de las otras variables, sigue estando dentro de un rango que no genera preocupaciones importantes.

Conclusión

  • Multicolinealidad Moderada: Todos los VIF están por debajo de 5, lo que sugiere que no hay una multicolinealidad grave entre las variables en tu modelo. Aunque hay una multicolinealidad moderada, especialmente en las variables “Área Construida” y “Baños”, estos valores no son lo suficientemente altos como para causar preocupación significativa.

Implicaciones:

  • La multicolinealidad en este nivel probablemente no afectará significativamente la estabilidad de los coeficientes del modelo ni la capacidad del modelo para hacer predicciones. Por lo tanto, no es necesario tomar medidas correctivas en este punto.
  • Si en el futuro se agregan más variables al modelo, sería prudente recalcular los VIFs para asegurarse de que la multicolinealidad no se vuelva más pronunciada.

5. Realice una partición en los datos de forma aleatoria donde 70% sea un set para entrenar el modelo y 30% para prueba. Estime el modelo con la muestra del 70%. Muestre los resultados.

# Cargar las librerías necesarias
set.seed(123)  # Fijar la semilla para reproducibilidad

# Dividir los datos en 70% para entrenamiento y 30% para prueba
indices <- sample(1:nrow(vivienda_clean), size = 0.7 * nrow(vivienda_clean))

train_data <- vivienda_clean[indices, ]
test_data <- vivienda_clean[-indices, ]

# Ajustar el modelo de regresión lineal con el conjunto de entrenamiento
modelo_train <- lm(preciom ~ areaconst + estrato + habitaciones + parqueaderos + banios, data = train_data)

# Mostrar el resumen del modelo
summary(modelo_train)
## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos + 
##     banios, data = train_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -849.34  -83.39  -15.22   53.32 1006.81 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -380.63173   19.74115 -19.281   <2e-16 ***
## areaconst       0.87357    0.03202  27.281   <2e-16 ***
## estrato        96.41321    3.88986  24.786   <2e-16 ***
## habitaciones  -31.98113    3.20246  -9.986   <2e-16 ***
## parqueaderos   70.69210    3.63106  19.469   <2e-16 ***
## banios         64.06228    3.68610  17.379   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 169.5 on 3359 degrees of freedom
## Multiple R-squared:  0.7372, Adjusted R-squared:  0.7368 
## F-statistic:  1884 on 5 and 3359 DF,  p-value: < 2.2e-16

Interpretación de los Resultados del Modelo de Regresión Lineal

Los resultados que has proporcionado corresponden a un modelo de regresión lineal múltiple ajustado a un conjunto de entrenamiento (70% de los datos). A continuación, se proporciona una interpretación detallada de los resultados.

1. Resumen de los Residuos * Min: -849.34 * 1Q (Primer Cuartil): -83.39 * Mediana: -15.22 * 3Q (Tercer Cuartil): 53.32 * Max: 1006.81

Interpretación:

  • Los residuos indican la diferencia entre los valores observados y los valores predichos por el modelo.
  • La mediana cercana a cero (-15.22) sugiere que los errores están bastante centrados alrededor de cero, lo cual es bueno.
  • Sin embargo, hay algunos errores bastante grandes (valores mínimos y máximos), lo que indica que el modelo no predice perfectamente para todas las observaciones, con algunos errores relativamente grandes.

2. Coeficientes

Interpretación de los Coeficientes:

  • Intercepto (-380.63173): Este valor representa el precio de la vivienda cuando todas las variables independientes son iguales a cero. Sin embargo, este valor no tiene una interpretación práctica directa en este contexto porque no tendría sentido tener un área construida, estrato, habitaciones, parqueaderos y baños iguales a cero.

  • Área Construida (areaconst) - 0.87357: Por cada metro cuadrado adicional de área construida, el precio de la vivienda aumenta en promedio en 0.873 millones de pesos (873,570 pesos), manteniendo constantes las demás variables. Este resultado es lógico y consistente con la intuición de que viviendas más grandes suelen tener un mayor valor.

  • Estrato (estrato) - 96.41321: Por cada unidad adicional en el estrato socioeconómico, el precio de la vivienda aumenta en promedio en 96.41 millones de pesos, manteniendo constantes las demás variables. Esto sugiere que las viviendas en estratos más altos son significativamente más caras.

  • Número de Habitaciones (habitaciones) - -31.98113: Cada habitación adicional está asociada con una disminución promedio en el precio de la vivienda de 31.98 millones de pesos, manteniendo constantes las demás variables. Esto podría parecer contraintuitivo, pero puede indicar que más habitaciones podrían estar asociadas con una reducción en otras características de calidad o que las viviendas con más habitaciones tienden a ser más grandes en áreas menos costosas.

  • Número de Parqueaderos (parqueaderos) - 70.69210: Cada parqueadero adicional aumenta el precio de la vivienda en promedio en 70.69 millones de pesos, manteniendo constantes las demás variables. Este es un resultado lógico, ya que más espacio para estacionamiento generalmente agrega valor a la propiedad.

  • Número de Baños (banios) - 64.06228: Cada baño adicional aumenta el precio de la vivienda en promedio en 64.06 millones de pesos, manteniendo constantes las demás variables. Esto es consistente con la intuición de que más baños suelen asociarse con viviendas más cómodas y valiosas.

Significancia Estadística:

  • Todos los coeficientes tienen p-valores (<2e-16), lo que indica que son estadísticamente significativos al nivel del 0.1%. Esto significa que todas las variables en el modelo tienen un impacto significativo en el precio de la vivienda.

3. Errores Estándar Residuales * Residual Standard Error: 169.5 millones de pesos en 3359 grados de libertad

Interpretación:

  • Este valor nos dice que, en promedio, las predicciones del modelo están fuera del valor real por aproximadamente 169.5 millones de pesos. Aunque no es pequeño, indica que hay variabilidad en los precios que no está capturada completamente por el modelo.

4. Coeficientes de Determinación (R-squared y Adjusted R-squared) * Multiple R-squared: 0.7372 * Adjusted R-squared: 0.7368

Interpretación:

  • R-squared: El 73.72% de la variabilidad en el precio de la vivienda es explicada por las variables independientes incluidas en el modelo. Este es un valor relativamente alto, lo que sugiere que el modelo tiene un buen poder explicativo.
  • Adjusted R-squared: 73.68% es ligeramente más bajo, pero muy cercano al R-squared, lo que indica que el modelo no está sobreajustado y que las variables incluidas en el modelo son relevantes para explicar la variabilidad en el precio.

5. Estadístico F * F-statistic: 1884 en 5 y 3359 grados de libertad * p-value: <2.2e-16

Interpretación:

  • El F-statistic indica que el modelo es globalmente significativo. El p-valor extremadamente bajo (<2.2e-16) indica que el conjunto de todas las variables predictoras incluidas en el modelo tiene un impacto significativo en el precio de la vivienda.

Conclusión General

El modelo de regresión lineal múltiple ajustado sobre el conjunto de entrenamiento muestra que las variables seleccionadas (área construida, estrato, número de habitaciones, número de parqueaderos, y número de baños) son buenos predictores del precio de la vivienda, con un R-squared elevado que sugiere un buen poder explicativo. Sin embargo, aún existe una variabilidad en los precios no explicada por el modelo, como lo indican los errores residuales, lo cual podría explorarse incluyendo variables adicionales o realizando transformaciones a las variables existentes.

6. Realice predicciones con el modelo anterior usando los datos de prueba (30%).

# Realizar predicciones utilizando el conjunto de prueba
predicciones <- predict(modelo_train, newdata = test_data)

# Mostrar las primeras filas de las predicciones junto con los valores reales
resultados <- data.frame(Real = test_data$preciom, Predicho = predicciones)
head(resultados)
##   Real Predicho
## 1  320 438.2162
## 2  625 687.6203
## 3  750 642.3413
## 4  320 336.9942
## 5  175  81.3667
## 6  170 221.1463

7. Calcule el error cuadrático medio, el error absoluto medio y el R2, interprete.

# Calcular el Error Absoluto Medio (MAE)
mae <- mean(abs(resultados$Real - resultados$Predicho))

# Calcular el Error Cuadrático Medio (MSE)
mse <- mean((resultados$Real - resultados$Predicho)^2)

# Calcular la Raíz del Error Cuadrático Medio (RMSE)
rmse <- sqrt(mse)

# Calcular el R2 en el conjunto de prueba
sst <- sum((resultados$Real - mean(resultados$Real))^2)
sse <- sum((resultados$Real - resultados$Predicho)^2)
r_squared <- 1 - sse/sst

# Mostrar los resultados de las métricas
cat("MAE:", mae, "\n")
cat("MSE:", mse, "\n")
cat("RMSE:", rmse, "\n")
cat("R²:", r_squared, "\n")
## MAE: 112.5895 
## MSE: 28912.5 
## RMSE: 170.0368 
## R²: 0.7067298

1. Error Absoluto Medio (MAE): 112.5895 * Interpretación: El MAE de 112.5895 millones de pesos indica que, en promedio, las predicciones del modelo están fuera del valor real por aproximadamente 112.59 millones de pesos. * Implicación: Este es un error absoluto relativamente bajo en el contexto de los precios de las viviendas, lo que sugiere que el modelo tiene una precisión aceptable, aunque podría no ser perfecto para todas las observaciones.

2. Error Cuadrático Medio (MSE): 28912.5 * Interpretación: El MSE de 28912.5 millones de pesos cuadrados refleja la media de los cuadrados de los errores (diferencias entre los valores reales y predichos). Esta métrica es más sensible a errores grandes, por lo que un MSE más alto indica la presencia de algunos errores significativos en las predicciones. * Implicación: Aunque el MSE es útil para identificar la magnitud de los errores, es más difícil de interpretar directamente en comparación con el MAE y el RMSE. Sin embargo, el valor indica que hay variabilidad en la precisión de las predicciones, con algunos errores grandes presentes.

3. Raíz del Error Cuadrático Medio (RMSE): 170.0368 Interpretación: El RMSE de 170.0368 millones de pesos proporciona una medida de la magnitud promedio del error de las predicciones, en las mismas unidades que la variable dependiente (en este caso, millones de pesos). Implicación: Un RMSE de 170.04 sugiere que, en promedio, las predicciones del modelo están fuera del valor real por aproximadamente 170.04 millones de pesos. Aunque es un error moderado, este valor refleja que el modelo es razonablemente preciso, pero con margen para mejorar.

4. Coeficiente de Determinación (R²): 0.7067298 * Interpretación: El R² de 0.7067 indica que el 70.67% de la variabilidad en los precios de las viviendas en el conjunto de prueba es explicada por las variables independientes incluidas en el modelo. * Implicación: Un R² de 70.67% es bastante alto y sugiere que el modelo tiene un buen poder explicativo. Sin embargo, hay un 29.33% de la variabilidad en los precios que no está explicada por el modelo, lo que indica que podrían existir otros factores no considerados en el modelo actual que también influyen en los precios de las viviendas.

Conclusión General

  • Precisión: El modelo muestra una precisión razonable con un MAE de aproximadamente 112.59 millones de pesos y un RMSE de 170.04 millones de pesos. Estos valores indican que el modelo puede predecir los precios de las viviendas con una precisión moderada.
  • Poder Explicativo: Con un R² de 70.67%, el modelo explica una parte significativa de la variabilidad en los precios, lo que es un buen resultado para un modelo de regresión lineal. Sin embargo, existe margen para mejorar el modelo, posiblemente mediante la inclusión de variables adicionales o el uso de técnicas de modelado más avanzadas.
  • Oportunidades de Mejora: Si se desea mejorar la precisión del modelo, se podría considerar la incorporación de nuevas variables que capturen aspectos adicionales del precio de la vivienda (por ejemplo, características de la ubicación, antigüedad de la vivienda, calidad de los materiales de construcción, etc.), o explorar modelos no lineales o más complejos que puedan captar mejor las relaciones entre las variables.