Contexto de la actividad

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

Se debe ayudar 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).

Resolvemos el problema de la siguiente forma:

PRIMER ANÁLISIS - CASAS ZONA NORTE

  1. Realizamos un filtro a la base de datos e incluya sólo las ofertas de : base1 y 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 qué?).
#install.packages("devtools") # solo la primera vez
#devtools::install_github("dgonxalex80/paqueteMODELOS", force =TRUE)
library(paqueteMODELOS)
data("vivienda")
#vivienda <- na.omit(vivienda)
data_vivienda1 = subset(vivienda, tipo == "Casa" & zona == "Zona Norte")
data_vivienda1<-data_vivienda1[data_vivienda1$habitaciones != 0, ]#excluir apartamentos sin habitaciones
#data_vivienda1 = subset(vivienda, tipo == "Casa" & zona == "Zona Norte" & areaconst >= 200 & parqueaderos == 1& banios == 2 & habitaciones == 4  )#para filtrar las condiciones pedidas
kable(head(data_vivienda1))
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 NA 7 6 Casa acopi -76.52950 3.38527
4460 Zona Norte 02 4 625 355 3 5 5 Casa acopi -76.53179 3.40590
6081 Zona Norte 02 5 750 237 2 6 6 Casa acopi -76.54044 3.36862
7824 Zona Norte 02 4 600 160 1 4 5 Casa acopi -76.55210 3.42125
#data_vivienda1

Al realizar el filtro anterior se observan 702 registros(filas) y 13 variables excluyendo las casas que no presentan habitaciones.

A continuación visualizamos la distribución de los inmuebles por tipo y por zona sin excluir los inmuebles sin habitaciones

base1_table = table(vivienda$zona, vivienda$tipo)
kable(base1_table, caption = "Tabla de distribución por tipo y zona")
Tabla de distribución por tipo y zona
Apartamento Casa
Zona Centro 24 100
Zona Norte 1198 722
Zona Oeste 1029 169
Zona Oriente 62 289
Zona Sur 2787 1939
# install.packages("leaflet")
library(leaflet)
## Warning: package 'leaflet' was built under R version 4.2.3
colores <- colorFactor(palette = c( "green"), domain = data_vivienda1$zona)

# se crea el mapa con las Casas según su latitud y longitud según el color marcado en el paso anterior.
mapa <- leaflet(data_vivienda1) %>%
  addTiles() %>%
  addCircleMarkers(lng = ~longitud, lat = ~latitud, color = ~colores(zona), radius = 4)

# Ver Mapa
mapa

Con lo observado en el mapa, parece que la base de datos tiene una problemas ya que aunque que muchas viviendas que indican su ubicación en la zona norte, en el mapa aparecen en otras zonas, esto se puede deber quizá a errores en los datos, es decir, a su digitación.

  1. Realice un análisis exploratorio de datos enfocado en la correlación entre la variable respuesta (precio del apartamento) 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.
# Calculamos las medidas descriptivas de las variables
library(summarytools)
summarytools::descr(data_vivienda1[,4:9])
## Descriptive Statistics  
## data_vivienda1  
## N: 702  
## 
##                     areaconst   banios   estrato   habitaciones   parqueaderos   preciom
## ----------------- ----------- -------- --------- -------------- -------------- ---------
##              Mean      262.95     3.59      4.21           4.64           2.18    444.20
##           Std.Dev      167.15     1.48      0.99           1.69           1.41    268.48
##               Min       30.00     0.00      3.00           1.00           1.00     89.00
##                Q1      140.00     2.00      3.00           3.00           1.00    257.00
##            Median      240.00     3.00      4.00           4.00           2.00    390.00
##                Q3      337.00     4.00      5.00           5.00           3.00    550.00
##               Max     1440.00    10.00      6.00          10.00          10.00   1940.00
##               MAD      148.26     1.48      1.48           1.48           1.48    222.39
##               IQR      196.75     2.00      2.00           2.00           2.00    292.25
##                CV        0.64     0.41      0.23           0.36           0.64      0.60
##          Skewness        1.89     0.80      0.05           1.15           1.87      1.79
##       SE.Skewness        0.09     0.09      0.09           0.09           0.12      0.09
##          Kurtosis        6.45     1.04     -1.27           1.11           4.65      4.79
##           N.Valid      702.00   702.00    702.00         702.00         432.00    702.00
##         Pct.Valid      100.00   100.00    100.00         100.00          61.54    100.00

Correlaciones entre variables de tipo cuantitativo

#data_apartamentos = subset(vivienda, tipo == "Apartamento" )
# install.packages("PerformanceAnalytics")
library(PerformanceAnalytics)

chart.Correlation(data_vivienda1[,4:9], histogram = TRUE, method = "pearson")

#chart.Correlation(columnas_seleccionadas, histogram = F, pch = 19)
#data_apartamentos
#vivienda
#str(data_apartamentos)
correlation_test11 <- cor.test(data_vivienda1$preciom, data_vivienda1$areaconst, method = "pearson")
correlation_test12 <- cor.test(data_vivienda1$preciom, data_vivienda1$estrato, method = "pearson")
correlation_test22 <- cor.test(data_vivienda1$preciom, data_vivienda1$banios, method = "pearson")
correlation_test32 <- cor.test(data_vivienda1$preciom, data_vivienda1$habitaciones, method = "pearson")
correlation_test11
## 
##  Pearson's product-moment correlation
## 
## data:  data_vivienda1$preciom and data_vivienda1$areaconst
## t = 28.456, df = 700, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.6960834 0.7649033
## sample estimates:
##       cor 
## 0.7323582
correlation_test12
## 
##  Pearson's product-moment correlation
## 
## data:  data_vivienda1$preciom and data_vivienda1$estrato
## t = 20.844, df = 700, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.5709912 0.6625008
## sample estimates:
##       cor 
## 0.6188413
correlation_test22
## 
##  Pearson's product-moment correlation
## 
## data:  data_vivienda1$preciom and data_vivienda1$banios
## t = 17.516, df = 700, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.4983786 0.6014474
## sample estimates:
##       cor 
## 0.5520181
correlation_test32
## 
##  Pearson's product-moment correlation
## 
## data:  data_vivienda1$preciom and data_vivienda1$habitaciones
## t = 10.78, df = 700, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.3120334 0.4390569
## sample estimates:
##       cor 
## 0.3773184
Coeficiente de correlación
Precio
Área Coeficiente de correlación = 0.73, Intervalo de confianza (0.69, 0.76), p-valor \(2.2e^{-16}\)
Estrato Coeficiente de correlación = 0.61, Intervalo de confianza (0.57, 0.66), p-valor \(2.2e^{-16}\)
Número de Baños Coeficiente de correlación = 0.55, Intervalo de confianza (0.49, 0.60), p-valor \(2.2e^{-16}\)
Número de Habitaciones Coeficiente de correlación = 0.38, Intervalo de confianza (0.31, 0.43), p-valor \(2.2e^{-16}\)

Con respecto a la correlación de las variables y al precio de la vivienda (apartamentos), en todos los casos esta es positiva pero se destaca su mayor fortaleza en area construida 0,73, Estrato 0,61, número de baños 0,55 y número de habitaciones 0.38, de manera similar se presentarón valores estadísiticamente significativos p- valores menores al 5%.

  1. Estime un modelo de regresión lineal múltiple con las variables del punto anterior (precio = f(área construida, estrato, numero de cuartos, numero de parqueaderos, numero 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 y discuta el ajuste del modelo e implicaciones (que podrían hacer para mejorarlo).

Modelo lineal múltiple para las casas del norte de la ciudad

modelo_casas = lm(preciom ~ areaconst + estrato + parqueaderos + banios + habitaciones, data = data_vivienda1)
summary(modelo_casas)
## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + parqueaderos + banios + 
##     habitaciones, data = data_vivienda1)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -783.25  -78.11  -15.78   48.08  979.35 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -240.66853   45.04002  -5.343 1.49e-07 ***
## areaconst       0.67543    0.05319  12.699  < 2e-16 ***
## estrato        81.20468    9.87951   8.220 2.49e-15 ***
## parqueaderos   24.40463    5.92440   4.119 4.57e-05 ***
## banios         18.25750    7.56265   2.414   0.0162 *  
## habitaciones    8.02546    5.79739   1.384   0.1670    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 155.5 on 426 degrees of freedom
##   (270 observations deleted due to missingness)
## Multiple R-squared:  0.6041, Adjusted R-squared:  0.5995 
## F-statistic:   130 on 5 and 426 DF,  p-value: < 2.2e-16
intervalos_confianza1 <- confint(modelo_casas)
intervalos_confianza1
##                     2.5 %       97.5 %
## (Intercept)  -329.1968601 -152.1401978
## areaconst       0.5708802    0.7799714
## estrato        61.7860165  100.6233430
## parqueaderos   12.7599378   36.0493298
## banios          3.3927353   33.1222624
## habitaciones   -3.3695870   19.4205032

Para este modelo de regresión multiple donde el precio es la variable respuesta y las variables predictoras son: área construida, estrato, número de parqueaderos, número de baños, número de habitaciones, se tiene un p-valor de \(2.2(10)^{-16}\) el el ANOVA del modelo, sugiriendo que es adecuado desarrollar el modelo.

El desarrollo del modelo es:

\(y = \beta_{0} + \beta_{1}x_{1} + \beta_{2}x_{2} + \beta_{3}x_{3} +\beta_{4}x_{4} + \beta_{5}x_{5} + \epsilon\)

\(Precio = -245.6 + 0.66(área) + 85.6(estrato) + 28.06(parqueaderos) + 11.5(baños) + 8.91(habitaciones) \epsilon\)

El coeficiente del área construida que es 0.66, este indica que, un aumento en un metro cuadrado en el área, el precio de la vivienda incrementa en 0.66 millones de pesos, sin que haya variabilidad en las demás variables. A su vez, ocurre de forma similiar con el parqueadero, aumentando una unidad de éste para la vivienda, el precio de la misma incrementa en 28.06 millones de pesos, sosteniendo de igual forma una constante en las demás variables. Para el Estrato, aumentado una unidad en él, el precio de la vivienda aumenta en 85.6 millones de pesos, con las demás variables constantes. Los baños tendrán el mismo comportamiento mencionado, una unidad adicional en baño en la propiedad, el precio de la misma aumenta en 11.5 millones de pesos, junto con las demás variables constantes, mientras que una unidad adicional en las habitaciones en la propiedad, el precio de la misma aumenta en 8.91 millones de pesos, junto con las demás variables constantes.

Este modelo explica el 59,52% de la variación, ya que el \(R^2\) toma un valor es de 0.5952, lo que significa que, en términos porcentuales, el 59,52% de la variabilidad en el precio de las casas en el Norte de la ciudad de Cali, son explicadas por las variables predictoras dadas en el modelo.

además se obtiene las siguientes observaciones con respecto a la estimación de los parámetros:

Recomendaciones sugeridas para la mejora del modelo:

Incorporar factores externos a la propiedad que contribuyan a una mejor comprensión de su precio es esencial para desarrollar un modelo de valoración más completo. Esto es válido tanto para propiedades en unidades residenciales como para propiedades en barrios. Por ejemplo algunos aspectos a considerar son: unidad residencial, salón social, zona húmeda, zona de juegos, senderos peatonales, estado de la vía, vecinos y comunidad, seguridad y parques y Espacios Verdes.

También se podría optimizar el modelo, es decir:

Eliminar variables no significativas es fundamental para mantener la eficacia del modelo. Algunas variables podrían no aportar información relevante y, por lo tanto, podrían ser excluidas. La eliminación de estas variables puede mejorar la precisión del modelo al reducir el ruido y la complejidad.

En resumen, considerar factores adicionales tanto en unidades residenciales como en barrios puede mejorar la capacidad del modelo para predecir con precisión los precios de las propiedades. Al mismo tiempo, eliminar variables no significativas garantiza que el modelo se enfoque en las características más relevantes, lo que contribuye a su eficacia general.

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

Validación de supuestos - Normalidad de los errores para el modelo de las casas del norte de la ciudad.

resi=modelo_casas$residuals
shapiro.test(resi)
## 
##  Shapiro-Wilk normality test
## 
## data:  resi
## W = 0.85285, p-value < 2.2e-16

La prueba de Shapiro Wilks indica si un conjunto de datos siguen una distribución normal o no. Para los residuos del modelo

\(y = \beta_{0} + \beta_{1}x_{1} + \beta_{2}x_{2} + \beta_{3}x_{3} +\beta_{4}x_{4} + \beta_{5}x_{5} + \epsilon\)

\(Precio = -238.1 + 0.68(área) + 80.6(estrato) + 24.0(parqueaderos) + 18.9(baños) + 7.7(habitaciones) \epsilon\)

el p-valor(\(2.2e-16\)) de la muestra está por debajo del nivel de \(\alpha\) = 0.05, lo que significa que se rechaza la hipótsis nula y se determina que, los errores, no siguen una ditribución normal.

Validación de supuestos - Homocedasticidad de los errores para el modelo de las casas del norte de la ciudad.

#install.packages("lmtest")
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.2.3
bptest(modelo_casas)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_casas
## BP = 79.318, df = 5, p-value = 1.165e-15

Se utiliza la prueba de Breusch-Pagan para determinar si hay homocedasticidad o heterocedasticidad.

Esta prueba utiliza las siguientes hipótesis nulas y alternativas :

Hipótesis nula (\(H_{0}\) ): la homocedasticidad está presente (los residuos se distribuyen con la misma varianza)

Hipótesis alternativa (\(H_{a}\) ): Heteroscedasticidad está presente (los residuos no se distribuyen con la misma varianza)

Como p-value = 6.257e-10 menor al valor de referencia \(\alpha\) (0.05), por lo tanto, se rechaza la hipótesis nula de homocedasticidad (los residuos se distribuyen con la misma varianza), presentando heterocedasticidad (los residuos no se distribuyen con la misma varianza) en el modelo.

Validación de supuestos - Independencia de los errores para el modelo de las casas del norte de la ciudad.

dwtest(modelo_casas)
## 
##  Durbin-Watson test
## 
## data:  modelo_casas
## DW = 1.7631, p-value = 0.005876
## alternative hypothesis: true autocorrelation is greater than 0

El Test de Durbin-Watson permite evaluar si existe autocorrelación en un modelo de Regresión Simple o múltiple; La estadística de prueba siempre varía de 0 a 4 donde:

d = 2 indica que no hay autocorrelación

d < 2 indica correlación serial positiva

d > 2 indica correlación serial negativa

En general, si d es menor que 1,5 o mayor que 2,5, existe un problema de autocorrelación potencialmente grave. De lo contrario, si d está entre 1,5 y 2,5, es probable que la autocorrelación no sea motivo de preocupación.

Para el modelo de las casas del norte de la ciudad, teniendo en cuenta el valor \(\alpha\) (0.05) la cantidad de variables independientes del modelo (5) y el número de muestras (+200), los valores de referencia son: dL: 1.72 y dU: 1.82, el valor de DW= 1.76, lo cuál indica que hay autocorrelación en el modelo.

  1. Con el modelo identificado debe predecir el precio de la vivienda con las características de la primera solicitud
caracteristicas= data.frame(
  areaconst = 200,
  parqueaderos = 1,
  estrato = c(4, 5),
  banios = 2,
  habitaciones = 4
)
caracteristicas
##   areaconst parqueaderos estrato banios habitaciones
## 1       200            1       4      2            4
## 2       200            1       5      2            4
predict(modelo_casas,caracteristicas)
##        1        2 
## 312.2568 393.4615

Los precios que predice el modelo para las casas con las especificaciones:

es de 312 256 800 millones.

Mientras que para las casas con especificaciones

es de 393 461 500 millones.

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

library(dplyr)
casa = filter(data_vivienda1, areaconst <= 200, parqueaderos <= 1, banios <= 2, habitaciones <= 4, zona == "Zona Norte", estrato %in% c(4, 5), preciom <= 350)
casa
## # A tibble: 3 x 13
##      id zona    piso  estrato preciom areaconst parqueaderos banios habitaciones
##   <dbl> <chr>   <chr>   <dbl>   <dbl>     <dbl>        <dbl>  <dbl>        <dbl>
## 1  1666 Zona N~ 02          4     275      120             1      2            4
## 2  1073 Zona N~ <NA>        4     280      104.            1      2            3
## 3  4779 Zona N~ <NA>        5     280      140             1      2            3
## # i 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>

Con las especificaciones solicitadas se encontraron 3 casas, cuyas ubicaciones se encuentran a continuación:

library(leaflet)

colores <- colorFactor(palette = c("red"), domain = casa$zona)
#c( "green")
# se crea el mapa con las Casas según su latitud y longitud según el color marcado en el paso anterior.
mapa <- leaflet(casa) %>%
  addTiles() %>%
  addCircleMarkers(lng = ~longitud, lat = ~latitud, color = ~colores(zona), radius = 10)

# Ver Mapa
mapa
  1. Realice los pasos del 1 al 6. Para la segunda solicitud se tiene un crédito pre-aprobado por valor de $850 millones.

SEGUNDO ANÁLISIS - APARTAMENTOS ZONA SUR

  1. Realizamos un filtro a la base de datos e incluya sólo las ofertas de : base1 y apartamentos de la zona zur 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 qué?).
#install.packages("devtools") # solo la primera vez
#devtools::install_github("dgonxalex80/paqueteMODELOS", force =TRUE)
library(paqueteMODELOS)
data("vivienda")
vivienda <- na.omit(vivienda)
data_apartamento1 = subset(vivienda, tipo == "Apartamento" & zona == "Zona Sur")
data_apartamento1<-data_apartamento1[data_apartamento1$habitaciones != 0, ]#excluir apartamentos sin habitaciones
#kable(head(data_apartamento1))
data_apartamento1
## # A tibble: 1,856 x 13
##       id zona   piso  estrato preciom areaconst parqueaderos banios habitaciones
##    <dbl> <chr>  <chr>   <dbl>   <dbl>     <dbl>        <dbl>  <dbl>        <dbl>
##  1  5098 Zona ~ 05          4     290        96            1      2            3
##  2   698 Zona ~ 02          3      78        40            1      1            2
##  3  6975 Zona ~ 06          4     220        75            1      2            3
##  4  5615 Zona ~ 08          3     210        72            2      2            3
##  5  7946 Zona ~ 10          3     230        63            1      2            2
##  6  8102 Zona ~ 05          5     344       107            2      2            3
##  7  7073 Zona ~ 02          6     910       182            2      4            3
##  8  8279 Zona ~ 03          3     130        77            1      2            3
##  9   822 Zona ~ 05          3     150        73            1      2            3
## 10  8288 Zona ~ 01          5     310       166            2      4            3
## # i 1,846 more rows
## # i 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>

Una vez realizado el filtro se obtienen 1856 apartamentos de la Zona Sur.

library(leaflet)
colores <- colorFactor(palette = c("red"), domain = data_apartamento1$zona)

# se crea el mapa con las Casas según su latitud y longitud según el color marcado en el paso anterior.
mapa <- leaflet(data_apartamento1) %>%
  addTiles() %>%
  addCircleMarkers(lng = ~longitud, lat = ~latitud, color = ~colores(zona), radius = 4)

# Ver Mapa
mapa

Con lo observado en el mapa, parece que la base de datos tiene una problemas ya que aunque que muchas viviendas que indican su ubicación en la zona zur, en el mapa aparecen en otras zonas, esto se puede deber quizá a errores en los datos, es decir, a su digitación.

  1. Realice un análisis exploratorio de datos enfocado en la correlación entre la variable respuesta (precio del apartamento) 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.
# Calculamos las medidas descriptivas de las variables
library(summarytools)
summarytools::descr(data_apartamento1[,4:9])
## Descriptive Statistics  
## data_apartamento1  
## N: 1856  
## 
##                     areaconst    banios   estrato   habitaciones   parqueaderos   preciom
## ----------------- ----------- --------- --------- -------------- -------------- ---------
##              Mean      100.68      2.58      4.75           3.02           1.40    312.92
##           Std.Dev       50.53      0.92      0.80           0.59           0.60    186.13
##               Min       40.00      1.00      3.00           1.00           1.00     78.00
##                Q1       71.00      2.00      4.00           3.00           1.00    210.00
##            Median       90.00      2.00      5.00           3.00           1.00    260.00
##                Q3      112.00      3.00      5.00           3.00           2.00    350.00
##               Max      932.00      7.00      6.00           6.00           4.00   1750.00
##               MAD       29.65      0.00      1.48           0.00           0.00    103.78
##               IQR       41.00      1.00      1.00           0.00           1.00    140.00
##                CV        0.50      0.35      0.17           0.20           0.43      0.59
##          Skewness        4.88      1.15     -0.01           0.09           1.51      2.80
##       SE.Skewness        0.06      0.06      0.06           0.06           0.06      0.06
##          Kurtosis       51.80      1.21     -0.67           1.82           2.56     12.39
##           N.Valid     1856.00   1856.00   1856.00        1856.00        1856.00   1856.00
##         Pct.Valid      100.00    100.00    100.00         100.00         100.00    100.00

Correlaciones entre variables de tipo cuantitativo

library(PerformanceAnalytics)
chart.Correlation(data_apartamento1[,4:9], histogram = TRUE, method = "pearson")

#str(data_apartamentos)
library(PerformanceAnalytics)
correlation_test <- cor.test(data_apartamento1$preciom, data_apartamento1$areaconst, method = "pearson")
correlation_test1 <- cor.test(data_apartamento1$preciom, data_apartamento1$estrato, method = "pearson")
correlation_test2 <- cor.test(data_apartamento1$preciom, data_apartamento1$banios, method = "pearson")
correlation_test3 <- cor.test(data_apartamento1$preciom, data_apartamento1$habitaciones, method = "pearson")
correlation_test
## 
##  Pearson's product-moment correlation
## 
## data:  data_apartamento1$preciom and data_apartamento1$areaconst
## t = 45.138, df = 1854, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.7011670 0.7445689
## sample estimates:
##       cor 
## 0.7235824
correlation_test1
## 
##  Pearson's product-moment correlation
## 
## data:  data_apartamento1$preciom and data_apartamento1$estrato
## t = 36.973, df = 1854, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.6244736 0.6768987
## sample estimates:
##       cor 
## 0.6514631
correlation_test2
## 
##  Pearson's product-moment correlation
## 
## data:  data_apartamento1$preciom and data_apartamento1$banios
## t = 44.027, df = 1854, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.6919408 0.7364751
## sample estimates:
##       cor 
## 0.7149323
correlation_test3
## 
##  Pearson's product-moment correlation
## 
## data:  data_apartamento1$preciom and data_apartamento1$habitaciones
## t = 14.743, df = 1854, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.2825963 0.3640651
## sample estimates:
##      cor 
## 0.323931
Coeficiente de correlación
Precio
Área Coeficiente de correlación = 0.72, Intervalo de confianza (0.70, 0.75), p-valor \(2.2e^{-16}\)
Estrato Coeficiente de correlación = 0.65, Intervalo de confianza (0.62, 0.68), p-valor \(2.2e^{-16}\)
Número de Baños Coeficiente de correlación = 0.72, Intervalo de confianza (0.69, 0.74), p-valor \(2.2e^{-16}\)
Número de Habitaciones Coeficiente de correlación = 0.32, Intervalo de confianza (0.28, 0.36), p-valor \(2.2e^{-16}\)

Con respecto a la correlación de las variables y al precio de la vivienda (apartamentos), en todos los casos esta es positiva pero se destaca su mayor fortaleza en area construida 0,72, Estrato 0,65, número de baños 0,72, y número de habitaciones 0.32, de manera similar se presentarón valores estadísiticamente significativos p- valores menores al 5%.

  1. Estime un modelo de regresión lineal múltiple con las variables del punto anterior (precio = f(área construida, estrato, numero de cuartos, numero de parqueaderos, numero 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 y discuta el ajuste del modelo e implicaciones (que podrían hacer para mejorarlo).

Modelo lineal múltiple para los apartamentos

modelo_apartamentos1 = lm(preciom ~ areaconst + estrato + parqueaderos + banios + habitaciones, data = data_apartamento1)
intervalos_confianza <- confint(modelo_apartamentos1)
intervalos_confianza
##                    2.5 %      97.5 %
## (Intercept)  -297.200567 -229.323893
## areaconst       1.093546    1.333121
## estrato        50.987938   64.625221
## parqueaderos   72.503282   92.395241
## banios         40.170561   55.463135
## habitaciones  -28.295395  -10.791459
summary(modelo_apartamentos1)
## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + parqueaderos + banios + 
##     habitaciones, data = data_apartamento1)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1024.87   -41.67    -1.75    40.41   934.57 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -263.26223   17.30447  -15.21  < 2e-16 ***
## areaconst       1.21333    0.06108   19.87  < 2e-16 ***
## estrato        57.80658    3.47669   16.63  < 2e-16 ***
## parqueaderos   82.44926    5.07125   16.26  < 2e-16 ***
## banios         47.81685    3.89869   12.27  < 2e-16 ***
## habitaciones  -19.54343    4.46245   -4.38 1.26e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 95.68 on 1850 degrees of freedom
## Multiple R-squared:  0.7365, Adjusted R-squared:  0.7358 
## F-statistic:  1034 on 5 and 1850 DF,  p-value: < 2.2e-16

Para este modelo de regresión multiple donde el precio es la variable respuesta y las variables predictoras son: área construida, estrato, número de parqueaderos, número de baños, número de habitaciones, se tiene un p-valor de \(2.2(10)^{-16}\) el el ANOVA del modelo, sugiriendo que es adecuado desarrollar el modelo.

El desarrollo del modelo es:

\(y = \beta_{0} + \beta_{1}x_{1} + \beta_{2}x_{2} + \beta_{3}x_{3} +\beta_{4}x_{4} + \beta_{5}x_{5}\)

\(Precio = -263 + 1.2(área) + 57.8(estrato) + 82.5(parqueaderos) + 47.8(baños) - 19.54(habitaciones)\)

El coeficiente del área construida que es 1.21, este indica que, un aumento en un metro cuadrado en el área, el precio de la vivienda incrementa en 1.21 millones de pesos, sin que haya variabilidad en las demás variables. A su vez, ocurre de forma similiar con el parqueadero, aumentando una unidad de éste para la vivienda, el precio de la misma incrementa en 82.5 millones de pesos, sosteniendo de igual forma una constante en las demás variables. Para el Estrato, aumentado una unidad en él, el precio de la vivienda aumenta en 57.8 millones de pesos, con las demás variables constantes. Los baños tendrán el mismo comportamiento mencionado, una unidad adicional en baño en la propiedad, el precio de la misma aumenta en 47.8 millones de pesos, junto con las demás variables constantes, con respecto al número de habitaciones por unidad que aumenta disminuye el precio -19.5 millones.

Este modelo explica el 74% de la variación, ya que el \(R^2\) toma un valor es de 0.74, lo que significa que, en términos porcentuales, el 74%de la variabilidad en el precio de los apartamentos de la ciudad de Cali, son explicadas por las variables predictoras dadas en el modelo.

4.Realice la validación de supuestos del modelo e interprete los resultados (no es necesario corregir en caso de presentar problemas, solo realizar sugerencias de que se podría hacer).

Validación de supuestos - Normalidad de los errores para el modelo de los apartamentos del sur de la ciudad.

resi=modelo_apartamentos1$residuals
shapiro.test(resi)
## 
##  Shapiro-Wilk normality test
## 
## data:  resi
## W = 0.7789, p-value < 2.2e-16

La prueba de Shapiro Wilks indica si un conjunto de datos siguen una distribución normal o no. Para los residuos del modelo

\(y = \beta_{0} + \beta_{1}x_{1} + \beta_{2}x_{2} + \beta_{3}x_{3} +\beta_{4}x_{4} + \beta_{5}x_{5}\)

\(Precio = -263 + 1.2(área) + 57.8(estrato) + 82.5(parqueaderos) + 47.8(baños) - 19.54(habitaciones)\)

el p-valor(\(2.2e-16\)) de la muestra está por debajo del nivel de \(\alpha\) = 0.05, lo que significa que se rechaza la hipótsis nula y se determina que, los errores, no siguen una ditribución normal.

Validación de supuestos - Homocedasticidad de los errores para el modelo de los apartamentos del sur de la ciudad.

library(lmtest)
bptest(modelo_apartamentos1)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_apartamentos1
## BP = 648.02, df = 5, p-value < 2.2e-16

Se utiliza la prueba de Breusch-Pagan para determinar si hay homocedasticidad o heterocedasticidad.

Esta prueba utiliza las siguientes hipótesis nulas y alternativas :

Hipótesis nula (\(H_{0}\) ): la homocedasticidad está presente (los residuos se distribuyen con la misma varianza)

Hipótesis alternativa (\(H_{a}\) ): Heteroscedasticidad está presente (los residuos no se distribuyen con la misma varianza)

Como p-value = 2.2e-16 menor al valor de referencia \(α\) (0.05), por lo tanto, se rechaza la hipótesis nula de homocedasticidad (los residuos se distribuyen con la misma varianza), presentando heterocedasticidad (los residuos no se distribuyen con la misma varianza) en el modelo.

Validación de supuestos - Independencia de los errores para el modelo de los apartamentos del sur de la ciudad.

dwtest(modelo_apartamentos1)
## 
##  Durbin-Watson test
## 
## data:  modelo_apartamentos1
## DW = 1.5102, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0

El Test de Durbin-Watson permite evaluar si existe autocorrelación en un modelo de Regresión Simple o múltiple; La estadística de prueba siempre varía de 0 a 4 donde:

d = 2 indica que no hay autocorrelación

d < 2 indica correlación serial positiva

d > 2 indica correlación serial negativa

En general, si d es menor que 1,5 o mayor que 2,5, existe un problema de autocorrelación potencialmente grave. De lo contrario, si d está entre 1,5 y 2,5, es probable que la autocorrelación no sea motivo de preocupación.

Para el modelo de las casas del norte de la ciudad, teniendo en cuenta el valor α (0.05) la cantidad de variables independientes del modelo (5) y el número de muestras (+200), los valores de referencia son: dL: 1.72 y dU: 1.82, el valor de DW= 1.51, lo cuál indica que hay autocorrelación en el modelo.

  1. Con el modelo identificado debe predecir el precio de la vivienda con las características de la primera solicitud
caracteristicas1= data.frame(
  areaconst = 300,
  parqueaderos = 3,
  estrato = c(5, 6),
  banios = 3,
  habitaciones = 5
)
caracteristicas1
##   areaconst parqueaderos estrato banios habitaciones
## 1       300            3       5      3            5
## 2       300            3       6      3            5
predict(modelo_apartamentos1,caracteristicas1)
##        1        2 
## 682.8518 740.6584

Los precios que predice el modelo para los apartamentos con las especificaciones:

es de 682851800 millones.

Mientras que para las casas con especificaciones

es de 740658400 millones.

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

library(dplyr)
apartamento = filter(data_apartamento1, areaconst <= 300, parqueaderos == 3, banios == 3, habitaciones <= 5,   preciom <= 850,   estrato %in% c(5, 6))
apartamento
## # A tibble: 9 x 13
##      id zona    piso  estrato preciom areaconst parqueaderos banios habitaciones
##   <dbl> <chr>   <chr>   <dbl>   <dbl>     <dbl>        <dbl>  <dbl>        <dbl>
## 1  6175 Zona S~ 05          5     350       270            3      3            4
## 2  6205 Zona S~ 05          5     350       260            3      3            3
## 3  5423 Zona S~ 02          6     695       227            3      3            3
## 4  5816 Zona S~ 03          6     550       130            3      3            4
## 5  7680 Zona S~ 01          5     450       267            3      3            3
## 6    46 Zona S~ 02          6     550       143            3      3            3
## 7  4284 Zona S~ 03          6     390       105            3      3            3
## 8  7739 Zona S~ 09          5     475       184            3      3            3
## 9  2380 Zona S~ 05          5     415       110            3      3            3
## # i 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
#data_apartamento1

Con las especificaciones solicitadas se encontraron 9 apartamentos, cuyas ubicaciones se encuentran a continuación:

library(leaflet)

colores <- colorFactor(palette = c("blue"), domain = apartamento$zona)
#c("blue","red", "green","purple","orange")
# se crea el mapa con las Casas según su latitud y longitud según el color marcado en el paso anterior.
mapa1 <- leaflet(apartamento) %>%
  addTiles() %>%
  addCircleMarkers(lng = ~longitud, lat = ~latitud, color = ~colores(zona), radius = 10)

# Ver Mapa
mapa1