Datos de ofertas de Vivienda (Fuente Finca Raiz Cali)

Los siguientes datos corresponden a ofertas de vivienda (casas y apartamentos) de la ciudad de Cali 2019-2 que se ofrecen por medio de la plataforma finca raiz. La base contiene 8322 registros que se muestran a continuación:

library(readxl)
library(ggplot2)
library(plotly)
library(leaflet)
Datos_Vivienda <- read_excel("C:/Users/Isabella/Downloads/Datos_Vivienda.xlsx")
View(Datos_Vivienda)
head(Datos_Vivienda,3)
## # A tibble: 3 x 12
##   Zona  piso  Estrato precio_millon Area_contruida parqueaderos Banos
##   <chr> <chr>   <dbl>         <dbl>          <dbl> <chr>        <dbl>
## 1 Zona~ 2           6           880            237 2                5
## 2 Zona~ 2           4          1200            800 3                6
## 3 Zona~ 3           5           250             86 NA               2
## # ... with 5 more variables: Habitaciones <dbl>, Tipo <chr>, Barrio <chr>,
## #   cordenada_longitud <dbl>, Cordenada_latitud <dbl>

La base de datos contienen un total de 12 variables que corresponde a caracteristicas propias de la vivienda como el estrato, la zona, el area construida entre otras.

Mapa de Localización de Ofertas

A continuación se presenta el mapa con las coordenadas de las viviendas en Cali:

leaflet() %>% addCircleMarkers(lng=Datos_Vivienda$cordenada_longitud,lat=Datos_Vivienda$Cordenada_latitud,radius=0.1, color = "black", label = Datos_Vivienda$precio_millon, opacity = 0.9)%>% addTiles()

Filtrar Base de Datos

A continuación nos vamos a enfocar en un segmento de la base de datos: Ofertas en el sur de la ciudad menores a 200 MM COP y solo apartamentos.

criterios=Datos_Vivienda$Zona=="Zona Sur"&Datos_Vivienda$precio_millon<500&Datos_Vivienda$Tipo=="Apartamento"&Datos_Vivienda$Area_contruida<200
Datos_filtro=Datos_Vivienda[criterios,]
table(Datos_filtro$Zona)
## 
## Zona Sur 
##     2432
table(Datos_filtro$Tipo)
## 
## Apartamento 
##        2432
summary(Datos_filtro$precio_millon)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##      75     165     230     239     295     498       3

Finalmente al aplicar los filtros tenemos un total de 2432 registros

Explorar la relación entre el precio y otras variables

Vamos a explorar la relación entre precio y area construida:

Datos_filtro=na.omit(Datos_filtro)
Datos_filtro$Estrato=as.character(Datos_filtro$Estrato)
g1=ggplot(Datos_filtro,aes(x=Area_contruida, y=precio_millon,color=Estrato))+geom_point()+theme_bw()+geom_smooth(method = "lm")
ggplotly(g1)

Se observa en la figura que existe una relación directa entre el precio de la vivienda y el area construida, indicando lo que se espera que a mayor area la vivienda incrementa su precio en promedio. Tambien vemos que la lineas a medida que el Estrato aumenta tienen mayor intercepto indicando que el precio base por estrato tambien se incrementa.

Estimación del Modelo para precio del apartamento

Datos_filtro$tiene_parqueadero=Datos_filtro$parqueaderos!="NA"
mod1=lm(precio_millon~Area_contruida+Estrato+tiene_parqueadero, data=Datos_filtro)
summary(mod1)
## 
## Call:
## lm(formula = precio_millon ~ Area_contruida + Estrato + tiene_parqueadero, 
##     data = Datos_filtro)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -206.442  -26.562   -1.558   27.400  228.036 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             1.20887    4.34818   0.278    0.781    
## Area_contruida          1.87621    0.04233  44.324   <2e-16 ***
## Estrato4               42.19359    3.62736  11.632   <2e-16 ***
## Estrato5               79.27753    3.90382  20.308   <2e-16 ***
## Estrato6              148.44500    5.13587  28.904   <2e-16 ***
## tiene_parqueaderoTRUE  22.84547    2.74163   8.333   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 45.92 on 2426 degrees of freedom
## Multiple R-squared:  0.7193, Adjusted R-squared:  0.7187 
## F-statistic:  1243 on 5 and 2426 DF,  p-value: < 2.2e-16

Predicciones con el Modelo Estimado

Una persona esta interesada en un apartamento en la zona sur y recibe una oferta de un apartamento en estrato 4 con un area de 110 mt2 y con parqueadero propio. La propietaria vende este apartamento en 320 millones de pesos, ¿Cual es el precio estimado de mercado de acuerdo al modelo y financieramente recomendaria esta oferta a la compra ? ¿ Que limitaciones presenta esta recomendación?

preciomedio_estimadodemercado=predict(mod1,list(Area_contruida=110,Estrato="4",tiene_parqueadero=TRUE))
preciomedio_estimadodemercado
##        1 
## 272.6314
  1. El precio promedio de mercado estimado del apartamento es 272.6314 millones.
  2. La oferta de 320 MM COP esta sobrevalorada, Inicialmente se recomienda no tomarla, es decir no invertir en este apartamento ya que la diferencia es importante de casi 50 MM COP, adicionalmente el incremento de 50 MM COP es dificil de justificar por temas como acabados de lujo del apto y otras externalidades como servicios adicionales de al unidad. 3)Din embargo el modelo al no presentar un ajuste mayor al 90%, presenta limitaciones en la predicción y por tanto no incorpora ciertas variables adicionales clave, como lo son las condiciones del mismo, la seguridad de la zona, si hay parques cercanos, si hay vias de acceso y movilidad, transporte publico entre otras.Estas podrían ser se gran interes y justificar el incremento adicional.

Recomendaciones de inversión con el modelo:

Si la persona finalmente toma en cuenta la recomendación y continua en la busqueda de vivienda. Podría ud recomendarle alguna en particular de acuerdo a sus intereses y las estimaciones del modelo? Aarea Construida de al menos 100 mt2 con parqueadero propio, Estrato 4 y dispone entre 200 y 350 MM COP (crédito preaprobado).

Identificar el top 5 y mapearlos.

precio_modelo=mod1$fitted.values
precio_real=Datos_filtro$precio_millon
area=Datos_filtro$Area_contruida
tiene_p=Datos_filtro$tiene_parqueadero
estrato=Datos_filtro$Estrato

potencial=precio_modelo-precio_real
target=potencial>70&precio_real>=200&precio_real<=350&area>=100&estrato=="4"&tiene_p==TRUE

table(target)
## target
## FALSE  TRUE 
##  2426     6
Datos_filtro$potencial=round(potencial,1)

Datos_recomendados=Datos_filtro[target,]
Datos_recomendados
## # A tibble: 6 x 14
##   Zona  piso  Estrato precio_millon Area_contruida parqueaderos Banos
##   <chr> <chr> <chr>           <dbl>          <dbl> <chr>        <dbl>
## 1 Zona~ 4     4                 200            110 1                3
## 2 Zona~ 5     4                 250            160 1                2
## 3 Zona~ 3     4                 250            143 1                2
## 4 Zona~ 2     4                 230            175 1                2
## 5 Zona~ 3     4                 222            145 1                4
## 6 Zona~ 2     4                 270            150 2                3
## # ... with 7 more variables: Habitaciones <dbl>, Tipo <chr>, Barrio <chr>,
## #   cordenada_longitud <dbl>, Cordenada_latitud <dbl>, tiene_parqueadero <lgl>,
## #   potencial <dbl>
leaflet() %>% addCircleMarkers(lng = Datos_recomendados$cordenada_longitud,lat = Datos_recomendados$Cordenada_latitud,radius = 0.05,color = "black",label  = paste("Potencial=",Datos_recomendados$potencial,";","Precio venta=",Datos_recomendados$precio_millon),opacity = 0.9)%>% addTiles()

Se observa en el grupo de potenciales de apartmanetos que en primer lugar la mayoria presenta problemas en la definición de la zona (Registraron zona sur en finca raiz y no lo son). Sin embargo uno de ellos cumple con las condidiciones y se encuentra en el barrio el ingenio con las caracteristicas indicadas y un ahorro (potencial) de 116 MM COP por debajo del precio medio estimado del mercado.

Recomendaciones: Visitar este apartamento y evaluar el estado, otros servicios que ofrece (piscina, acceso a parques, transporte) y muy importante los acabados.