Planteamiento

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

Exploración y limpieza de datos

Tipos de variables

Columnas Filas
13 8322
variable class first_values
id double 1147, 1169, 1350, 5992, 1212, 1724
zona character Zona Oriente, Zona Oriente, Zona Oriente, Zona Sur, Zona Norte, Zona Norte
piso character NA, NA, NA, 02, 01, 01
estrato double 3, 3, 3, 4, 5, 5
preciom double 250, 320, 350, 400, 260, 240
areaconst double 70, 120, 220, 280, 90, 87
parqueaderos double 1, 1, 2, 3, 1, 1
banios double 3, 2, 2, 5, 2, 3
habitaciones double 6, 3, 4, 3, 3, 3
tipo character Casa, Casa, Casa, Casa, Apartamento, Apartamento
barrio character 20 de julio, 20 de julio, 20 de julio, 3 de julio, acopi, acopi
longitud double -76.51168, -76.51237, -76.51537, -76.54, -76.5135, -76.517
latitud double 3.43382, 3.43369, 3.43566, 3.435, 3.45891, 3.36971

Hemos identificado la presencia de 9 variables de tipo numérico y 4 de tipo caracter en nuestros datos.

Datos NA

NAs
id 3
zona 3
piso 2638
estrato 3
preciom 2
areaconst 3
parqueaderos 1605
banios 3
habitaciones 3
tipo 3
barrio 3
longitud 3
latitud 3

Observando el planteamiento del problema, notamos que el piso no es una variable relevante a tener en cuenta y es la que contiene más valores NA. Por lo tanto, procedemos a eliminarla y, a continuación, eliminamos las filas que contienen NAs en sus registros.

Columnas Filas
12 6717
variable class first_values
id double 1147, 1169, 1350, 5992, 1212, 1724
zona character Zona Oriente, Zona Oriente, Zona Oriente, Zona Sur, Zona Norte, Zona Norte
estrato double 3, 3, 3, 4, 5, 5
preciom double 250, 320, 350, 400, 260, 240
areaconst double 70, 120, 220, 280, 90, 87
parqueaderos double 1, 1, 2, 3, 1, 1
banios double 3, 2, 2, 5, 2, 3
habitaciones double 6, 3, 4, 3, 3, 3
tipo character Casa, Casa, Casa, Casa, Apartamento, Apartamento
barrio character 20 de julio, 20 de julio, 20 de julio, 3 de julio, acopi, acopi
longitud double -76.51168, -76.51237, -76.51537, -76.54, -76.5135, -76.517
latitud double 3.43382, 3.43369, 3.43566, 3.435, 3.45891, 3.36971

Resumen estadístico de las variables

##        id           zona              estrato        preciom      
##  Min.   :   1   Length:6717        Min.   :3.00   Min.   :  58.0  
##  1st Qu.:2474   Class :character   1st Qu.:4.00   1st Qu.: 248.0  
##  Median :4474   Mode  :character   Median :5.00   Median : 355.0  
##  Mean   :4413                      Mean   :4.83   Mean   : 468.9  
##  3rd Qu.:6428                      3rd Qu.:6.00   3rd Qu.: 580.0  
##  Max.   :8319                      Max.   :6.00   Max.   :1999.0  
##    areaconst       parqueaderos        banios        habitaciones   
##  Min.   :  30.0   Min.   : 1.000   Min.   : 0.000   Min.   : 0.000  
##  1st Qu.:  86.0   1st Qu.: 1.000   1st Qu.: 2.000   1st Qu.: 3.000  
##  Median : 130.0   Median : 2.000   Median : 3.000   Median : 3.000  
##  Mean   : 181.1   Mean   : 1.835   Mean   : 3.255   Mean   : 3.611  
##  3rd Qu.: 233.0   3rd Qu.: 2.000   3rd Qu.: 4.000   3rd Qu.: 4.000  
##  Max.   :1745.0   Max.   :10.000   Max.   :10.000   Max.   :10.000  
##      tipo              barrio             longitud         latitud     
##  Length:6717        Length:6717        Min.   :-76.59   Min.   :3.333  
##  Class :character   Class :character   1st Qu.:-76.54   1st Qu.:3.379  
##  Mode  :character   Mode  :character   Median :-76.53   Median :3.412  
##                                        Mean   :-76.53   Mean   :3.415  
##                                        3rd Qu.:-76.52   3rd Qu.:3.451  
##                                        Max.   :-76.46   Max.   :3.498

Evidenciamos una inconsistencia en los valores de baños y habitaciones, ya que contienen valores de 0, lo cual no es posible para una vivienda y podría conducir a errores en el modelo. Por lo tanto, procedemos a eliminar esos registros.

##        id           zona              estrato         preciom      
##  Min.   :   1   Length:6688        Min.   :3.000   Min.   :  58.0  
##  1st Qu.:2473   Class :character   1st Qu.:4.000   1st Qu.: 245.0  
##  Median :4474   Mode  :character   Median :5.000   Median : 355.0  
##  Mean   :4414                      Mean   :4.831   Mean   : 468.6  
##  3rd Qu.:6428                      3rd Qu.:6.000   3rd Qu.: 580.0  
##  Max.   :8319                      Max.   :6.000   Max.   :1999.0  
##    areaconst       parqueaderos        banios        habitaciones   
##  Min.   :  30.0   Min.   : 1.000   Min.   : 1.000   Min.   : 1.000  
##  1st Qu.:  86.0   1st Qu.: 1.000   1st Qu.: 2.000   1st Qu.: 3.000  
##  Median : 130.0   Median : 2.000   Median : 3.000   Median : 3.000  
##  Mean   : 180.9   Mean   : 1.834   Mean   : 3.264   Mean   : 3.622  
##  3rd Qu.: 232.0   3rd Qu.: 2.000   3rd Qu.: 4.000   3rd Qu.: 4.000  
##  Max.   :1745.0   Max.   :10.000   Max.   :10.000   Max.   :10.000  
##      tipo              barrio             longitud         latitud     
##  Length:6688        Length:6688        Min.   :-76.59   Min.   :3.333  
##  Class :character   Class :character   1st Qu.:-76.54   1st Qu.:3.379  
##  Mode  :character   Mode  :character   Median :-76.53   Median :3.412  
##                                        Mean   :-76.53   Mean   :3.415  
##                                        3rd Qu.:-76.52   3rd Qu.:3.451  
##                                        Max.   :-76.46   Max.   :3.498

Analisis para caso 1

Primer paso

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

Después de realizar el filtro para seleccionar las casas ubicadas en el norte de Cali, procederemos a crear un gráfico que muestre su ubicación. Para ello, descargamos de la Alcaldía de Cali una capa de delimitación de la ciudad de Cali con su zona sur y norte, lo que nos proporcionará una mejor visibilidad de la ubicación de las casas con respecto a la ciudad.

La visualización de los datos revela que no todos los puntos se encuentran en la zona correspondiente. Esto es evidente en el mapa de las casas, donde se observa que algunas viviendas están ubicadas en la zona central y sur, pero se les asigna la ubicación de la zona norte. Esto sugiere que la base de datos no está geolocalizada con precisión.

Segundo paso

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.

El precio de las casas está correlacionado positivamente con el área construida, el estrato, el número de baños y el número de habitaciones. El área construida está correlacionada positivamente con el precio, con una correlación de 0.68. Esto significa que, en general, las viviendas con un área construida mayor tienen un precio más alto. El estrato está correlacionado positivamente con el precio, con una correlación de 0.52. Esto significa que, en general, las viviendas ubicadas en zonas de mayor estrato tienen un precio más alto. El número de baños está correlacionado positivamente con el precio, con una correlación de 0.53. Esto significa que, en general, las viviendas con más baños tienen un precio más alto. El número de habitaciones está correlacionado positivamente con el precio, con una correlación de 0.36. Esto significa que, en general, las viviendas con más habitaciones tienen un precio más alto.

Tercer paso

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

## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + parqueaderos + banios + 
##     habitaciones, data = casasNorth)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -765.19  -77.49  -15.62   46.41  979.13 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -231.5727    45.1306  -5.131 4.39e-07 ***
## areaconst       0.6646     0.0533  12.470  < 2e-16 ***
## estrato        78.3545     9.9538   7.872 2.94e-14 ***
## parqueaderos   24.2743     5.9052   4.111 4.74e-05 ***
## banios         22.4145     7.8308   2.862  0.00441 ** 
## habitaciones    6.0679     5.8640   1.035  0.30136    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 155 on 425 degrees of freedom
## Multiple R-squared:  0.6022, Adjusted R-squared:  0.5975 
## F-statistic: 128.7 on 5 and 425 DF,  p-value: < 2.2e-16

Al analizar los valores de significancia de cada uno de los coeficientes, notamos que todos son menores a 0.05, excepto el coeficiente de la variable ‘habitaciones’. Además, observamos que el valor del R^2 ajustado es de 0.5975, lo que sugiere una explicación del modelo baja. Es posible que haya un problema con la variable ‘habitaciones’ y que no esté contribuyendo de manera significativa al modelo.

El intercepto es -231.5727. Esto significa que cuando todas las demás variables son iguales a cero, el precio estimado de una casa sería de aproximadamente -$231,573. Sin embargo, en el contexto de los datos, este valor no tiene una interpretación realista porque no tiene sentido un precio negativo para una casa.

Área construida (areaconst): El coeficiente para el área construida es 0.6646. Esto indica que, manteniendo todas las demás variables constantes, un aumento de una unidad en el área construida se asocia con un aumento de aproximadamente $0.6646 en el precio de la casa. Esto tiene sentido, ya que es lógico que una casa más grande tienda a tener un precio más alto.

Estrato (estrato): El coeficiente para el estrato es 78.3545. Esto sugiere que, manteniendo todas las demás variables constantes, un aumento de una unidad en el estrato se asocia con un aumento de aproximadamente $78.35 en el precio de la casa. Esto también es lógico, ya que generalmente los estratos más altos tienden a tener propiedades más caras.

Número de parqueaderos (parqueaderos): El coeficiente para el número de parqueaderos es 24.2743. Esto significa que, manteniendo todas las demás variables constantes, un parqueadero adicional se asocia con un aumento de aproximadamente $24.27 en el precio de la casa. Esto tiene sentido, ya que un mayor número de parqueaderos puede ser una característica atractiva para los compradores.

Número de baños (banios): El coeficiente para el número de baños es 22.4145. Esto sugiere que, manteniendo todas las demás variables constantes, un baño adicional se asocia con un aumento de aproximadamente $22.41 en el precio de la casa. Esto también tiene sentido, ya que los baños adicionales suelen agregar comodidad y valor a una propiedad.

Número de habitaciones (habitaciones): El coeficiente para el número de habitaciones es 6.0679. Sin embargo, este coeficiente no es estadísticamente significativo (p-value = 0.30136), lo que significa que no podemos afirmar con confianza que el número de habitaciones tenga un efecto significativo en el precio de la casa en este modelo.

Es necesario explorar transformaciones de las variables existentes y considerar la estimación gradual del modelo para mejorar la explicación proporcionada por las variables predictoras.

Cuarto paso

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

Supuesto de linealidad

Verificamos la linealidad de las variables independientes con respecto a las predicciones mediante un gráfico de residuos parciales y un test de linealidad mediante la biblioteca gvlma:

## `geom_smooth()` using formula = 'y ~ x'

## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + parqueaderos + banios + 
##     habitaciones, data = casasNorth)
## 
## Coefficients:
##  (Intercept)     areaconst       estrato  parqueaderos        banios  
##    -231.5727        0.6646       78.3545       24.2743       22.4145  
## habitaciones  
##       6.0679  
## 
## 
## ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS
## USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM:
## Level of Significance =  0.05 
## 
## Call:
##  gvlma(x = modelo1) 
## 
##                       Value   p-value                   Decision
## Global Stat        1910.632 0.000e+00 Assumptions NOT satisfied!
## Skewness            178.555 0.000e+00 Assumptions NOT satisfied!
## Kurtosis           1712.585 0.000e+00 Assumptions NOT satisfied!
## Link Function         0.386 5.344e-01    Assumptions acceptable.
## Heteroscedasticity   19.106 1.237e-05 Assumptions NOT satisfied!

Global Stat: Este resultado muestra el estadístico global de la prueba. En este caso, el valor del estadístico global es 1910.63, y el valor p asociado es 0. Esto indica que el modelo de regresión lineal no cumple con algunas de las suposiciones fundamentales. En otras palabras, al menos una de las suposiciones se ha violado.

Skewness: El resultado relacionado con la asimetría (skewness) tiene un valor de 178.56 con un valor p de 0. Esto sugiere que la suposición de que los residuos siguen una distribución normal está fuertemente violada. Los residuos no siguen una distribución simétrica.

Kurtosis: El resultado relacionado con la curtosis (kurtosis) tiene un valor de 1712.58 con un valor p de 0. Esto indica que la suposición de que los residuos tienen una distribución con una curtosis normal está fuertemente violada. Los residuos tienen una curtosis significativamente diferente de la curtosis normal.

Link Function: El resultado relacionado con la función de enlace (link function) tiene un valor de 0.386 con un valor p de 0.534. Este resultado indica que la suposición relacionada con la función de enlace es aceptable. La función de enlace se refiere a la relación funcional entre las variables predictoras y la variable de respuesta.

Heteroscedasticity: El resultado relacionado con la heterocedasticidad (heteroscedasticity) tiene un valor de 19.11 con un valor p de 0.0000124. Esto indica que la suposición de homocedasticidad, que asume una varianza constante de los residuos a lo largo del rango de predicciones, se ha violado significativamente. Los residuos tienen una varianza que cambia a medida que aumentan las predicciones.

Supuesto de homocedasticidad

Realizamos la Prueba de Breusch-Pagan para evaluar la homocedasticidad:

## `geom_smooth()` using formula = 'y ~ x'

## 
##  studentized Breusch-Pagan test
## 
## data:  modelo1
## BP = 78.183, df = 5, p-value = 2.013e-15

Dado que el valor p es muy bajo, podemos concluir que el modelo de regresión lineal tiene una violación significativa del supuesto de homocedasticidad. Esto significa que la varianza de los residuos no es constante a lo largo de todo el rango de predicciones.

Supuesto de normalidad de los residuos

Comprobamos la normalidad de los residuos utilizando un gráfico Q-Q (Quantile-Quantile) y realizamos la prueba de normalidad de Shapiro-Wilk:

## 
##  Shapiro-Wilk normality test
## 
## data:  residuos
## W = 0.84982, p-value < 2.2e-16

Dado que el valor p es extremadamente bajo, podemos concluir que los residuos no siguen una distribución normal. Esto significa que la suposición de normalidad de los residuos en el modelo de regresión lineal se ha violado significativamente.

Supuesto de independencia de los residuos

Se realiza un gráfico de residuos frente a las observaciones y una Prueba de Autocorrelación de Durbin-Watson:

## 
##  Durbin-Watson test
## 
## data:  modelo1
## DW = 1.7442, p-value = 0.003318
## alternative hypothesis: true autocorrelation is greater than 0

Dado que el valor p es menor a 0.05, podemos concluir que hay evidencia de autocorrelación en los residuos del modelo de regresión lineal. Esto sugiere que los residuos no son independientes y que hay algún patrón de correlación serial presente en los datos.

Mejorando el modelo

Realizaremos transformaciones y seleccionaremos el mejor modelo utilizando el Criterio de Información de Akaike (AIC):

## 
## Call:
## lm(formula = log(preciom) ~ log(areaconst) + estrato + parqueaderos + 
##     banios + habitaciones, data = casasNorth)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.81378 -0.15309 -0.01065  0.13267  1.01934 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    2.661297   0.128037  20.785  < 2e-16 ***
## log(areaconst) 0.412361   0.028141  14.653  < 2e-16 ***
## estrato        0.178182   0.016495  10.802  < 2e-16 ***
## parqueaderos   0.040969   0.009461   4.330 1.86e-05 ***
## banios         0.044599   0.012508   3.566 0.000404 ***
## habitaciones   0.013821   0.009334   1.481 0.139434    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2472 on 425 degrees of freedom
## Multiple R-squared:  0.7244, Adjusted R-squared:  0.7212 
## F-statistic: 223.4 on 5 and 425 DF,  p-value: < 2.2e-16
## Start:  AIC=-1198.68
## log(preciom) ~ log(areaconst) + estrato + parqueaderos + banios + 
##     habitaciones
## 
##                  Df Sum of Sq    RSS     AIC
## <none>                        25.974 -1198.7
## - habitaciones    1    0.1340 26.108 -1198.5
## - banios          1    0.7770 26.751 -1188.0
## - parqueaderos    1    1.1460 27.120 -1182.1
## - estrato         1    7.1313 33.106 -1096.1
## - log(areaconst)  1   13.1230 39.097 -1024.4
## 
## Call:
## lm(formula = log(preciom) ~ log(areaconst) + estrato + parqueaderos + 
##     banios + habitaciones, data = casasNorth)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.81378 -0.15309 -0.01065  0.13267  1.01934 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    2.661297   0.128037  20.785  < 2e-16 ***
## log(areaconst) 0.412361   0.028141  14.653  < 2e-16 ***
## estrato        0.178182   0.016495  10.802  < 2e-16 ***
## parqueaderos   0.040969   0.009461   4.330 1.86e-05 ***
## banios         0.044599   0.012508   3.566 0.000404 ***
## habitaciones   0.013821   0.009334   1.481 0.139434    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2472 on 425 degrees of freedom
## Multiple R-squared:  0.7244, Adjusted R-squared:  0.7212 
## F-statistic: 223.4 on 5 and 425 DF,  p-value: < 2.2e-16

Como se puede apreciar en los resultados, el mejor modelo, con un R^2 de 0.72, se obtiene mediante una transformación logarítmica de la variable dependiente (presiom) y de la variable predictiva ‘areaconstruida’. Ahora procederemos a evaluar los supuestos:

## 
## Call:
## lm(formula = log(preciom) ~ log(areaconst) + estrato + parqueaderos + 
##     banios + habitaciones, data = casasNorth)
## 
## Coefficients:
##    (Intercept)  log(areaconst)         estrato    parqueaderos          banios  
##        2.66130         0.41236         0.17818         0.04097         0.04460  
##   habitaciones  
##        0.01382  
## 
## 
## ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS
## USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM:
## Level of Significance =  0.05 
## 
## Call:
##  gvlma(x = modelo2) 
## 
##                       Value   p-value                   Decision
## Global Stat        16.90294 0.0020187 Assumptions NOT satisfied!
## Skewness            5.28611 0.0214962 Assumptions NOT satisfied!
## Kurtosis           11.54972 0.0006776 Assumptions NOT satisfied!
## Link Function       0.00343 0.9533007    Assumptions acceptable.
## Heteroscedasticity  0.06368 0.8007770    Assumptions acceptable.

Observamos que, aunque este modelo no cumple con todos los supuestos, a diferencia del anterior, satisface el supuesto de homocedasticidad, lo que lo hace un poco mejor. Ahora procederemos a realizar las predicciones con este modelo.

Quinto paso

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

solicitud1 <- data.frame(
  areaconst = 200,        # Área construida
  estrato = 4,            # Estrato
  parqueaderos = 1,       # Número de parqueaderos
  banios = 2,             # Número de baños
  habitaciones = 4        # Número de habitaciones
)

solicitud2 <- data.frame(
  areaconst = 200,        # Área construida
  estrato = 5,            # Estrato
  parqueaderos = 1,       # Número de parqueaderos
  banios = 2,             # Número de baños
  habitaciones = 4        # Número de habitaciones
)

prediccion_precio1 <- predict(Modselec, newdata = solicitud1)
cat("Precio estimado de la vivienda para la primera solicitud con estrato 4:", exp(prediccion_precio1), "\n")
## Precio estimado de la vivienda para la primera solicitud con estrato 4: 312.4043
prediccion_precio2 <- predict(Modselec, newdata = solicitud2)
cat('Precio estimado de la vivienda para la primera solicitud con estrato 5:',exp(prediccion_precio2) )
## Precio estimado de la vivienda para la primera solicitud con estrato 5: 373.3366

Sexto Paso

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.

Precisamos los precios de las viviendas utilizando el modelo y luego filtramos las viviendas según el precio predicho, seleccionando las 5 viviendas más al norte de la ciudad.

Dado que el modelo no cumplió de manera sólida con los supuestos, se recomienda explorar otros modelos que puedan proporcionar una mejor explicación de los datos. A continuación, presentamos las casas que pueden ofrecerse al cliente:

Analisis para caso 2

Primer paso

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

Después de realizar el filtro para seleccionar los apartamentos ubicados en el sur de Cali, procederemos a crear un gráfico que muestre su ubicación. Para ello, se descargó de la Alcaldía de Cali una capa de delimitación de la ciudad de Cali, lo que nos proporcionará una mejor visibilidad de la ubicación de las casas con respecto a la ciudad.

La visualización de los datos revela que no todos los puntos se encuentran en la zona correspondiente. Esto es evidente en el mapa de las casas, donde se observa que algunas viviendas están ubicadas en la zona central y Norte, pero se les asigna la ubicación de la zona Sur. Esto sugiere que la base de datos no está geolocalizada con precisión.

Segundo paso

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.

El precio de las casas está correlacionado positivamente con el área construida, el estrato, el número de baños y el número de habitaciones. El área construida está correlacionada positivamente con el precio, con una correlación de 0.74. Esto significa que, en general, las viviendas con un área construida mayor tienen un precio más alto. El estrato está correlacionado positivamente con el precio, con una correlación de 0.65. Esto significa que, en general, las viviendas ubicadas en zonas de mayor estrato tienen un precio más alto. El número de baños está correlacionado positivamente con el precio, con una correlación de 0.72. Esto significa que, en general, las viviendas con más baños tienen un precio más alto. El número de habitaciones está correlacionado positivamente con el precio, con una correlación de 0.31. Esto significa que, en general, las viviendas con más habitaciones tienen un precio más alto.

Tercer paso

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

## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + parqueaderos + banios + 
##     habitaciones, data = aptsSouth)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1095.63   -42.49    -1.25    40.97   922.58 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -255.85169   15.95956 -16.031  < 2e-16 ***
## areaconst       1.29109    0.05415  23.842  < 2e-16 ***
## estrato        60.27082    3.09689  19.462  < 2e-16 ***
## parqueaderos   75.72992    4.19324  18.060  < 2e-16 ***
## banios         49.94971    3.46080  14.433  < 2e-16 ***
## habitaciones  -26.58471    4.03631  -6.586 5.53e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 98.02 on 2369 degrees of freedom
## Multiple R-squared:  0.7477, Adjusted R-squared:  0.7471 
## F-statistic:  1404 on 5 and 2369 DF,  p-value: < 2.2e-16

Al analizar los valores de significancia de cada uno de los coeficientes, notamos que todos son menores a 0.05. Además, observamos que el valor del R^2 ajustado es de 0.7471, lo que sugiere una explicación del modelo buena.

El intercepto es -255.85. Esto significa que, en ausencia de todas las demás variables (área construida, estrato, número de cuartos, número de parqueaderos y número de baños), se espera que el precio base de una vivienda sea de -255.85.

El coeficiente para el área construida es positivo (1.29109), lo que indica que, manteniendo todas las demás variables constantes, un aumento de una unidad en el área construida está asociado con un aumento de aproximadamente 1.29 unidades en el precio de la vivienda. Esto es lógico, ya que es de esperar que las viviendas más grandes sean más caras.

El coeficiente para el estrato es positivo (60.27082), lo que sugiere que, manteniendo todas las demás variables constantes, un aumento en una unidad en el estrato está asociado con un aumento de aproximadamente 60.27 unidades en el precio de la vivienda. Esto indica que las viviendas en estratos más altos tienden a ser más caras.

El coeficiente para el número de parqueaderos es positivo (75.72992), lo que significa que, manteniendo todas las demás variables constantes, un aumento de una unidad en el número de parqueaderos está asociado con un aumento de aproximadamente 75.73 unidades en el precio de la vivienda. Esto tiene sentido, ya que las viviendas con más parqueaderos suelen ser más caras.

El coeficiente para el número de baños es positivo (49.94971), lo que indica que, manteniendo todas las demás variables constantes, un aumento de una unidad en el número de baños está asociado con un aumento de aproximadamente 49.95 unidades en el precio de la vivienda. Esto también es lógico, ya que las viviendas con más baños suelen ser más caras.

El coeficiente para el número de habitaciones es negativo (-26.58471). Esto significa que, manteniendo todas las demás variables constantes, un aumento de una unidad en el número de habitaciones está asociado con una disminución de aproximadamente 26.58 unidades en el precio de la vivienda. Esto puede ser un poco contraintuitivo, ya que podríamos esperar que las viviendas con más habitaciones sean más caras.

El coeficiente de determinación R^2 es 0.7477. Esto significa que aproximadamente el 74.77% de la variabilidad en el precio de las viviendas se explica por las variables incluidas en el modelo. Es un valor relativamente alto, lo que sugiere que el modelo tiene un buen ajuste a los datos.

En general, el modelo parece ser bueno en términos estadísticos, pero es importante investigar más a fondo la interpretación del coeficiente de las habitaciones, ya que su relación es contraintuitiva. También puedes considerar la posibilidad de incluir interacciones entre las variables o explorar otras transformaciones de las variables para mejorar aún más el modelo.

Cuarto paso

Verificamos la linealidad y los demás supuestos mediante las pruebas implementadas en el caso 1: (prueba de Breusch-Pagan estandarizada, prueba de normalidad Shapiro-Wilk, prueba de Durbin-Watson).

## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + parqueaderos + banios + 
##     habitaciones, data = aptsSouth)
## 
## Coefficients:
##  (Intercept)     areaconst       estrato  parqueaderos        banios  
##     -255.852         1.291        60.271        75.730        49.950  
## habitaciones  
##      -26.585  
## 
## 
## ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS
## USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM:
## Level of Significance =  0.05 
## 
## Call:
##  gvlma(x = modeloApts1) 
## 
##                       Value   p-value                   Decision
## Global Stat        63847.73 0.000e+00 Assumptions NOT satisfied!
## Skewness             579.16 0.000e+00 Assumptions NOT satisfied!
## Kurtosis           63150.11 0.000e+00 Assumptions NOT satisfied!
## Link Function         74.82 0.000e+00 Assumptions NOT satisfied!
## Heteroscedasticity    43.62 3.979e-11 Assumptions NOT satisfied!
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo1
## BP = 78.183, df = 5, p-value = 2.013e-15
## 
##  Shapiro-Wilk normality test
## 
## data:  residuos
## W = 0.84982, p-value < 2.2e-16
## 
##  Durbin-Watson test
## 
## data:  modelo1
## DW = 1.7442, p-value = 0.003318
## alternative hypothesis: true autocorrelation is greater than 0

Observamos que el modelo no cumple ninguno de los supuestos necesarios para su validación, lo que nos motiva a realizar transformaciones y ajustes en el modelo.

Mejorando el modelo

Realizaremos transformaciones y seleccionaremos el mejor modelo utilizando el Criterio de Información de Akaike (AIC):

## 
## Call:
## lm(formula = log(preciom) ~ log(areaconst) + estrato + parqueaderos + 
##     banios + habitaciones, data = aptsSouth)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.6888 -0.1200  0.0111  0.1352  0.6842 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     1.707201   0.067224  25.396  < 2e-16 ***
## log(areaconst)  0.628398   0.018874  33.294  < 2e-16 ***
## estrato         0.191819   0.006539  29.333  < 2e-16 ***
## parqueaderos    0.110466   0.008711  12.682  < 2e-16 ***
## banios          0.072988   0.007373   9.899  < 2e-16 ***
## habitaciones   -0.061581   0.008445  -7.292 4.15e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2009 on 2369 degrees of freedom
## Multiple R-squared:  0.8303, Adjusted R-squared:   0.83 
## F-statistic:  2319 on 5 and 2369 DF,  p-value: < 2.2e-16
## Start:  AIC=-7617.68
## log(preciom) ~ log(areaconst) + estrato + parqueaderos + banios + 
##     habitaciones
## 
##                  Df Sum of Sq     RSS     AIC
## <none>                         95.608 -7617.7
## - habitaciones    1     2.146  97.754 -7567.0
## - banios          1     3.955  99.563 -7523.4
## - parqueaderos    1     6.490 102.098 -7463.7
## - estrato         1    34.724 130.332 -6883.8
## - log(areaconst)  1    44.738 140.346 -6708.0
## 
## Call:
## lm(formula = log(preciom) ~ log(areaconst) + estrato + parqueaderos + 
##     banios + habitaciones, data = aptsSouth)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.6888 -0.1200  0.0111  0.1352  0.6842 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     1.707201   0.067224  25.396  < 2e-16 ***
## log(areaconst)  0.628398   0.018874  33.294  < 2e-16 ***
## estrato         0.191819   0.006539  29.333  < 2e-16 ***
## parqueaderos    0.110466   0.008711  12.682  < 2e-16 ***
## banios          0.072988   0.007373   9.899  < 2e-16 ***
## habitaciones   -0.061581   0.008445  -7.292 4.15e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2009 on 2369 degrees of freedom
## Multiple R-squared:  0.8303, Adjusted R-squared:   0.83 
## F-statistic:  2319 on 5 and 2369 DF,  p-value: < 2.2e-16

Como se puede apreciar en los resultados, el mejor modelo, con un R^2 de 0.83, se obtiene mediante una transformación logarítmica de la variable dependiente (presiom) y de la variable predictiva ‘areaconstruida’. Ahora procederemos a evaluar los supuestos:

## 
## Call:
## lm(formula = log(preciom) ~ log(areaconst) + estrato + parqueaderos + 
##     banios + habitaciones, data = aptsSouth)
## 
## Coefficients:
##    (Intercept)  log(areaconst)         estrato    parqueaderos          banios  
##        1.70720         0.62840         0.19182         0.11047         0.07299  
##   habitaciones  
##       -0.06158  
## 
## 
## ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS
## USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM:
## Level of Significance =  0.05 
## 
## Call:
##  gvlma(x = Modselec2) 
## 
##                       Value   p-value                   Decision
## Global Stat        1322.054 0.000e+00 Assumptions NOT satisfied!
## Skewness            154.684 0.000e+00 Assumptions NOT satisfied!
## Kurtosis           1147.184 0.000e+00 Assumptions NOT satisfied!
## Link Function         1.666 1.968e-01    Assumptions acceptable.
## Heteroscedasticity   18.520 1.681e-05 Assumptions NOT satisfied!

Observamos que, aunque este modelo no cumple con todos los supuestos, a diferencia del anterior, satisface el supuesto de relación, lo que lo hace un poco mejor. Ahora procederemos a realizar las predicciones con este modelo.

Quinto paso

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

## Precio estimado de la vivienda para la primera solicitud con estrato 4: 660.5002
## Precio estimado de la vivienda para la primera solicitud con estrato 5: 800.1636

Sexto paso

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

Precisamos los precios de las viviendas utilizando el modelo y luego filtramos las viviendas según el precio predicho, seleccionando las 5 viviendas más al norte de la ciudad.

Dado que el modelo no cumplió de manera sólida con los supuestos, se recomienda explorar otros modelos que puedan proporcionar una mejor explicación de los datos. A continuación, presentamos las casas que pueden ofrecerse al cliente:

Conclusiones

En el análisis del mercado de apartamentos en Cali, se destacan algunas tendencias significativas. Primero, la Zona Sur presenta la oferta más amplia con 2,787 unidades, seguida de la Zona Norte con 1,198, mientras que las zonas Oeste, Oriente y Centro cuentan con 1,029, 62 y 24 apartamentos, respectivamente. Esto subraya una distribución desigual de la oferta en la ciudad. Además, el análisis de correlación revela que el precio de los apartamentos está positivamente relacionado con el área construida, el estrato, el número de baños y el número de habitaciones. La influencia más destacada es la que existe entre el precio y el área construida. En general, los apartamentos más grandes, ubicados en estratos superiores y con más comodidades, tienden a tener precios más elevados.

Sin embargo, es importante destacar que el modelo de regresión lineal múltiple aplicado a los apartamentos presentó algunos desafíos. A pesar de que el R-cuadrado del modelo es de aproximadamente 0.7477 y 0.82 para el primer y segundo caso, lo que indica que el 74.77% y 82% de la variabilidad en los precios se explica mediante las variables analizadas, se identificó autocorrelación positiva en los residuos. Esto sugiere que existen otros factores no considerados en el modelo que pueden influir en los precios de los apartamentos en Cali. Además, los supuestos de normalidad de los residuos y homocedasticidad no se cumplieron completamente, lo que indica que el modelo podría no ser la mejor representación de los datos.

Para mejorar la precisión del modelo y explicar mejor los datos de viviendas en la ciudad de Cali, se recomienda considerar la exploración de modelos alternativos, como regresiones no lineales o modelos de series temporales si existen tendencias a lo largo del tiempo. También se sugiere investigar la inclusión de variables adicionales que puedan capturar aspectos no considerados previamente. Estos resultados ofrecen una base sólida para el análisis y la toma de decisiones en el mercado inmobiliario de Cali, destacando la importancia de una evaluación continua y la adaptación de modelos según sea necesario al comprar o vender apartamentos en la ciudad.