library(readxl)
library(dplyr)
library(ggplot2)
library(plotly)
library(knitr)
library(kableExtra)
library(tidyr)
library(RecordLinkage)
library(leaflet)
library(htmltools)
library(readxl)
datos <- read_excel("C:/Users/portatil/Downloads/Datos_Vivienda.xlsx")
View (datos)
id=1:dim(datos)[1]
datos = data.frame(id,datos)
library(RecordLinkage)
pos = which(jarowinkler("colseguros",datos$Barrio)>0.98)
datos_sub=datos[pos,]
head(datos_sub)
id | Zona | piso | Estrato | precio_millon | Area_contruida | parqueaderos | Banos | Habitaciones | Tipo | Barrio | cordenada_longitud | Cordenada_latitud | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
430 | 430 | Zona Sur | 2 | 4 | 430 | 330 | 1 | 4 | 5 | Casa | colseguros | -76.49571 | 3.41717 |
840 | 840 | Zona Sur | 4 | 4 | 138 | 60 | 1 | 1 | 3 | Apartamento | colseguros | -76.50397 | 3.42200 |
863 | 863 | Zona Sur | 4 | 4 | 128 | 55 | 1 | 1 | 2 | Apartamento | colseguros | -76.50400 | 3.40000 |
2297 | 2297 | Zona Sur | 2 | 5 | 500 | 200 | 1 | 3 | 4 | Casa | colseguros | -76.51972 | 3.44000 |
2649 | 2649 | Zona Sur | 4 | 4 | 162 | 74 | 1 | 3 | 3 | Apartamento | colseguros | -76.52122 | 3.42730 |
2833 | 2833 | Zona Sur | NA | 4 | 360 | 200 | 2 | 4 | 8 | Casa | colseguros | -76.52222 | 3.42056 |
library(dplyr)
names(datos_sub)
## [1] "id" "Zona" "piso"
## [4] "Estrato" "precio_millon" "Area_contruida"
## [7] "parqueaderos" "Banos" "Habitaciones"
## [10] "Tipo" "Barrio" "cordenada_longitud"
## [13] "Cordenada_latitud"
promedio_precio=mean(datos_sub$precio_millon,na.rm = TRUE)
mediana_precio=median(datos_sub$precio_millon,na.rm = TRUE)
minimo_precio=min(datos_sub$precio_millon,na.rm = TRUE)
maximo_precio=max(datos_sub$precio_millon,na.rm = TRUE)
desvest_precio=sd(datos_sub$precio_millon,na.rm = TRUE)
indic_precio=data.frame(promedio_precio,mediana_precio,minimo_precio,maximo_precio,desvest_precio)
indic_precio
promedio_precio | mediana_precio | minimo_precio | maximo_precio | desvest_precio |
---|---|---|---|---|
311.2045 | 315 | 120 | 800 | 154.8335 |
length(pos)
## [1] 44
mod1=lm(precio_millon~Area_contruida, data=datos_sub)
summary (mod1)
##
## Call:
## lm(formula = precio_millon ~ Area_contruida, data = datos_sub)
##
## Residuals:
## Min 1Q Median 3Q Max
## -198.83 -44.65 -20.22 36.74 170.26
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 120.19394 18.59201 6.465 8.51e-08 ***
## Area_contruida 1.04772 0.08304 12.617 7.06e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 71.58 on 42 degrees of freedom
## Multiple R-squared: 0.7912, Adjusted R-squared: 0.7863
## F-statistic: 159.2 on 1 and 42 DF, p-value: 7.063e-16
En la regresión simple (mod1), me dice que el precio de la vivienda se incrementa casi $1.000.000 por cada mts2 adicional de área construida.
R-squared: 0.7912, Adjusted R-squared: 0.7863 El modelo 1 explica casi el 80% la variacion en los precios de las viviendas del barrio colseguros, es un buen modelo
mod2=lm(precio_millon~Habitaciones, data=datos_sub)
summary (mod2)
##
## Call:
## lm(formula = precio_millon ~ Habitaciones, data = datos_sub)
##
## Residuals:
## Min 1Q Median 3Q Max
## -165.485 -67.295 -8.733 46.267 274.515
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 41.981 34.651 1.212 0.232
## Habitaciones 60.438 7.086 8.529 1.04e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 94.79 on 42 degrees of freedom
## Multiple R-squared: 0.6339, Adjusted R-squared: 0.6252
## F-statistic: 72.74 on 1 and 42 DF, p-value: 1.036e-10
En este caso de regresion simple (mod2) me dice que el precio de la vivienda se incremente en casi 60.000.000 por cada habitación extra
R-squared: 0.6339, Adjusted R-squared: 0.6252 El (mod2) explica el 63% de la variacion en los precios, es un porcentaje aceptable
mod3=lm(precio_millon~Banos, data=datos_sub)
summary (mod3)
##
## Call:
## lm(formula = precio_millon ~ Banos, data = datos_sub)
##
## Residuals:
## Min 1Q Median 3Q Max
## -235.70 -55.63 -19.32 43.05 412.30
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 112.94 38.68 2.920 0.00561 **
## Banos 68.69 11.92 5.761 8.77e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 117.1 on 42 degrees of freedom
## Multiple R-squared: 0.4414, Adjusted R-squared: 0.4281
## F-statistic: 33.19 on 1 and 42 DF, p-value: 8.767e-07
En este caso (mod3) indica que el precio de vivienda se aumenta aproximadamente en 68.690.000 por cada baño adicional que exista en en la vivienda R-squared: 0.4414, Adjusted R-squared: 0.4281 Este modelo (mod3) explica alrededor del 44% de la diferencia entre precios, es una variable aceptable para explicar la diferencia
Pero si cambiamos la regresión con una variable cualitativa, como por ejemplo Habitaciones. Aparecen todas las habitaciones? Si hacemos un tabla cuantas habitaciones deberian aparecer?
table(datos_sub$Tipo)
##
## Apartamento Casa
## 22 22
Se estima un modelo 4 con variable dummy
El modelo 4 estima el precio promedio de la vivienda en función del tipo de vivienda
mod4=lm(precio_millon~Tipo, data = datos_sub)
summary (mod4)
##
## Call:
## lm(formula = precio_millon ~ Tipo, data = datos_sub)
##
## Residuals:
## Min 1Q Median 3Q Max
## -284.9 -69.5 -27.2 35.0 385.1
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 207.50 24.57 8.446 1.34e-10 ***
## TipoCasa 207.41 34.74 5.970 4.39e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 115.2 on 42 degrees of freedom
## Multiple R-squared: 0.459, Adjusted R-squared: 0.4462
## F-statistic: 35.64 on 1 and 42 DF, p-value: 4.389e-07
Interpretación
Se esta utilizando como base el “tipo apartamento”, lo que se puede interpretar aqui es que las viviendas tipo casa y tipo apartamento tienen valores bastante similares con solo una diferencia de 0.09 millones (Tipo casa es mas barata) R-squared: 0.459, Adjusted R-squared: 0.4462 Esto indica que el modelo explica alrededor del 45% de la diferencia entre los precios, es aceptable.
##Analisis Bivariado
##Exploración Bivariada - (Relaciones entre precio vivienda y area construida)
g1=ggplot(data=datos_sub,mapping = aes(x=precio_millon,y=Area_contruida))+geom_point()+theme_bw()+
geom_smooth()
ggplotly(g1)
cor(datos_sub$precio_millon,datos_sub$Area_contruida)
## [1] 0.8895118
Se evidencia una alta relacion, ademas de positiva, con un coeficiente de correlacion de 0.88, es una buena relacion entre variables
##Exploración Bivariada - (Relaciones entre precio vivienda y cantidad de habitaciones)
g1=ggplot(data=datos_sub,mapping = aes(x=precio_millon,y=Habitaciones))+geom_point()+theme_bw()+
geom_smooth()
ggplotly(g1)
cor(datos_sub$precio_millon,datos_sub$Habitaciones)
## [1] 0.796209
En este caso tiene una misma correlacion positiva y un coeficiente de correlacion de 0.79, nuevamente relacion bastante buena entre variables
#Modelación Rmultiple
mod5=lm(precio_millon~Habitaciones+Area_contruida+Banos,data = datos_sub)
summary (mod5)
##
## Call:
## lm(formula = precio_millon ~ Habitaciones + Area_contruida +
## Banos, data = datos_sub)
##
## Residuals:
## Min 1Q Median 3Q Max
## -157.653 -38.676 -7.312 35.624 181.637
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 52.2611 23.1774 2.255 0.0297 *
## Habitaciones 17.5289 8.0263 2.184 0.0349 *
## Area_contruida 0.7615 0.1027 7.414 5e-09 ***
## Banos 14.5596 9.1389 1.593 0.1190
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 61.65 on 40 degrees of freedom
## Multiple R-squared: 0.8525, Adjusted R-squared: 0.8415
## F-statistic: 77.08 on 3 and 40 DF, p-value: < 2.2e-16
##Seleccion de variables
modstep=step(mod5)
## Start: AIC=366.49
## precio_millon ~ Habitaciones + Area_contruida + Banos
##
## Df Sum of Sq RSS AIC
## <none> 152024 366.49
## - Banos 1 9646 161670 367.20
## - Habitaciones 1 18127 170151 369.45
## - Area_contruida 1 208914 360938 402.54
summary(modstep)
##
## Call:
## lm(formula = precio_millon ~ Habitaciones + Area_contruida +
## Banos, data = datos_sub)
##
## Residuals:
## Min 1Q Median 3Q Max
## -157.653 -38.676 -7.312 35.624 181.637
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 52.2611 23.1774 2.255 0.0297 *
## Habitaciones 17.5289 8.0263 2.184 0.0349 *
## Area_contruida 0.7615 0.1027 7.414 5e-09 ***
## Banos 14.5596 9.1389 1.593 0.1190
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 61.65 on 40 degrees of freedom
## Multiple R-squared: 0.8525, Adjusted R-squared: 0.8415
## F-statistic: 77.08 on 3 and 40 DF, p-value: < 2.2e-16
##Validación de Supuestos
par(mfrow=c(2,2))
plot(modstep)
mod6=lm(precio_millon~Habitaciones+Area_contruida,data = datos_sub)
summary (mod5)
##
## Call:
## lm(formula = precio_millon ~ Habitaciones + Area_contruida +
## Banos, data = datos_sub)
##
## Residuals:
## Min 1Q Median 3Q Max
## -157.653 -38.676 -7.312 35.624 181.637
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 52.2611 23.1774 2.255 0.0297 *
## Habitaciones 17.5289 8.0263 2.184 0.0349 *
## Area_contruida 0.7615 0.1027 7.414 5e-09 ***
## Banos 14.5596 9.1389 1.593 0.1190
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 61.65 on 40 degrees of freedom
## Multiple R-squared: 0.8525, Adjusted R-squared: 0.8415
## F-statistic: 77.08 on 3 and 40 DF, p-value: < 2.2e-16
#Transformación de datos
par(mfrow=c(2,2))
plot(mod6)
mod7=lm(precio_millon~(log(Habitaciones+Area_contruida)),data = datos_sub)
summary(mod7)
##
## Call:
## lm(formula = precio_millon ~ (log(Habitaciones + Area_contruida)),
## data = datos_sub)
##
## Residuals:
## Min 1Q Median 3Q Max
## -137.07 -41.57 -12.65 32.33 220.14
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -696.42 69.92 -9.96 1.26e-12 ***
## log(Habitaciones + Area_contruida) 201.80 13.87 14.55 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 63.75 on 42 degrees of freedom
## Multiple R-squared: 0.8344, Adjusted R-squared: 0.8305
## F-statistic: 211.7 on 1 and 42 DF, p-value: < 2.2e-16
par(mfrow=c(2,2))
plot(mod7)
mod8=lm(precio_millon~Habitaciones+log(Area_contruida),data = datos_sub)
summary(mod8)
##
## Call:
## lm(formula = precio_millon ~ Habitaciones + log(Area_contruida),
## data = datos_sub)
##
## Residuals:
## Min 1Q Median 3Q Max
## -121.70 -33.70 -11.40 17.67 208.35
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -554.914 75.684 -7.332 5.62e-09 ***
## Habitaciones 19.382 6.657 2.912 0.00579 **
## log(Area_contruida) 157.135 19.100 8.227 3.24e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 58.92 on 41 degrees of freedom
## Multiple R-squared: 0.8619, Adjusted R-squared: 0.8552
## F-statistic: 128 on 2 and 41 DF, p-value: < 2.2e-16
par(mfrow=c(2,2))
plot(mod8)
El modelo mejor adaptado es el Modelo 8, en cuanto al grafico Residuals vs Fitted, muestra un pequeño desvio al final de la linea lo cual indica un poco de heterosticidad, pero en general muestra homocedasticidad. En cuanto al Q-Q Residuals, los puntos siguen en gran parte la linea diagonal, a excepcion de unos cuantos rezagos, pero en general muestra una buena dinamica.
En cuanto a la significancia de las variables, todas las variables son significantes en este modelo.
Multiple R-squared: 0.8619, Adjusted R-squared: 0.8552 Esto quiere decir que el modelo explica alrededor del 85% de la variacion en el precio de la vivienda, es un muy buen porcentaje.
##Pronostico Hipotetico
Transformación de datos
summary(datos_sub$Habitaciones)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 3.000 4.000 4.455 5.000 10.000
summary(datos_sub$Area_contruida)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 55.00 72.25 155.00 182.31 243.25 600.00
# Crear el nuevo dato SIN aplicar log() manualmente
nuevo_dato <- data.frame(
Habitaciones = 4,
Area_contruida = 55,155,600
)
# Hacer el pronóstico usando mod8
predict(mod8, newdata = nuevo_dato)
## 1
## 152.3063
Esto lo que indica es que una vivienda con 4 habitaciones y 155 metros cuadrados de area construida, aproximadamente tendra un valor de 315.11 millones de pesos.
##¿Esta información o estimación para que serviria? ¿Como monetizaria esta modelación?
Esta información me sirve para estimar el precio si deseo comprar una vivienda en el barrio de colseguros, puedo estimar el precio teniendo en cuenta el area construida y la cantidad de habitaciones que son variables con gran significancia, asi mismo se puede estimar si el precio de la vivienda se encuentra sobreestimado o subestimado.
Realizaria la monetizacion de este modelo tanto para vendedores como para los compradores, en el caso de los vendedores los ayudaria a estimar cual es el valor en el que deberian vender su vivienda, y en el caso de los compradores, se los venderia con la intencion de que realicen la comparacion de las posibles viviendas que deseen.