Datos de Ofertas de Viviendas (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 Cali. La base contiende 8219 registros que se muestran a continuación:

library(readxl)
library(ggplot2)
library(plotly)
library(leaflet)
Datos_Vivienda <- read_excel("D:/PUJ/2do Semestre/4. Analitica financiera/Datos_Vivienda.xlsx")
head(Datos_Vivienda)
## # A tibble: 6 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
## 4 Zona~ NA          6          1280            346 4                6
## 5 Zona~ 2           6          1300            600 4                7
## 6 Zona~ 3           6           513            160 2                4
## # ... with 5 more variables: Habitaciones <dbl>, Tipo <chr>, Barrio <chr>,
## #   cordenada_longitud <dbl>, Cordenada_latitud <dbl>

La base de datos contiene un total de 12 variables que corresponde a características propias de la vivienda como el estrato, la zona,el área construida entre otras.

Mapa de localizacion de ofertas

A continuación se presenta el mapa con las coordenadas de las viviendas de 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()
## Warning in validateCoords(lng, lat, funcName): Data contains 3 rows with either
## missing or invalid lat/lon values and will be ignored

filtrar base de datos

A continuación nos vamos a enfocar en segmento de la base de datos: Ofertas en el sur de la ciudad, menores a 500 millones de pesos 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 obtenemos 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)
## `geom_smooth()` using formula 'y ~ x'

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 incremente su precio en promedio. También vemos que las lineas a medida que el estrato aumenta su interceepto es mayor indicando que el precio por estrato también se incrementa.

Estimación del modelo para el 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 está 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 ¿Cuál es el precio estimado de mercado de acuerdo al modelo y financieramente recomendaria esta oferta a al compradora? Que limitaciones presenta esta recomendación?

precio_medio_estimado=predict(mod1,list(Area_contruida=110,Estrato="4",tiene_parqueadero=TRUE))
precio_medio_estimado
##        1 
## 272.6314

El precio medio estimado del apartamente es de 272 millones, y al compararlo con el precio de venta (320 millones) podemos observar que se encuentre sobre valorado. Inicialmente la recomendación sería no invertir en este apartamente ya que la diferencia es importante (casi 50 millones). Adicionalmente el incremento de 50 millones es dificil de justificar por temas como acabados de lujo en el apartamento y otras externalidades como servicios adicionales de la unidad (piscina, gym, canchas.. parques…acceso). Sin embargo el modelo al presentar un ajuste mayor al 990% presenta limitacciones en la predicción y por tanto no incorpora ciertas variables adicionales clave como las ya mencionadas (acabados, qué ofrece el sector…) que podrían ser de gran interes para el comprador y justificar el incremento adicional el precio.

Recomendaciones de inversión con el modelo

Si la persona finalmente toma en cuenta la recomendación y continúa en la busqueda de vivienda. Podría usted recomendarle algunas en particular de acuerdo a sus intereses y las estimaciones del modelo. Area construida de al menos 100 mt2, con parqueadero propio, estrato 4 y dispone de entre 200 y 350 millones (credito preaprobado).

Identificar el top 5 y mapearlos.

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

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 apartamentos que en primer lugar la mayoría presenta problemas en la definición de la zona (registraron sur en la aplicación de finca raiz y lo no son), sin embargo uno de ellos cumple con a condición y se encuentra en el barrio El Ingenio con las característics indicadas y un ahorro (potencial) de 116 millones por debajo del precio medio estimado (mercado)

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