Caso C&A

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:

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

## [1] "Primeras filas de los datos"
id zona piso estrato preciom areaconst parqueaderos banios habitaciones tipo barrio longitud latitud
1147 Zona Oriente NA 3 250 70 1 3 6 Casa 20 de julio -76.51168 3.43382
1169 Zona Oriente NA 3 320 120 1 2 3 Casa 20 de julio -76.51237 3.43369
1350 Zona Oriente NA 3 350 220 2 2 4 Casa 20 de julio -76.51537 3.43566
5992 Zona Sur 02 4 400 280 3 5 3 Casa 3 de julio -76.54000 3.43500
1212 Zona Norte 01 5 260 90 1 2 3 Apartamento acopi -76.51350 3.45891
1724 Zona Norte 01 5 240 87 1 3 3 Apartamento acopi -76.51700 3.36971
## [1] "Resumen de los datos"
##        id           zona               piso              estrato     
##  Min.   :   1   Length:8322        Length:8322        Min.   :3.000  
##  1st Qu.:2080   Class :character   Class :character   1st Qu.:4.000  
##  Median :4160   Mode  :character   Mode  :character   Median :5.000  
##  Mean   :4160                                         Mean   :4.634  
##  3rd Qu.:6240                                         3rd Qu.:5.000  
##  Max.   :8319                                         Max.   :6.000  
##  NA's   :3                                            NA's   :3      
##     preciom         areaconst       parqueaderos        banios      
##  Min.   :  58.0   Min.   :  30.0   Min.   : 1.000   Min.   : 0.000  
##  1st Qu.: 220.0   1st Qu.:  80.0   1st Qu.: 1.000   1st Qu.: 2.000  
##  Median : 330.0   Median : 123.0   Median : 2.000   Median : 3.000  
##  Mean   : 433.9   Mean   : 174.9   Mean   : 1.835   Mean   : 3.111  
##  3rd Qu.: 540.0   3rd Qu.: 229.0   3rd Qu.: 2.000   3rd Qu.: 4.000  
##  Max.   :1999.0   Max.   :1745.0   Max.   :10.000   Max.   :10.000  
##  NA's   :2        NA's   :3        NA's   :1605     NA's   :3       
##   habitaciones        tipo              barrio             longitud     
##  Min.   : 0.000   Length:8322        Length:8322        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   : 3.605                                         Mean   :-76.53  
##  3rd Qu.: 4.000                                         3rd Qu.:-76.52  
##  Max.   :10.000                                         Max.   :-76.46  
##  NA's   :3                                              NA's   :3       
##     latitud     
##  Min.   :3.333  
##  1st Qu.:3.381  
##  Median :3.416  
##  Mean   :3.418  
##  3rd Qu.:3.452  
##  Max.   :3.498  
##  NA's   :3
## [1] "Valores faltantes"
##           id         zona         piso      estrato      preciom    areaconst 
##            3            3         2638            3            2            3 
## parqueaderos       banios habitaciones         tipo       barrio     longitud 
##         1605            3            3            3            3            3 
##      latitud 
##            3

Pasos requeridos para la obtención de los resultados

  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?).
## [1] "Primeros 3 registros de la base filtrada (casas en la zona norte):"
id zona piso estrato preciom areaconst parqueaderos banios habitaciones tipo barrio longitud latitud
1209 Zona Norte 02 5 320 150 2 4 6 Casa acopi -76.51341 3.47968
1592 Zona Norte 02 5 780 380 2 3 3 Casa acopi -76.51674 3.48721
4057 Zona Norte 02 6 750 445 0 7 6 Casa acopi -76.52950 3.38527
## [1] "Conteo de registros por zona en la base filtrada:"
Var1 Freq
Zona Norte 722

Se evidencia una incorrecta clasificación de algunas casas, debido a que según su longitud y latitud están ubicadas en zonas diferentes a la zona norte, en la cual están etiquetados.

Aunque Las coordenadas (latitud y longitud) podrían estar incorrectas para algunos registros, lo cual puede ocurrir si si hubo errores al ingresar o capturar los datos o si se usó un sistema de referencia incorrecto, es más problable que se trate de una etiqueta incorrecta.

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

A partir de la matriz de correlación se observa que las correlaciones positivas de valor más alto respecto al precio son el área construida con 0.69 y baños con 0.67. Teniendo en cuenta que la correlación entre baños y área construida así como con habitaciones es alta, se puede deducir que tanto la variable baños como habitaciones tienden a una mayor dependencia del área construida. Además al revisar los boplots se puede evidenciar algunos datos atipicos no solo en el precio de los inmuebles sino también en los datos como el número de baños y habitaciones, los cuales presentan valores poco frecuentes para este tipo de viviendas que podría obedecer a errores de imputación o captura de datos.

  1. 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).
# Ajustar el modelo de regresión lineal múltiple
modelo <- lm(preciom ~ areaconst + habitaciones + parqueaderos + banios, data = vivienda)

# Resumen del modelo
summary(modelo)
## 
## Call:
## lm(formula = preciom ~ areaconst + habitaciones + parqueaderos + 
##     banios, data = vivienda)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1825.78   -88.31   -20.62    55.20  1212.40 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   70.1773     6.0456   11.61   <2e-16 ***
## areaconst      0.9755     0.0203   48.06   <2e-16 ***
## habitaciones -54.2398     1.8519  -29.29   <2e-16 ***
## parqueaderos  73.7139     2.0609   35.77   <2e-16 ***
## banios        89.8027     2.2374   40.14   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 189.5 on 8314 degrees of freedom
## Multiple R-squared:  0.6676, Adjusted R-squared:  0.6674 
## F-statistic:  4174 on 4 and 8314 DF,  p-value: < 2.2e-16

Área construida (0.98): Cada metro cuadrado adicional de construcción se asocia con un aumento promedio de aproximadamente 0.98 millones en el precio de la vivienda, manteniendo las demás variables constantes. Este resultado es intuitivo, ya que mayor área construida generalmente implica mayor precio.

Habitaciones (-54.24): Cada habitación adicional se asocia con una reducción promedio de 54.24 millones en el precio, manteniendo las demás variables constantes. Esto podría indicar que las viviendas más grandes pueden tener un menor precio por metro cuadrado o que hay una relación inversa con otras características no modeladas (como la ubicación o el estado de la vivienda).

Parqueaderos (73.71): Cada parqueadero adicional se asocia con un incremento promedio de 73.71 millones en el precio, lo cual es lógico, ya que los parqueaderos son una característica valiosa en las viviendas urbanas.

Baños (89.80): Cada baño adicional incrementa el precio en 89.80 millones, lo que sugiere que los baños son una característica importante en la valoración de una vivienda.

Evaluación de la significancia estadística:

Todos los coeficientes tienen valores p < 0.001, lo que indica que son altamente significativos y que tienen una influencia estadísticamente relevante sobre el precio de la vivienda.

Evaluación del ajuste del modelo:

R² = 0.6676: Indica que el modelo explica aproximadamente 66.76% de la variabilidad en el precio de las viviendas. Es un buen nivel de ajuste, aunque aún hay un 33.24% de la variabilidad no explicada, lo que sugiere que hay otros factores importantes que no están siendo considerados (como ubicación exacta, antigüedad del inmueble, acabados, demanda del mercado, etc.).

Error estándar de los residuos = 189.5: Indica que, en promedio, las predicciones del modelo tienen un error de aproximadamente 189.5 millones.

Posibles mejoras del modelo:

Incluir más variables: Podría ser útil incorporar variables como ubicación geográfica, antigüedad del inmueble, tipo de construcción. A aunque el estrato no se considera una variable numérica, esta puede ayudar a enteder mejor variaciones en los datos del modelo, debido a que un inmueble con caracteristicas similares en cuanto a tamaño y caracteristicas, podría variar en su precio de acuerdo al estrato.

modeloR <- lm(preciom ~ areaconst + estrato + habitaciones + parqueaderos + banios, data = vivienda)

# Mejora el R2
summary(modeloR)
## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos + 
##     banios, data = vivienda)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1596.26   -89.52   -18.63    54.31  1192.21 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -318.31275   11.68459  -27.24   <2e-16 ***
## areaconst       0.96050    0.01875   51.23   <2e-16 ***
## estrato        92.22507    2.43661   37.85   <2e-16 ***
## habitaciones  -25.72893    1.86899  -13.77   <2e-16 ***
## parqueaderos   48.32521    2.01829   23.94   <2e-16 ***
## banios         57.21454    2.23875   25.56   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 175.1 on 8313 degrees of freedom
## Multiple R-squared:  0.7164, Adjusted R-squared:  0.7163 
## F-statistic:  4200 on 5 and 8313 DF,  p-value: < 2.2e-16

Transformaciones de variables: Se podría probar con transformaciones logarítmicas para mejorar la linealidad.

Detección de atípicos: Algunos valores extremos en el precio podrían estar afectando el ajuste del modelo.

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

##              areaconst     estrato habitaciones parqueaderos    banios
## areaconst    1.0000000  0.27432332   0.51691292    0.4823840 0.6484165
## estrato      0.2743233  1.00000000  -0.07137615    0.5127889 0.4203218
## habitaciones 0.5169129 -0.07137615   1.00000000    0.1987555 0.5899064
## parqueaderos 0.4823840  0.51278892   0.19875551    1.0000000 0.5231299
## banios       0.6484165  0.42032178   0.58990641    0.5231299 1.0000000

Homocedasticidad :

Se observa que los residuos tienen una mayor dispersión a medida que los valores ajustados aumenta. De igual manera se observa que en el gráfico de escala-locación la línea roja tiene una pendiente positiva, lo que indica que los residuos estandarizados aumentan a medida que crecen los valores ajustados. Esto indica una posible heterocedasticidad, que sugiere que la varianza de los errores no es constante.

En un modelo bien ajustado, los residuos deben distribuirse aleatoriamente alrededor de la línea roja (cercana a cero). Parece haber cierta estructura en los residuos, lo que podría indicar que el modelo no está capturando correctamente algunas relaciones en los datos.

En la parte derecha del grafico de escala-locación (valores ajustados altos), los residuos se dispersan más, lo que sugiere que el modelo predice con menor precisión en los valores más altos de la variable dependiente.

Hay algunos puntos fuera del patrón general, lo que sugiere la existencia de outliers que pueden influir en el ajuste del modelo.

Distribución de los datos:

En el gráfico de residuos estandarizados vs valores teóricos, Los puntos en los extremos (tanto en la cola inferior como en la superior) se desvían significativamente de la línea diagonal punteada.Esto sugiere que los residuos no siguen una distribución normal y pueden tener colas más pesadas de lo esperado en una distribución normal.

Residuals vs Leverage:

El gráfico de Residuals vs Leverage con la Distancia de Cook ayuda a identificar observaciones que podrían tener un alto impacto en el modelo.

Se identifican observaciones como 3155, 8073 y 419, que tienen valores de leverage más altos.

El punto 3155, tiene un leverage relativamente alto y un residuo estandarizado extremo.

Esto sugiere que podría estar influyendo significativamente en el ajuste del modelo.

La curva punteada indica el umbral de 0.5 para la Distancia de Cook. El punto 3155 parece estar cerca o por encima de este umbral, lo que indica que tiene una gran influencia en los coeficientes del modelo.

Recomendaciones:

  • Evaluar la inclusión de nuevas variables o la eliminación de valores atípicos.

  • Aplicar una transformación a la variable dependiente (como logaritmo o raíz cuadrada) para estabilizar la varianza.

  • Se observa que algunas variables tienen correlaciones relativamente altas, por ejemplo: Área construida (areaconst) y baños: 0.6484 Habitaciones y baños: 0.5899 Esto puede generar problemas de multicolinealidad, afectando la estabilidad del modelo.

  • Calcular el VIF (Variance Inflation Factor) para evaluar si alguna de estas variables debe excluirse o transformarse.

  • Validar los puntos como 3155, 8073 y 419.

# Ver los datos de los puntos atípicos
outliers <- c(3155, 8073, 419)  # IDs detectados en los gráficos
vivienda[outliers, ]  # Inspeccionar las filas en el dataset original
## # A tibble: 3 × 13
##      id zona    piso  estrato preciom areaconst parqueaderos banios habitaciones
##   <dbl> <chr>   <chr>   <dbl>   <dbl>     <dbl>        <dbl>  <dbl>        <dbl>
## 1  3324 Zona O… <NA>        3     255      1745            2      3            2
## 2   534 Zona N… 03          3     370      1440            1      4           10
## 3  1017 Zona O… <NA>        3     200      1365            0      1            4
## # ℹ 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
  1. Con el modelo identificado debe predecir el precio de la vivienda con las características de la primera solicitud.
## [1] "Predicción para estrato 4: 301.636875502016"
## [1] "Predicción para estrato 5: 301.636875502016"

Según el modelo, precio estimado para la Vivienda 1 con las características dadas es 301.64 millones, el comprador tiene 350 millones aprobados, por lo que la vivienda está dentro del presupuesto.

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

Para esto, se filtra el dataset de viviendas con los valores de:

Precio (Dentro del presupuesto) <= 350, Área Construida (No menor a lo solicitado) >= 200 Habitaciones >=4 Vivienda de tipo Casa ubicada en Zona Norte Parqueadero >=1 Baños >= 2, Estrato 5 ó 6

# Filtrar viviendas con condiciones similares a Vivienda 1
ofertas_potenciales <- vivienda %>%
  filter(preciom <= 350,   # Dentro del presupuesto
         areaconst >= 200, # Similar en área construida
         habitaciones >=4, # Habitaciones en el rango
         tipo == 'Casa',
         zona == 'Zona Norte',
         parqueaderos >= 1,  # Al menos 1 parqueadero
         banios >= 2,
         estrato >= 4 & estrato <= 5)  # Estrato dentro del rango


# Seleccionar 5 opciones
ofertas_seleccionadas <- ofertas_potenciales %>% slice(1:5)



# Crear mapa con ubicaciones
leaflet(ofertas_seleccionadas) %>%
  addTiles() %>%
  addMarkers(lng = ~longitud, lat = ~latitud,
             popup = ~paste("Precio:", preciom, "millones", "<br>",
                            "Área:", areaconst, "m²", "<br>",
                            "Habitaciones:", habitaciones, "<br>",
                            "Parqueaderos:", parqueaderos, "<br>",
                            "Zona:",zona))
  1. Realice los pasos del 1 al 6. Para la segunda solicitud que tiene un crédito pre-aprobado por valor de $850 millones.
## [1] "Primeros 3 registros de la base filtrada (apartamentos en la zona sur):"
id zona piso estrato preciom areaconst parqueaderos banios habitaciones tipo barrio longitud latitud
5098 Zona Sur 05 4 290 96 1 2 3 Apartamento acopi -76.53464 3.44987
698 Zona Sur 02 3 78 40 1 1 2 Apartamento aguablanca -76.50100 3.40000
8199 Zona Sur NA 6 875 194 2 5 3 Apartamento aguacatal -76.55700 3.45900
## [1] "Conteo de registros por zona en la base filtrada:"
Var1 Freq
Zona Sur 2787
## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos + 
##     banios, data = base2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1252.31   -42.15    -2.06    36.32   934.06 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -221.04614   13.47771 -16.401  < 2e-16 ***
## areaconst       1.46061    0.04876  29.956  < 2e-16 ***
## estrato        57.00608    2.79648  20.385  < 2e-16 ***
## habitaciones  -22.71789    3.39549  -6.691 2.68e-11 ***
## parqueaderos   48.36353    3.02343  15.996  < 2e-16 ***
## banios         48.60871    3.04050  15.987  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 95.17 on 2781 degrees of freedom
## Multiple R-squared:  0.7536, Adjusted R-squared:  0.7531 
## F-statistic:  1701 on 5 and 2781 DF,  p-value: < 2.2e-16

##              areaconst   estrato habitaciones parqueaderos    banios
## areaconst    1.0000000 0.4815593    0.4339608    0.5586775 0.6618179
## estrato      0.4815593 1.0000000    0.2125953    0.5491353 0.5686171
## habitaciones 0.4339608 0.2125953    1.0000000    0.2863117 0.5149227
## parqueaderos 0.5586775 0.5491353    0.2863117    1.0000000 0.5651455
## banios       0.6618179 0.5686171    0.5149227    0.5651455 1.0000000
## [1] "Precio con las caracteristicas dadas:"
##        1 
## 679.4951
## [1] "Ofertas potenciales para la Vivienda 2:"
id zona piso estrato preciom areaconst parqueaderos banios habitaciones tipo barrio longitud latitud
7182 Zona Sur NA 5 730 573 3 8 5 Apartamento guadalupe -76.548 3.408
7512 Zona Sur NA 5 670 300 3 5 6 Apartamento seminario -76.550 3.409
## [1] "Solo dos ofertas se asjutan a la solicitud"