La siguiente base de datos es extraida en el mes de febrero del ano 2019 desde la plataforma de internet www.fincaraiz.com.co (Portal Web en Colombia dedicado al mercado de Bienes Raices). Los datos corresponden a las ofertas de casas y apartamentos de la ciudad de Cali, desde los estratos 3 a 6 y por los cuales contienen 8.322 registros que se muestran a continuacion.
library(readxl)
library(ggplot2)
library(plotly)
library(leaflet)
Datos_Vivienda=read_excel("C:/Users/paula_molano/OneDrive - SYNLAB/Desktop/Maestria en Finanzas/10. Econometria/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>
Seguidamente se empezara a desarrollar el informe 1 correspondiente al Modelo de Regresion Lineal Multiple de la clase de Econometria financiera del profesor David Arango Londono de la Universidad Javeriana - Cali, en este informe se desarrollara cada uno de los puntos del informe.
criterios=Datos_Vivienda$Zona=="Zona Norte"&Datos_Vivienda$precio_millon<500&Datos_Vivienda$Tipo=="Apartamento"&Datos_Vivienda$Area_contruida<300
Datos_filtro=Datos_Vivienda[criterios,]
table(Datos_filtro$Zona)
##
## Zona Norte
## 1077
table(Datos_filtro$Tipo)
##
## Apartamento
## 1077
summary(Datos_filtro$precio_millon)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 65.0 132.0 220.0 233.8 320.0 495.0 3
head(Datos_filtro,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 3 135 56 1 1
## 2 Zona~ NA 3 78 54 2 1
## 3 Zona~ NA 5 340 106 2 2
## # ... with 5 more variables: Habitaciones <dbl>, Tipo <chr>, Barrio <chr>,
## # cordenada_longitud <dbl>, Cordenada_latitud <dbl>
leaflet()%>%addCircleMarkers(lng=Datos_filtro$cordenada_longitud,lat=Datos_filtro$Cordenada_latitud,radius = 0.05,color="red",label=Datos_filtro$precio_millon,opacity=0.9)%>%addTiles()
Analisis del punto 1:
Se ha desarrollado el filtro teniendo en cuenta la base de datos anteriormente mencionada, donde se destaca: * Ofertas de apartamentos * Zona norte de la ciudad de Cali * Precio inferior a los 500 millones de pesos * Areas menores a 300 mt2. Bajo lo anterior se encuentran 1.077 registros que cumplen con las condiciones.
Posterior a lo anterior, se emplea un filtro donde se desea obtener los 3 primeros registros como se muestra en la tabla de 3X12
Por utimo, se detalla la ubicación de cada uno de los apartamentos ubicados en la zona norte de la ciudad de Cali, bajo la ayuda de la plataforma de Google maps (servidor de aplicaciones de mapas en la web que pertenece a Alphabet Inc. Ofrece imagenes de mapas desplazables, asi como fotografias por satelite del mundo e incluso la ruta entre diferentes ubicaciones o imagenes a pie de calle con Google Street View, condiciones de trafico en tiempo real (Google Traffic) y un calculador de rutas a pie, en coche, bicicleta (beta) y transporte publico y un navegador GPS, Google Maps Go.). En el mapa se registran varias viviendas de apartamentos mal sectorizadas pues aparecen en zonas diferentes al norte, este error se debe a que tienen valores fatantes o no validos y su principal causal es por mal diligenciamiento por parte del ofertor.
Datos_filtro=na.omit(Datos_filtro)
Datos_filtro$Estrato=as.character(Datos_filtro$Estrato)
Datos_filtro$tiene_parqueadero=Datos_filtro$parqueaderos!="NA"
g1=ggplot(Datos_filtro,aes(x=Area_contruida,y=precio_millon,color=Estrato))+geom_point()+theme_bw()+geom_smooth(method = "lm")
ggplotly(g1)
g2=ggplot(Datos_filtro,aes(x=Area_contruida,y=precio_millon,color=tiene_parqueadero))+geom_point()+theme_bw()+geom_smooth(method = "lm")
ggplotly(g2)
Analisis del punto 2:
Se ha realizado la exploracion de los datos como: area construida, estrato y si tiene o no parqueadero en correlacion al precio.
En la grafica 1:Relacion entre precio, estrato y area construida -> Se detalla por colores el estrato empezando desde el estrato 3 al 6, las lineas de intercepto evidencian que a medida que el estrato aumenta tambien sube el precio de la vivienda (apartamentos); ademas, se oberva que el area construida tiene relacion directa con el precio, esto quiere decir que a mayor area tenga la vivienda mayor va ser su precio en promedio.
En la grafica 2: Relacion entre precio, area construida y parqueadero -> Se detalla una relacion directa entre el precio de la vivienda y el area construida, lo que indica que a mayor area de la vivienda (apartamento), asi mismo incrementa su precio en promedio. Las lineas de intercepto dependen si tienen o no parqueadero, lo que indica es que el precio base cambia dependendiendo si el apartamento tiene o no parquedero.
Para ambas graficas se debe tener en cuenta que la base es el estrato 3.
Antes de iniciar con el modelo de regresion lineal y analisis de las variables se debe tener en cuenta que la variable principal es el precio y que esta variable esta en funcion del area construida y zona; ademas, de dos variables categoricas que son el estrato y si la vivienda (apartamento) tiene o no parqueadero, como se evidencia en el ejercicio No.2
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
## -242.442 -31.795 -0.944 27.529 223.738
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 49.03852 5.03387 9.742 < 2e-16 ***
## Area_contruida 1.04332 0.06037 17.281 < 2e-16 ***
## Estrato4 61.87913 4.84558 12.770 < 2e-16 ***
## Estrato5 146.16586 4.98649 29.312 < 2e-16 ***
## Estrato6 204.47149 9.27649 22.042 < 2e-16 ***
## tiene_parqueaderoTRUE 15.54122 3.98543 3.900 0.000102 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 54.8 on 1071 degrees of freedom
## Multiple R-squared: 0.7541, Adjusted R-squared: 0.7529
## F-statistic: 656.9 on 5 and 1071 DF, p-value: < 2.2e-16
Analisis del punto 3:
El modelo de regresion lineal arroja un R2 ajustado de un 75,29% lo que indica que el 75,29% de los datos en la ecuacion de regresion son confiables, determinada por la extension de la varianza de la variable dependiente precio que se explica por las variables independientes de area construida, zona, estrato y si tiene o no parqueadero.
Teniendo en cuenta los datos arrojados, se puede concluir lo siguiente:
Intercepto: Teniendo en cuenta el estrato 3 como base, se puede concluir que el precio del lote es $49.038.520 millones de pesos, es decir cuando no hay nada construido, y no se tienen parqueaderos.
Coeficiente Area Construida (Area_construida): Por cada metro cuadrado construido el precio de la vivienda incrementa en $1.043.320 millones de pesos.
Coeficiente Estrato 4: Estar en estrato 4 incrementa el precio de la vivienda en $61.879.130 millones de pesos con respecto al estrato 3 (categoria base).
Coeficiente Estrato 5: Estar en estrato 5 incrementa el precio de la vivienda en $146.165.860 millones de pesos con respecto al estrato 3 (categoria base).
Coeficiente Estrato 6: Estar en estrato 5 incrementa el precio de la vivienda en $204.471.490 millones de pesos con respecto al estrato 3 (categoria base).
Coeficiente tiene_parqueadero: Que la vivienda tenga parqueadero propio, incrementa el precio de la misma en $15.541.220 millones de pesos.
Por lo que se puede concluir que los coeficientes si son estadisticamente significativos a medida que se incrementa el estrato respecto al estrato 3 como base categorica mayor es su precio.
A continuacion se analizara por medio de graficos los supuestos del modelo, considerando 4 graficos para la interpretacion:
Los cuales seran explicados seguidamente
par(mfrow=c(2,2))
plot(mod1)
Analisis del punto 4:
Los graficos arrojan que los supuestos del modelo estan bien interpretados por lo que se procede a interpretar cada uno de ellos:
El grafico Residual vs Fitted values muestra que estan todos cerca del cero (0) que es lo que se busca, es decir que hay linealidad. En caso de que no existiera linealidad en los datos, se procede con el ajuste del modelo mediante una transformacion logaritmica.
El grafico Q-Q muestra que hay normalidad de los datos, con algunas pequeñas dispersiones en los extremos pero no afectan el modelo.
El grafico Scale-Location muestra que cumple los requisitos minimos pues esta cerca del uno (1) y su linea es recta
El grafico Residuals vs Leverage muestra que la mayoria de los datos no estan muy alejados del resto, aunque hay datos influyentes y atipicos, por lo tanto existe linealidad en los datos.
Para mejorar el modelo, se deben considerar otras variables que pueden ser determinantes en el precio de la vivienda, como lo son la seguridad del sector, los parques, la vias de acceso, la aproximacion al transporte publico, entre otras variables cualitativas. Sin embargo, para mejorar el R2 ajustado es mejor usar un modelo de transformacion logaritmica que ajuste el modelo (aunque no es necesario) e incremente el indicador. Se acota que no es necesario hacer la transformacion logartimica por que las graficas demuestran que el modelo esta bien representado, pero para efectos del ejercicio, en los anexos se hara el analisis del modelo de transformacion logaritmica demostrando que seguramente aumenta el porcentaje del R2 ajustado pero el analisis de cada uno de los coeficientes pueda que no sean acordes, ya que con el modelo de regresion lineal esta mostrando que no es necesario realizar ajustes, pero lo veremos dentro de los anexos de este informe.
Teniendo en cuenta las variables ya estudiadas, se procede a ajustar las variables para predecir si un apartamento que se desea vender en $450 millones esta con buen precio o esta sobrevalorado vs las ofertas del mercado
preciomedio_estimadodemercado=predict(mod1,list(Area_contruida=100,Estrato="4",tiene_parqueadero=TRUE))
preciomedio_estimadodemercado
## 1
## 230.7909
Analisis del punto 5:
De acuerdo con el modelo, el valor del precio estimado bajo las siguientes condiciones: * Apartamento con 100 mt2 * Estrato 4 * Con parqueadero Arroja que el mercado esta ofreciendolo a un precio de 230.790.900 de pesos colombianos, lo que indica que el precio de 450 millones está sobrevalorado y no hay manera de explicar la desviacion de $219.210.000 de pesos. Incluso, trabajando bajo el supuesto que es una vivienda (apartamento) con acabados de lujo y que sus variables cualitativas como seguridad del sector, los parques, la vias de acceso, la aproximacion al transporte publico, entre otras hacen que el precio se incremente, la desviacion sigue siendo muy alta; por lo tanto, se recomienda no tomar dicha oferta.
Se realizara una prediccion para una persona que tiene credito pre-aprobado por $400 millones de pesos y a continuacion se le sugerirá al menos 5 opciones potenciales de vivienda (apartamentos) ubicados en la zona norte, con mas de 100 mt2 de area, que tenga parqueadero y dentro del estrato 4.
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>0&precio_real>=100&precio_real<=400&area>=100&estrato=="4"&tiene_p==TRUE
table(target)
## target
## FALSE TRUE
## 1072 5
El resultado arroja que hay 5 opciones potenciales (true) de vivienda (apartamentos) que se ajustan con los requerimientos de la persona interesada
A continuacion se mostraran en el mapa en que barrios de la zona norte de la ciudad de Cali se encuentran dichos predios
Datos_filtro$potencial=round(potencial,1)
Datos_recomendados=Datos_filtro[target,]
Datos_recomendados
## # A tibble: 5 x 14
## Zona piso Estrato precio_millon Area_contruida parqueaderos Banos
## <chr> <chr> <chr> <dbl> <dbl> <chr> <dbl>
## 1 Zona~ 4 4 185 104 1 3
## 2 Zona~ 6 4 270 152 1 3
## 3 Zona~ 3 4 300 287 1 3
## 4 Zona~ 4 4 190 104. 1 3
## 5 Zona~ NA 4 280 173 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 = "blue",label = paste("Potencial=",Datos_recomendados$potencial,";","Precio venta=",Datos_recomendados$precio_millon),opacity = 0.9)%>% addTiles()
Como podemos obervar en la tabla 5X14, donde se detalla el estrato, precio, area construida y si tienen o no parqueadero, entre otras variables y en el mapa se hace rastreo de cada una de las viviendas (apartamentos) potenciales para el comprador. Estas estan distribuidas en los barrios: San Vicente, Versalles, Campina y Santa Monica, con la ubicacion de los barrios en el mapa nos podemos dar cuenta que no hay errores en los registros y que todos coinciden con lo esperado en el modelo ya que se encuentran en la zona norte de la ciudad de Cali.
En el punto 4 se menciono de demostrar que realizando el modelo de transformacion logaritmica incrementaba el indicador del R2 ajustado pero que posiblemente sus coeficientes no iban a estar acordes por lo que se procede hacer analisis y la corrida del modelo.
Datos_filtro$Estrato=as.character(Datos_filtro$Estrato)
Datos_filtro$tiene_parqueadero=Datos_filtro$parqueaderos!="NA"
mod2=lm(log(precio_millon)~Area_contruida+Estrato+tiene_parqueadero, data=Datos_filtro)
summary(mod2)
##
## Call:
## lm(formula = log(precio_millon) ~ Area_contruida + Estrato +
## tiene_parqueadero, data = Datos_filtro)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.88986 -0.14592 0.01888 0.16240 1.02666
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.4664295 0.0206619 216.17 < 2e-16 ***
## Area_contruida 0.0040291 0.0002478 16.26 < 2e-16 ***
## Estrato4 0.4225632 0.0198891 21.25 < 2e-16 ***
## Estrato5 0.7603609 0.0204675 37.15 < 2e-16 ***
## Estrato6 0.9200525 0.0380761 24.16 < 2e-16 ***
## tiene_parqueaderoTRUE 0.0966817 0.0163585 5.91 4.59e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2249 on 1071 degrees of freedom
## Multiple R-squared: 0.8006, Adjusted R-squared: 0.7997
## F-statistic: 860 on 5 and 1071 DF, p-value: < 2.2e-16
Analisis del Anexo:
Tal como se menciono, se observa que el R2 ajustado tiene el 79,97% aun mejor que el modelo de regresion lineal que tenia un 75,29%, sin embargo al adentrarnos al analisis de los coeficientes no tienen mucho sentido, pues considerando que la base es el estrato 3 a simple vista no se alcanza a notar gran diferencia entre un estrato a otro. Para poder corroborar estos coeficientes, se procede a eliminar el exponencial para poder tener una mejor interpretacion de los coeficientes.
Intercepto_Estrato3=exp(4.4664295)
Intercepto_Estrato3
## [1] 87.04537
Coeficiente_Area_construida=exp(0.0040291)
Coeficiente_Area_construida
## [1] 1.004037
Coeficiente_Estrato4=exp(0.4225632)
Coeficiente_Estrato4
## [1] 1.525868
Coeficiente_Estrato5=exp(0.7603609)
Coeficiente_Estrato5
## [1] 2.139048
Coeficiente_Estrato6=exp(0.9200525)
Coeficiente_Estrato6
## [1] 2.509422
Coeficiente_Tiene_parqueadero=exp(0.0966817)
Coeficiente_Tiene_parqueadero
## [1] 1.10151
Como se puede observar no hace mucho sentido que el salto de un estrato 3 al estrato 6 de una vivienda (apartamento) la diferencia sea por $2.509.422 pesos por encima de la base (estrato 3), asi mismo con los demas coeficientes, con esto se comprueba que no es necesario, ni relevante ajustar el modelo a una transformacion logaritmica.
Por lo anterior, debe considerarse el modelo de regresion lineal como la mejor base, pese que su R2 ajustado es menor pero sus coeficientes si tienen mejor relacion al momento de hacer el analisis.