En este documento se plantea realizar un análisis predictivo de las viviendas y residencias ubicadas en la ciudad de Cali, este análisis busca identificar cual es el valor en millones predicho por un modelo de Regresión Lineal Multiple para dos tipos de vivienda o caracteristicas de vivienda llamadas (oferta 1 y Oferta 2), posteriormente se evaluará y vizualizará mediante un mapa las viviendas que cumplan con los requisitos propuestos y su ubicación.

Informe

1. Limpieza de datos

La sección de limpieza de datos permite hacer una purificación de la información con el fin de obtener los resultados más precisos y un análisis mucho más acertado. En total el dataset inicial cuenta con 8322 filas que estan constituidas por 13 columnas, a continuación se presenta un pequeño resumen de aquellas variables que constituyen el dataset.

Nombre Tipo de variable Descripción
id Numérica Identificador de cada registro
zona Caractér Indica la zona en la que se ubica el predio en la ciudad de Cali
piso Caractér Representa el piso en que se ubica el apartamento
estrato Caractér Muestra el estrato socioeconónomico del predio
preciom Numérica Representa el precio en millones de pesos del inmueble
areaconst Numérica Representa el área del inmueble en metros cuadrados
parquea Caractér Indica el número de parqueaderos que tiene el predio
banios Caractér Expone el número de baños en el inmueble
habitac Caractér Indica el número de habitaciones del inmueble
tipo Caractér Indica el tipo de inmueble, ya sea Casa o Apartamento
barrio Caractér Muestra el barrio donde se ubica el predio
longitud Numérica Representa la longitud geográfica del predio
latitud Numérica Representa la latitud geográfica del predio

1.1. Normalización de los datos

En esta etapa se pretende que los datos de cada una de las columnas evaluadas tenga concordancia con el resto de valores, de esta manera,por ejemplo, aquellos datos que estan en mayúscula puedan convertirse en minúncula para tener una data estandarizada. En este caso se puede ver que ninguno de los atributos presenta datos mal escritos o repetidos además de los barrios que poseen una serie de nombres que pueden pertenecer al mismo barrio pero están mal escritos.

## 
##  Zona Centro   Zona Norte   Zona Oeste Zona Oriente     Zona Sur 
##          124         1920         1198          351         4726
## 
## Apartamento        Casa 
##        5100        3219
## 
##    3    4    5    6 
## 1453 2129 2750 1987
## 
##   01   02   03   04   05   06   07   08   09   10   11   12 
##  860 1450 1097  607  567  245  204  211  146  130   84   83
## 
##    0    1    2    3    4    5    6    7    8    9   10 
##   66   59  926 4097 1729  679  318  173  138   83   51

Con base en lo anterior se realiza la normalización de algunos barrios donde se encontraron errores en su escritura.

Además durante el proceso se decidió cambiar el nombre de las variables con el fin de que estos sean mas descriptivos, además, a pesar de que algunas de las variables son numéricas como el estrato, baños, y habitaciones, para este estudio se tomaran como variables cualitativas con las que después se realizarán analisis categóricos.

1.2. Análisis de datos faltantes

Durante la depuración de la información, se debe realizar la identificación y posterior desarrollo de datos faltantes. Inicialmente se identificaron las siguientes cantidades de datos faltantes que se ven identificados en el diagrama a continucación:

##              id            Zona            Piso         Estrato Precio_Mill_COP 
##               3               3            2638               3               2 
##         Area_m2     Parqueadero           Banos    Habitaciones            Tipo 
##               3            1605               3               3               3 
##          Barrio        Longitud         Latitud 
##              96               3               3

Teniendo en cuenta la cantidad de datos faltantes existentes en el dataset, se puede apreciar que la mayoría de estos se encuentran en las variables “Piso” y “Parqueadero”. A pesar de que son variables que pueden ser importantes al momento de definir si un predio tiene mayor o menor valor, se decidió realizar una amputación de variables usando la moda en esta variables, esto teniendo en cuenta que son variables categóricas y la cantidad de datos faltantes representan caso el 20% de la data total.

Faltantes_Moda = function(x) {
  moda = names(sort(table(x), decreasing = TRUE))[1]
  dato_Reemplazado = ifelse(is.na(x), moda, x)
  return(dato_Reemplazado)
}

data1 = as.data.frame(lapply(data1, Faltantes_Moda))

La base de datos ya no cuenta con datos faltantes y estos fueron reemplazados por la moda como se puede apreciar en la siguiente tabla.

Grafico_Faltantes = md.pattern(data1, rotate.names = TRUE)
##  /\     /\
## {  `---'  }
## {  O   O  }
## ==>  V <==  No need for mice. This data set is completely observed.
##  \  \|/  /
##   `-----'

Se cambia el tipo de datos de las columnas, en este caso se decidió cambiar los tipos de datos de diferentes columnas a numérico con el fin de poder evaluar sus caracteristicas de manera más fácil.

#Se cambiar el tipo de dato a las columnas
data1$id <- as.numeric(data1$id)
data1$Precio_Mill_COP <- as.numeric(data1$Precio_Mill_COP)
data1$Area_m2 <- as.numeric(data1$Area_m2)
data1$Longitud <- as.numeric(data1$Longitud)
data1$Latitud <- as.numeric(data1$Latitud)
data1$Banos <- as.numeric(data1$Banos)
data1$Habitaciones <- as.numeric(data1$Habitaciones)
data1$Parqueadero <- as.numeric(data1$Parqueadero)

2. Análisis Oferta 1

Inicialmente se solicitó estudiar cual es el precio de una vivienda con ciertas carácteristicas que se expondrán acontinuación, y porteriormente de las casas disponibles, evaluar cuales cumplen este requisito, para esto se llevará a cabo un paso a paso expuesto a continuación.

2.1. Filtro Oferta 1

Se realizan los filtros correspondientes a la primera solicitud, concretamente se filtra el Tipo de vivienda y la Zona donde se ubica:

Caracteristicas Vivienda 1
Tipo Casa
área 200
Parqueaderos 1
Baños 2
Habitaciones 4
Estrato 4 o 5
Zona Norte
Credito Preaprobado 350 millones
# Filtrar las ofertas de casas en la zona norte
oferta_1 = subset(data1, Tipo == "Casa" & Zona == "Zona Norte")

# Mostrar 3 registros
head(oferta_1, 3)
##      id       Zona Piso Estrato Precio_Mill_COP Area_m2 Parqueadero Banos
## 9  1209 Zona Norte   02       5             320     150           2     4
## 10 1592 Zona Norte   02       5             780     380           2     3
## 11 4057 Zona Norte   02       6             750     445           1     7
##    Habitaciones Tipo Barrio  Longitud Latitud
## 9             6 Casa  acopi -76.51341 3.47968
## 10            3 Casa  acopi -76.51674 3.48721
## 11            6 Casa  acopi -76.52950 3.38527

2.2 Análisis exploratorio

Para el análisis exploratorio se realiza una gráfica de dispersión entre el precio de las viviendas ubicadas en el norte y su área construida, se puede ver una correlación evidente que indica que entre mas grande o más area tenga el predio su valor aumenta.

Se realizó el mismo análisis de las variables numéricas con la variable objetivo, encontrando que claramente el mejor correlacionado es el área con un 0.73, seguido por el número de baños y el número de habitaciones con 0.52 y 0.323 respectivamente, lo cual indica correlaciones buenas de cada una de estas variables.

En cuanto a las variables categóricas, especificamente el estrato, se quiso explorar cual era el precio promedio en cada uno de los estratos presentes en las casa de la zona norte de la ciudad, encontrando qué la mayoría de casas son estrato 6 y tienen un valor promedio de 818 MCOP, esta seguido por el estrato 5 que tiene 549 MCOP y el estrato 4 con 438 MCOp, este análisis exploratorio solo incluye precios promedio, sin embargo se hace necesario conocer exactamente cual podria ser el precio del predio con las caracteristicas especificadas, por eso se realizaá un modelo que nos permita encontrar ese valor.

2.3. Modelo regresión Lineal Multiple

Se desarrolló el modelo de RLM, este modelo tiene en cuenta las variables de Área, Estrato, Habitaciones, Parqueadero y baños, adicionalmente, se puede apreciar que las variables más representativas son el área, el Estrato y los baños, Adicionalmente, se puede ver un R2 de 0.669, este valor indica que el modelo explica el 67% de la variabilidad que pueda tener la variable dependiente.

## 
## Call:
## lm(formula = Precio_Mill_COP ~ Area_m2 + Estrato + Habitaciones + 
##     Parqueadero + Banos, data = Train_1)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -880.46  -70.88  -16.59   44.03 1098.30 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   34.66962   20.47431   1.693    0.091 .  
## Area_m2        0.75851    0.05148  14.733  < 2e-16 ***
## Estrato4      84.90410   19.91933   4.262 2.42e-05 ***
## Estrato5     132.79856   19.10737   6.950 1.15e-11 ***
## Estrato6     342.98139   30.62964  11.198  < 2e-16 ***
## Habitaciones   0.91260    4.76056   0.192    0.848    
## Parqueadero    6.34460    5.96307   1.064    0.288    
## Banos         27.01508    6.06099   4.457 1.03e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 155.4 on 497 degrees of freedom
## Multiple R-squared:  0.6531, Adjusted R-squared:  0.6482 
## F-statistic: 133.7 on 7 and 497 DF,  p-value: < 2.2e-16

2.4. Validación de supuestos

  • Colinealidad

La multicolinealidad es un problema que se da cuando varia variables predictoras estan relacionadas entre sí, ene ste caso un valor de VIF mayor a 5 indica ya una multicolinealidad moderada y puede ser problematico para el modelo, en este caso ninguna variable presenta este problema.

##                  GVIF Df GVIF^(1/(2*Df))
## Area_m2      1.528353  1        1.236266
## Estrato      1.474326  3        1.066839
## Habitaciones 1.666529  1        1.290941
## Parqueadero  1.198373  1        1.094702
## Banos        1.888487  1        1.374222
  • Autocorrelación

La autocorrelación indica si los residuos y errores de un modelo estás o no distribuidos de manera idependientes, cuando el DW test es cercao a 0 indica autocorrelación, y si es cercano a 2 indica lo contrario, en este caso el valor es de 2.18 lo que implica que no hay autocorrelación.

## 
##  Durbin-Watson test
## 
## data:  Modelo_1
## DW = 2.0026, p-value = 0.511
## alternative hypothesis: true autocorrelation is greater than 0
  • Distribución normal

En este caso se puede apreciar que el test de normalidad de Shapiro-Wilk presenta un P-Value muy bajo, lo que implica un rechazo a la hipotesis alternativa que implica que existe distribución normal en los residuos, por lo tanto se concluye que los residuos no conservan una distribución normal.

## 
##  Shapiro-Wilk normality test
## 
## data:  resid(Modelo_1)
## W = 0.81747, p-value < 2.2e-16

2.5. Predicción Oferta 1

Una vez sea netrenaod el modelo, se realizó la predicción de precios de predios bajo 2 escenarios fundamentales, el primero con los supuesto sugeridos al inicio y en estrato 4, y el segundo con las mismas caracteristicas pero en estrato 5, esto permitió predecir valores de 321 MCOP y 380 MCOP respectivamente.teniendo en cuenta esto, para el rpesupuesto aprobado lo mejor sería una casa pero con esas caracteristicas pero en estrato 4.

## Predicción en millones para características estrato 4:  335.302
## Predicción en millones para características estrato 5:  383.196

2.6 Sugerencias con caractericticas de oferta 1

con el animo de dar un análisis más completo, se sugiren algunos predios en la zona norte de la ciudad que cumplen con las caracteristicas especificadas e incluso mejoran estas en el numero de habitaciones, o área a un precio igual o menor al presupuestado.

##        id       Zona Piso Estrato Precio_Mill_COP Area_m2 Parqueadero Banos
## 155  7471 Zona Norte   02       4             330     240           1     4
## 2163 4210 Zona Norte   01       5             350     200           3     3
## 2165 4267 Zona Norte   01       5             335     202           1     4
## 2173 4800 Zona Norte   01       5             340     250           2     4
## 2183 4209 Zona Norte   02       5             350     300           3     5
##      Habitaciones Tipo    Barrio  Longitud Latitud
## 155             4 Casa     acopi -76.54980 3.39758
## 2163            4 Casa el bosque -76.53010 3.48503
## 2165            5 Casa el bosque -76.53044 3.48399
## 2173            4 Casa el bosque -76.53300 3.46500
## 2183            6 Casa el bosque -76.53010 3.48577

3. Análisis Oferta 2

Al igual que en la oferta 1, se solicitó estudiar cual es el precio de una vivienda con ciertas carácteristicas que se expondrán acontinuación, y porteriormente de las casas disponibles, evaluar cuales cumplen este requisito, para esto se llevará a el mismo paso a paso evaluado para la oferta 1.

3.1. Filtro Oferta 2

Se realizan los filtros correspondientes a la primera solicitud, concretamente se filtra el Tipo de vivienda y la Zona donde se ubica:

Caracteristicas Vivienda 2
Tipo Apartamento
área 300
Parqueaderos 3
Baños 3
Habitaciones 5
Estrato 5 o 6
Zona Sur
Credito Preaprobado 850 millones
# Filtrar las ofertas de casas en la zona norte de la ciudad
oferta_2 = subset(data1, Tipo == "Apartamento" & Zona == "Zona Sur")

# Mostrar los primeros 3 registros de las bases
head(oferta_2, 3)
##       id     Zona Piso Estrato Precio_Mill_COP Area_m2 Parqueadero Banos
## 24  5098 Zona Sur   05       4             290      96           1     2
## 164  698 Zona Sur   02       3              78      40           1     1
## 264 8199 Zona Sur   02       6             875     194           2     5
##     Habitaciones        Tipo     Barrio  Longitud Latitud
## 24             3 Apartamento      acopi -76.53464 3.44987
## 164            2 Apartamento aguablanca -76.50100 3.40000
## 264            3 Apartamento  aguacatal -76.55700 3.45900

3.2 Análisis exploratorio

Para el análisis exploratorio se realiza una gráfica de dispersión entre el precio de las viviendas ubicadas en el norte y su área construida, se puede ver una correlación evidente que indica que entre mas grande o más area tenga el predio su valor aumenta, sin embargo, a diferencial de la oferta 1 los puntos se ven mucho mas agrupado a la parte inferior izquierda, lo que implica una menor dispersión de los datos.

Se realizó el mismo análisis de las variables numéricas con la variable objetivo, encontrando que claramente el mejor correlacionado es el área con un 0.76 mejorando la vista en la oferta 1, seguido por el número de baños y el número de habitaciones con 0.71 y 0.33 respectivamente, lo cual indica correlaciones buenas de cada una de estas variables y mejores que en el caso anterior. Acá se tienen en cuenta unicamente apartamento en la zona sur de la ciudad.

También es importante apreciar que las mayoría de apartamentos ene ste sector son estrato 6 con un precio promedio de 594 MCOP seguido por el estrato 5 con 293 MCOP. Se puede apreciar una distribución muy diferente precios en comparación con la oferta 1 donde los precios eran considerablemente mas grandes.

3.3. Modelo regresión Lineal Multiple

Se desarrolló el modelo de RLM, este modelo tiene en cuenta las variables de Área, Estrato, Habitaciones, Parqueadero y baños, adicionalmente, se puede apreciar que las variables más representativas son el área, el Estrato y los baños, y a diferencia de la oferta 1 también incluye los parqueaderos. Adicionalmente, se puede ver un R2 de 0.799, este valor indica que el modelo explica el 80% de la variabilidad que pueda tener la variable dependiente lo cual es mucho mejor que la anterior.

## 
## Call:
## lm(formula = Precio_Mill_COP ~ Area_m2 + Estrato + Habitaciones + 
##     Parqueadero + Banos, data = Train_2)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -964.48  -35.34   -3.03   34.01  920.78 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -46.95877   12.29630  -3.819 0.000138 ***
## Area_m2        1.17172    0.05157  22.722  < 2e-16 ***
## Estrato4      28.22145    8.61716   3.275 0.001075 ** 
## Estrato5      57.95688    8.87034   6.534 8.17e-11 ***
## Estrato6     216.46682   11.09657  19.508  < 2e-16 ***
## Habitaciones  -7.14253    3.81562  -1.872 0.061368 .  
## Parqueadero   59.31195    4.02186  14.747  < 2e-16 ***
## Banos         40.85068    3.50518  11.654  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 89.69 on 1945 degrees of freedom
## Multiple R-squared:  0.7797, Adjusted R-squared:  0.7789 
## F-statistic: 983.6 on 7 and 1945 DF,  p-value: < 2.2e-16

3.4. Validación de supuestos

  • Colinealidad

La multicolinealidad es un problema que se da cuando varia variables predictoras estan relacionadas entre sí, en este caso un valor de VIF mayor a 5 indica ya una multicolinealidad moderada y puede ser problematico para el modelo, en este caso ninguna variable presenta este problema.

##                  GVIF Df GVIF^(1/(2*Df))
## Area_m2      1.963705  1        1.401323
## Estrato      1.792097  3        1.102115
## Habitaciones 1.459880  1        1.208255
## Parqueadero  1.704728  1        1.305652
## Banos        2.580853  1        1.606503
  • Autocorrelación

La autocorrelación indica si los residuos y errores de un modelo estás o no distribuidos de manera idependientes, cuando el DW test es cercao a 0 indica autocorrelación, y si es cercano a 2 indica lo contrario, en este caso el valor es de 2.06 lo que implica que no hay autocorrelación.

## 
##  Durbin-Watson test
## 
## data:  Modelo_2
## DW = 2.0457, p-value = 0.8442
## alternative hypothesis: true autocorrelation is greater than 0
  • Distribución normal

En este caso se puede apreciar que el test de normalidad de Shapiro-Wilk presenta un P-Value muy bajo, lo que implica un rechazo a la hipotesis alternativa que implica que existe distribución normal en los residuos, por lo tanto se concluye que los residuos no conservan una distribución normal.

## 
##  Shapiro-Wilk normality test
## 
## data:  resid(Modelo_2)
## W = 0.75709, p-value < 2.2e-16

3.5. Predicción Oferta 2

Una vez sea entrenado el modelo, se realizó la predicción de precios de predios bajo 2 escenarios fundamentales, el primero con los supuesto sugeridos al inicio y en estrato 5, y el segundo con las mismas caracteristicas pero en estrato 6, esto permitió predecir valores de 656 MCOP y 801 MCOP respectivamente.teniendo en cuenta esto, para el presupuesto aprobado lo mejor sería un apartamento pero con esas caracteristicas pero en estrato 6 ya que cumple con el presupuesto preaprobado.

## Prediccion en millones para caracteristicas estrato 4:  627.29
## Prediccion en millones para caracteristicas estrato 5:  785.8

3.6 Sugerencias con caracteristicas de vivienda 2

con el animo de dar un análisis más completo, se sugiren algunos predios en la zona sur de la ciudad que cumplen con las caracteristicas especificadas e incluso mejoran estas en el numero de habitaciones, o área a un precio igual o menor al presupuestado. En este caso solo se presentaron 2 predios con las caracteristicas evaluadas, estos tienen valores mucho menores a los rpesupuestados y mejoran en mucho las caracteristicas sugeridad, a continuación se muestran los rpedios y sus ubicación.

##        id     Zona Piso Estrato Precio_Mill_COP Area_m2 Parqueadero Banos
## 3251 7182 Zona Sur   02       5             730     573           3     8
## 6669 7512 Zona Sur   02       5             670     300           3     5
##      Habitaciones        Tipo    Barrio Longitud Latitud
## 3251            5 Apartamento guadalupe  -76.548   3.408
## 6669            6 Apartamento seminario  -76.550   3.409