Punto 1.
Los siguientes datos corresponden a ofertas de vivienda (casas y apartamentos) de la ciudad de Cali del periodo 2019-2 que se ofrecen por medio de la plataforma finca raiz Cali. La base total contiene 8219, y para efectos del presente informe se presentan solo los inmuebles de la zona norte que poseen un valor inferior a $500 millones y que poseen un área inferior a 300 mt2. Los inmuebles que responden a estas características son 1077.
library(readxl)
library(ggplot2)
library(plotly)
library(leaflet)
Datos_Vivienda <- read_excel("D:/PUJ/2do Semestre/4. Analitica financiera/Datos_Vivienda.xlsx")
criterios=Datos_Vivienda$Zona=="Zona Norte"&Datos_Vivienda$precio_millon<500&Datos_Vivienda$Tipo=="Apartamento"&Datos_Vivienda$Area_contruida<300
Datos_norte=Datos_Vivienda[criterios,]
table(Datos_norte$Zona)
##
## Zona Norte
## 1077
table(Datos_norte$Tipo)
##
## Apartamento
## 1077
summary(Datos_norte$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
View(Datos_norte)
head(Datos_norte,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_norte$cordenada_longitud,lat = Datos_norte$Cordenada_latitud,radius = 0.1,color = "black", label = Datos_norte$precio_millon,opacity = 0.9)%>% addTiles()
En el mapa se puede observar que los apartamentos aunque se encuentren filtrados muestran apartamentos ubicados a lo largo de la ciudad y no solo los ubicados norte. Esto pudo ocurrir porque quiénes reportaron el bien inmueble colocaron mal la zona o la dirección.
Punto 2.
Relación precio, área, estrato:
Datos_norte=na.omit(Datos_norte)
Datos_norte$Estrato=as.character(Datos_norte$Estrato)
g1=ggplot(Datos_norte,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 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.
Relación precio, área, tiene parqueadero
Datos_norte$tiene_parqueadero=Datos_norte$parqueaderos!="NA"
g2=ggplot(Datos_norte,aes(x=Area_contruida,y=precio_millon,color=tiene_parqueadero))+geom_point()+theme_bw()+geom_smooth(method="lm")
ggplotly(g2)
Se observa que hay una relación directa enre el precio y el hecho de que el apartamento tenga parqueadero pues el precio en promedio de los apartamentos con parqueadero es más elevado que el de los apartamentos que no lo tienen.
Punto 3.
Datos_norte$tiene_parqueadero=Datos_norte$parqueaderos!="NA"
mod1=lm(precio_millon~Area_contruida+Estrato+tiene_parqueadero,data=Datos_norte)
summary(mod1)
##
## Call:
## lm(formula = precio_millon ~ Area_contruida + Estrato + tiene_parqueadero,
## data = Datos_norte)
##
## 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
Se esta analizando la relación entre las variables de precio de los apartamentos con las variables categoricas de estrato y el hecho de que el apartamento tenga parqueadero o no.
Los coeficientes son estadísticamente significativos y explican el incremento del precio del valor de la vivienda por estrato y parqueadero. Basándose en el estrato 3, vivir en estrato 4 incrementa el valor de la vivienda en 61,87 millones, vivir en estrato 5 con el estrato 3 como base, incrementa el valor de la vivienda en 146,16 millones, y con la misma base, vivir en estrato 6, incrementa el valor de la vivienda en 204.47 millones. Además, el hecho de que el apartamento tenga parqueadero propio, incrementa el precio en 15.54 millones de pesos.
El modelo presenta un R2 ajustado de 0.7529, lo que indica que el modelo logra explicar en un 75.29% el precio de los apartamentos. Para mejorar este indicador se sugiere adicionar otras variables categoricas como la seguridad del sector, si tiene parques infantiles cerca, centros comerciales, vías de acceso, entre otras.
Punto 4.
par(mfrow=c(2,2))
plot(mod1)
El grafico QQ = hay normalidad y el grafico Residual Vs Fitted value = hay linealidad.
Punto 5.
preciomedio_estimadodemercado=predict(mod1,list(Area_contruida=100,Estrato="4",tiene_parqueadero=TRUE))
preciomedio_estimadodemercado
## 1
## 230.7909
Es un apartamento muy costoso lo que le están ofreciendo, por lo que no sería buena idea adquirirlo por 450millones cuando el primedio con estas caracteristicas es de 230millones.
Punto 6.
precio_modelo=mod1$fitted.values
precio_real=Datos_norte$precio_millon
area=Datos_norte$Area_contruida
tiene_p=Datos_norte$tiene_parqueadero
estrato=Datos_norte$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
Datos_norte$potencial=round(potencial,1)
Datos_sugeridos=Datos_norte[target,]
Datos_sugeridos
## # 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_sugeridos$cordenada_longitud,lat = Datos_sugeridos$Cordenada_latitud,radius = 0.05,color = "blue",label = paste("Potencial=",Datos_sugeridos$potencial,";","Precio venta=",Datos_sugeridos$precio_millon),opacity = 0.9)%>% addTiles()