CASO 1 C&A

Problema

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:

Vivienda 1:

Tipo casa Area construida: 200; parqueaderos: 1; baños: 2; habitaciones: 4; estrato: 4 o 5; zona norte; credito preaprobado 350 millones

Ayude a María a responder la solicitud, mediante técnicas modelación que usted conoce.

#devtools::install_github("centromagis/paqueteMODELOS", force = TRUE)
#devtools::install_github("centromagis/paqueteMODELOS", force =TRUE)
#library(paqueteMODELOS)
#data("vivienda")

BASE DE DATOS GENERAL

##     id         zona piso estrato preciom areaconst parqueaderos banios
## 1 1147 Zona Oriente   NA       3     250        70            1      3
## 2 1169 Zona Oriente   NA       3     320       120            1      2
## 3 1350 Zona Oriente   NA       3     350       220            2      2
## 4 5992     Zona Sur    2       4     400       280            3      5
## 5 1212   Zona Norte    1       5     260        90            1      2
##   habitaciones        tipo      barrio  longitud latitud
## 1            6        Casa 20 de julio -76.51168 3.43382
## 2            3        Casa 20 de julio -76.51237 3.43369
## 3            4        Casa 20 de julio -76.51537 3.43566
## 4            3        Casa  3 de julio -76.54000 3.43500
## 5            3 Apartamento       acopi -76.51350 3.45891

BASE DE DATOS FILTRADA POR ZONA NORTE

##     id       zona piso estrato preciom areaconst parqueaderos banios
## 1 1209 Zona Norte    2       5     320       150            2      4
## 2 1592 Zona Norte    2       5     780       380            2      3
## 3 4057 Zona Norte    2       6     750       445           NA      7
##   habitaciones tipo barrio  longitud latitud
## 1            6 Casa  acopi -76.51341 3.47968
## 2            3 Casa  acopi -76.51674 3.48721
## 3            6 Casa  acopi -76.52950 3.38527

Cantidad de registros corresondientes a Zona Norte, de acuerdo con la variable Zona:

## [1] 722

Resumen de Estadísticas descriptivas:

## 'data.frame':    722 obs. of  13 variables:
##  $ id          : int  1209 1592 4057 4460 6081 7824 7987 3495 141 243 ...
##  $ zona        : chr  "Zona Norte" "Zona Norte" "Zona Norte" "Zona Norte" ...
##  $ piso        : int  2 2 2 2 2 2 2 3 NA NA ...
##  $ estrato     : int  5 5 6 4 5 4 5 5 3 3 ...
##  $ preciom     : int  320 780 750 625 750 600 420 490 230 190 ...
##  $ areaconst   : num  150 380 445 355 237 160 200 118 160 435 ...
##  $ parqueaderos: int  2 2 NA 3 2 1 4 2 NA NA ...
##  $ banios      : int  4 3 7 5 6 4 4 4 2 0 ...
##  $ habitaciones: int  6 3 6 5 6 5 5 4 3 0 ...
##  $ tipo        : chr  "Casa" "Casa" "Casa" "Casa" ...
##  $ barrio      : chr  "acopi" "acopi" "acopi" "acopi" ...
##  $ longitud    : num  -76.5 -76.5 -76.5 -76.5 -76.5 ...
##  $ latitud     : num  3.48 3.49 3.39 3.41 3.37 ...

Cantidad de datos faltantes por variable:

##           id         zona         piso      estrato      preciom    areaconst 
##            0            0          372            0            0            0 
## parqueaderos       banios habitaciones         tipo       barrio     longitud 
##          287            0            0            0            0            0 
##      latitud 
##            0

Porcentaje de datos faltantes por variable:

##           id         zona         piso      estrato      preciom    areaconst 
##      0.00000      0.00000     51.52355      0.00000      0.00000      0.00000 
## parqueaderos       banios habitaciones         tipo       barrio     longitud 
##     39.75069      0.00000      0.00000      0.00000      0.00000      0.00000 
##      latitud 
##      0.00000

Resumen de Estadísticas descriptivas base de datos filtrada por Zona Norte:

  • Cantidad de registros filtrados: 722
  • Tipo de datos por columna:
    • id: entero
    • zona: carácter
    • piso: entero (con 372 valores faltantes)
    • estrato: entero
    • preciom: entero
    • areaconst: numérico
    • parqueaderos: entero (con 287 valores faltantes)
    • banios: entero
    • habitaciones: entero
    • tipo: carácter
    • barrio: carácter
    • longitud: numérico
    • latitud: numérico
  • Datos faltantes:
    • piso: 372 valores faltantes
    • parqueaderos: 287 valores faltantes
  • Resumen estadístico:
    • Precio mínimo: 89 millones
    • Precio máximo: 1940 millones
    • Área construida promedio: 264.9 m²
    • Número medio de parqueaderos: 2.18
    • Número medio de baños: 3.55
    • Número medio de habitaciones: 4.5

Visualización de la Ubicación de los Predios

Verificación de Ubicación

Para la revisión de ubicación se genera un mapa con la ubicación de los predios filtrados en la zona norte de Cali.

## Reading layer `Comunas' from data source 
##   `C:\Users\lcmar\OneDrive - PUJ Cali\PRIMER SEMESTRE_2024-II\METODOS Y SIMULACION\SHPCALI' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 22 features and 4 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: 1054753 ymin: 860192.1 xmax: 1068492 ymax: 879441.5
## Projected CRS: MAGNA-SIRGAS / Cali urban grid

## $title
## [1] "Ubicación de Casas en la Zona Norte de Cali"
## 
## attr(,"class")
## [1] "labels"

Evidenciamos que existen registros ubicados fuera de la zona esperada.

Discusión sobre Posibles Inconsistencias

Los resultados del análisis indican que: - La mayoría de los predios están ubicados en la zona esperada, pero algunos registros parecen estar fuera de los límites geográficos definidos para la zona norte. - Posibles razones de estos valores fuera de la zona: 1. Errores en la clasificación de la zona: Algunas viviendas pueden estar mal etiquetadas en la base de datos. 2. Errores en las coordenadas geográficas: Si las coordenadas fueron registradas incorrectamente, los puntos pueden aparecer en zonas incorrectas. 3. Definición flexible de la Zona Norte: Diferentes fuentes pueden tener delimitaciones distintas para esta zona. - Recomendación: - Revisar y corregir manualmente los registros con coordenadas fuera del área esperada. - Comparar con mapas oficiales de zonificación de Cali.

Resumen estadístico

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   3.333   3.452   3.468   3.460   3.482   3.496
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  -76.59  -76.53  -76.52  -76.52  -76.50  -76.47

Como la zona en la cual centramos el analsis corresponde a la zona norte a partir de la organización de los datos vamos a establecer en que latitud mínima se encuentran el 80% de los datos y comparamos con mapas oficiales de Cali (https://www.cali.gov.co/planeacion/publicaciones/169423/zonas_geograficas_idesc/). de esta forma establecemos los datos de los predios que se encuentran fuera de la zona norte.

## Límites de latitud:
## Percentil 20% (latitud mínima):  3.44987
##     id       zona piso estrato preciom areaconst parqueaderos banios
## 1 4057 Zona Norte    2       6     750       445           NA      7
## 2 4460 Zona Norte    2       4     625       355            3      5
## 3 6081 Zona Norte    2       5     750       237            2      6
## 4 7824 Zona Norte    2       4     600       160            1      4
## 5 7987 Zona Norte    2       5     420       200            4      4
## 6 3495 Zona Norte    3       5     490       118            2      4
##   habitaciones tipo barrio  longitud latitud
## 1            6 Casa  acopi -76.52950 3.38527
## 2            5 Casa  acopi -76.53179 3.40590
## 3            6 Casa  acopi -76.54044 3.36862
## 4            5 Casa  acopi -76.55210 3.42125
## 5            5 Casa  acopi -76.55363 3.40050
## 6            4 Casa  acopi -76.52680 3.37823

Graficamos los puntos seleccionados como fuera de la zona norte para identificar que se hayan seleccionado los correctos.

## Reading layer `Comunas' from data source 
##   `C:\Users\lcmar\OneDrive - PUJ Cali\PRIMER SEMESTRE_2024-II\METODOS Y SIMULACION\SHPCALI' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 22 features and 4 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: 1054753 ymin: 860192.1 xmax: 1068492 ymax: 879441.5
## Projected CRS: MAGNA-SIRGAS / Cali urban grid

## $title
## [1] "Ubicación de Predios Fuera de la Zona Norte de Cali"
## 
## attr(,"class")
## [1] "labels"

En la grafica podemos observa que se han excluido los predios que aúnque estan etiquetados con Zona Norte, los datos de ubicación reflejan otras zonas, por lo cual podemos establecer que han sido etiquetados incorrectamente, estos datos se eliminan de la base de datos Base 1 que corresponde a la zona norte, para continuar con el análisis.

# Filtrar los registros de df_base1 donde latitud sea mayor o igual a 3.44987
df_base1_limpio <- df_base1 %>%
  filter(latitud >= 3.44987)
##     id       zona piso estrato preciom areaconst parqueaderos banios
## 1 1209 Zona Norte    2       5     320       150            2      4
## 2 1592 Zona Norte    2       5     780       380            2      3
## 3  504 Zona Norte   NA       3     180       120           NA      3
##   habitaciones tipo barrio  longitud latitud
## 1            6 Casa  acopi -76.51341 3.47968
## 2            3 Casa  acopi -76.51674 3.48721
## 3            3 Casa  acopi -76.49768 3.47060

Resultados tras la depuración

Después de excluir viviendas fuera de la Zona Norte de Cali, según los límites oficiales, quedaron 577 registros en la base de datos.

## [1] 577

Resumen estadístico de las viviendas filtradas

  • Precio mínimo: 89 millones
  • Precio máximo: 1940 millones
  • Área construida promedio: 257 m²
  • Número medio de parqueaderos: 2.18
  • Número medio de baños: 3.52
  • Número medio de habitaciones: 4.57
  • Estrato promedio: 4.16
  • Datos faltantes:
    • piso: 261 valores faltantes
    • parqueaderos: 196 valores faltantes

Análisis Exploratorio de Datos

Análisis de las Distribuciones Observadas

A partir de los gráficos, podemos analizar distintos elementos clave de las variables Precio (preciom), Área Construida (areaconst), Parqueaderos y Baños.

  1. Distribución del Precio de las Viviendas:

Se observa una distribución asimétrica a la derecha (sesgada positivamente). Hay una concentración de valores bajos, con la mayoría de las viviendas por debajo de los 500 millones. Existen algunos valores extremos que superan los 1000 millones, lo cual podría indicar posibles valores atípicos.

  1. Distribución del Área Construida

También presenta una distribución asimétrica positiva. La mayoría de las viviendas tienen menos de 500 m² de área construida. Hay pocos casos con áreas superiores a 1000 m², lo que sugiere valores atípicos.

  1. Distribución del Número de Parqueaderos

La distribución muestra que la mayoría de las viviendas tienen entre 1 y 2 parqueaderos. Pocas viviendas tienen más de 5 parqueaderos, lo que indica valores inusuales.

  1. Distribución del Número de Baños

Se observa una distribución relativamente simétrica, con un pico en 3 y 4 baños. Algunos registros con hasta 10 baños, lo cual es inusual en viviendas estándar.

Imputación de valores faltantes

Imputación de parqueaderos

La distribución de parqueaderos muestra que la mayoría de las viviendas = CASAS tienen 1 o 2 parqueaderos. Por lo cual trabajaremos Imputación por moda (valor más frecuente) moda = 1.

Imputación de piso

Como piso en este caso corresponde a la cantidad de pisos de la casa y tiene 261 valores faltantes, la estrategia a utilizar es imputación por mediana = 4.

##           id         zona         piso      estrato      preciom    areaconst 
##            0            0            0            0            0            0 
## parqueaderos       banios habitaciones         tipo       barrio     longitud 
##            0            0            0            0            0            0 
##      latitud 
##            0

Análisis de los Resultados tras la Imputación de Datos

La mayoría de las viviendas tienen 1 o 2 parqueaderos. La distribución sigue siendo asimétrica a la derecha, lo cual es esperable en este tipo de datos. Se observa una presencia menor de valores altos La imputación con la moda para parqueaderos fue adecuada, ya que respetó la distribución original y no introdujo valores extraños.

La mediana de pisos imputada 2, lo cual es consistente con la mayor concentración de viviendas. Se mantiene una cantidad menor de viviendas con 1, 3 y 4 pisos, lo que indica que la imputación no ha distorsionado la distribución original. La imputación con la mediana en piso también fue apropiada, manteniendo la concentración en el valor más común sin generar sesgos significativos.

Transformación de variables y Tratamiento de Valores Atípicos

Los gráficos muestran que las Transformaciones Logarítmicas aplicadas en preciom y areaconst, han mejorado la normalidad de las variables, especialmente en log_preciom y log_areaconst.

Ahora, procederemos con la detección y tratamiento más detallado de valores atípicos.

Para identificar valores atípicos, utilizaremos boxplots y los estadísticos de Tukey (IQR - rango intercuartil).

Para verificar que las eliminaciones no han afectado la estructura de los datos, generaremos nuevos gráficos de distribución:

Análisis Exploratorio de Datos: Correlación

Convertimos la variable estrato en una variable categórica (factor). Esto es importante porque en R, si estrato se mantiene como un número entero, el modelo lo trataría como una variable continua en lugar de una variable de clasificación.

Matriz de correlación

log_preciom log_areaconst banios habitaciones
log_preciom 1.00 0.84 0.60 0.40
log_areaconst 0.84 1.00 0.55 0.41
banios 0.60 0.55 1.00 0.61
habitaciones 0.40 0.41 0.61 1.00

Estimación del modelo de regresión lineal múltiple

#install.packages("caTools")

Division de los datos 70% entrenamiento y 30% prueba

## [1] 419
## [1] 154
## 
## Call:
## lm(formula = log_preciom ~ log_areaconst + parqueaderos + banios + 
##     habitaciones + estrato, data = train_data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.74788 -0.15374 -0.02398  0.14992  1.00826 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   2.682546   0.139646  19.210  < 2e-16 ***
## log_areaconst 0.506498   0.030782  16.454  < 2e-16 ***
## parqueaderos  0.024660   0.011134   2.215   0.0273 *  
## banios        0.050100   0.012151   4.123 4.53e-05 ***
## habitaciones  0.013816   0.008939   1.546   0.1230    
## estrato4      0.208447   0.040334   5.168 3.70e-07 ***
## estrato5      0.332860   0.039299   8.470 4.41e-16 ***
## estrato6      0.511881   0.065616   7.801 5.11e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2585 on 411 degrees of freedom
## Multiple R-squared:  0.7939, Adjusted R-squared:  0.7904 
## F-statistic: 226.1 on 7 and 411 DF,  p-value: < 2.2e-16
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.683 0.140 19.210 0.000
log_areaconst 0.506 0.031 16.454 0.000
parqueaderos 0.025 0.011 2.215 0.027
banios 0.050 0.012 4.123 0.000
habitaciones 0.014 0.009 1.546 0.123
estrato4 0.208 0.040 5.168 0.000
estrato5 0.333 0.039 8.470 0.000
estrato6 0.512 0.066 7.801 0.000

Evaluación del modelo de entrenamiento

## R²:  0.794
## R² Ajustado:  0.79

Evaluación de modelo con el conjunto de prueba

Para evaluar el rendimiento del modelo se usaran metricas como:

Error cuadrático medio R²

## RMSE en el conjunto de prueba: 0.2455
## R² en el conjunto de prueba: 0.7882

R² = 0.751 El modelo explica 75.1% de la variabilidad en los precios de las viviendas, El R² en prueba es cercano al de entrenamiento, por lo cual el modelo generaliza bien. El RMSE los valores se desvian un 25,4% de la escala original.

Análisis de Significancia de los Coeficientes

  • Área Construida (log_areaconst): Un aumento del 1% en el área construida está asociado con un incremento del 0.494% en el precio de la vivienda, manteniendo las demás variables constantes.
  • Número de Parqueaderos (parqueaderos): Cada parqueadero adicional se asocia con un incremento del 2.9% en el precio de la vivienda.
  • Número de Baños (banios): Cada baño adicional aumenta el precio de la vivienda en aproximadamente 6.1%.
  • Número de Habitaciones (habitaciones): No tiene un impacto estadísticamente significativo en el precio de la vivienda, ya que otras características (como área construida y baños) pueden ser más relevantes.
  • Estrato (estrato): Viviendas en estrato 4 tienen un precio 23.6% mayor que las de estrato 3, manteniendo todo lo demás constante, Viviendas en estrato 5 son 33.7% más costosas que las de estrato 3. Viviendas en estrato 6 son 59% más costosas que las de estrato 3.

Interpretaciones:

El modelo tiene un buen ajuste y las variables más importantes (log_areaconst, parqueaderos, banios y estrato) son significativas y lógicas. Sin embargo:

Se puede mejorar explorando interacciones o incorporando variables como barrio, antigüedad de la vivienda, entre otros.

La variable habitaciones podría eliminarse, ya que no contribuye significativamente al modelo.

Validación del Modelo

Interpretaciones:

Los residuos deberían distribuirse de manera aleatoria alrededor de la línea roja horizontal en cero. no se observa una estructura clara ni patrones evidentes, lo que sugiere que la suposición de linealidad se cumple en gran medida. La linealidad del modelo parece adecuada. Hay una ligera dispersión en los extremos, lo que podría indicar cierta heterocedasticidad.

Normal Q-Q: Este gráfico evalúa si los residuos siguen una distribución normal. La normalidad de los residuos es aceptable, pero algunos valores extremos pueden afectar el ajuste.

Scale-Location: evalúa la homocedasticidad (varianza constante de los residuos).Los residuos parecen mantener una variabilidad relativamente constante, pero hay una ligera mayor dispersión en los extremos.

Residuals vs Leverage: Hay algunos puntos influyentes en los datos. Es recomendable analizarlos en detalle, se podría establecer el modelo sin ellos para evaluar su impacto.

El intercepto (en este caso 2.745) es el valor de la variable dependiente (log(preciom)) cuando todas las demás variables explicativas (predictoras) son iguales a cero. al realizar la conversión:

Precio base=e Intercepto = e2.745 = 15.5.

Predicción del Precio de Vivienda para la Solicitud

TIPO: Casa ÁREA CONSTRUIDA: 200 PARQUEADEROS: 1 BAÑOS: 2 HABITACIONES: 4 ESTRATO: 4 o 5 CREDITO APROBADO: 350 millones

## El precio estimado para la vivienda 1 en estrato 4 es: 315.67 millones de pesos.
## El precio estimado para la vivienda 1 en estrato 5 es: 357.49 millones de pesos.

Interpretación:

  • Para estrato 4, el precio estimado de 315.67 millones está por debajo del crédito preaprobado, lo que indica que la compra es financieramente viable.
  • Para estrato 5, el precio estimado de 357.49 millones supera el crédito preaprobado, por lo que la compra podría requerir financiamiento adicional o una negociación en el precio.

Identificación de Ofertas Potenciales con las predicciones del modelo

barrio preciom areaconst parqueaderos banios habitaciones estrato
el bosque 335 202 1 4 5 5
el bosque 340 208 1 6 4 5
la merced 350 280 2 3 4 4
la merced 330 260 1 3 4 4
la merced 350 216 2 2 4 5

Visualización de las Ofertas en un Mapa

Análisis:

  • Se han identificado 5 viviendas en la zona norte con características similares a la solicitud y con precio ≤ 350 millones.
  • la merced es la opción con mayor área construida (280 m²) y 2 parqueaderos.
  • la merced es la opción más económica (330 millones), 1 parqueadero, área construida (260 m²), con 4 habitaciones y 3 baños, aunque en estrato 3.
  • El Bosque tienen características intermedias, con precios entre 335 y 340 millones.

Recomendación: - En el barrio la merced se encuentran las mejores opciones en referencia a precio y área,
- En el barrio El Bosque se encuentran opciones con mayor cantidad de baños, habitaciones y estrato.