library(readxl)
options(scipen=999)
datos = read_excel("C:/Users/manue/Documents/datos_vivienda.xlsx")
names(datos)
## [1] "area_construida" "precio_millon"
attach(datos)
## Ejercicio 1: Realice un análisis exploratorio de las variables precio de vivienda (millones de pesos COP) y area de la vivienda (metros cuadrados) - incluir graficos e indicadores apropiados interpretados.
require(ggplot2)
## Loading required package: ggplot2
require(ggpubr)
## Loading required package: ggpubr
g1=ggplot(datos,aes(x=precio_millon))+geom_histogram(bins=30)+theme_bw()
g3=ggplot(datos, aes(x=precio_millon))+geom_boxplot(width=0.5)+theme_bw()
g2=ggplot(datos,aes(x=area_construida))+geom_histogram(bins=30)+theme_bw()
g4=ggplot(datos, aes(x=area_construida))+geom_boxplot(width=0.5)+theme_bw()
ggarrange(g1, g3, g2, g4, labels = c("A", "B", "C", "D"),ncol = 2, nrow = 2)
y <- table1::table1(~precio_millon+area_construida, data = datos)
y
| Overall (N=26) |
|
|---|---|
| precio_millon | |
| Mean (SD) | 332 (82.1) |
| Median [Min, Max] | 305 [240, 480] |
| area_construida | |
| Mean (SD) | 116 (35.5) |
| Median [Min, Max] | 97.0 [80.0, 195] |
## Ejercicio 2: Realice un análisis exploratorio bivariado de datos enfocado en la relación entre la variable respuesta (y=precio) en función de la variable predictora (x=area) - incluir graficos e indicadores apropiados interpretados
#Grafico de dispersion
g3=ggplot(datos,aes(y=precio_millon,x=area_construida))+geom_point()+theme_bw()+geom_smooth()
g3
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
#coeficiente de correlacion
cor(y=datos$precio_millon,x=datos$area_construida)
## [1] 0.9190295
##Ejercicio 3: Estime el modelo de regresión lineal simple entre precio = f(area) +e.Interprete los coeficientes del modelo β0, β1 en caso de ser correcto.
modelo1=lm(precio_millon~area_construida)
summary(modelo1)
##
## Call:
## lm(formula = precio_millon ~ area_construida)
##
## Residuals:
## Min 1Q Median 3Q Max
## -51.673 -25.612 -6.085 24.875 67.650
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 86.234 22.479 3.836 0.000796 ***
## area_construida 2.124 0.186 11.422 0.0000000000345 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 33.05 on 24 degrees of freedom
## Multiple R-squared: 0.8446, Adjusted R-squared: 0.8381
## F-statistic: 130.5 on 1 and 24 DF, p-value: 0.0000000000345
#Ejericicio 4: Construir un intervalo de confianza (95%) para el coeficiente β1, interpretar y concluir si el coeficiente es igual a cero o no. Compare este resultado con una prueba de hipotesis t.
confint(modelo1,1,0.95)
## 2.5 % 97.5 %
## (Intercept) 39.83983 132.6279
confint(modelo1,2,0.95)
## 2.5 % 97.5 %
## area_construida 1.74017 2.507771
#Ejercicio 5: Calcule e interprete el indicador de bondad y ajuste R2.
## De acuerdo con el coeficiente R2, se podria concluir que el modelo explica en 83.81% la variabilidad del precio de las viviendas. Este valor nos indica que el modelo se ajusta bien a los datos.
summary(modelo1)$adj.r.squared
## [1] 0.8381408
## Ejercicio 6: Cual seria el precio promedio estimado para un apartamento de 110 metros cuadrados? Considera entonces con este resultado que un apartemento en la misma zona con 110 metros cuadrados en un precio de 200millones seria una buena oferta? Que consideraciones adicionales se deben tener?
# En base al resultado obtenido del primer modelo, se determino que el precio para un apartamento con un área de construccion de 110 metros cuadrados seria de COP 319,8 millones. Con un nivel de confianza del 95%, el precio para un apartamento de 110 metros estaría en el rango de COP 306 a COP 333 millones.
# En cuanto a la segunda cuestion, podría considerar como una buena opcion un apartamento de 110 metros cuadrados con un precio de 200 millones COP; sin embargo, se deben incluir otras variables que pueden incidir en el valor de la vivienda, por ejemplo, la cercania a supermercados y rutas de trasporte, la antigüedad del edificio, el número de parqueaderos entre otras.
predict(modelo1,newdata = list(area_construida=110),interval = "confidence")
## fit lwr upr
## 1 319.8706 306.3133 333.4279
## Ejercicio 7: Realice la validación de supuestos del modelo por medio de graficos apropiados, interpretarlos y sugerir posibles soluciones si se violan algunos de ellos
# A) Media cero: En la primera gráfica observamos que los errores no tienen un comportamiento aleatorio con valor de media cero.
# varianza constante: Nuevamente en la gráfica 1 se identifica un aumento de la varianza, por lo tanto, se puede inferir que los errores no cumplen con la propiedad de varianza constante.
# Independencia: No son datos que varían en el tiempo.
# Normalidad: segun el gráfico 2, se evidencia que los errores en su mayoría siguen una distribución normal; sin embargo, para algunos datos extremos se evidencia que se alejan de la línea de normalidad.
## En base a la validación descrita anteriormente, se decide hacer una transformación a las variables, con el fin de ajustar el modelo de regresión lineal y tener un mejor rendimiento en la validación de los errores.
par(mfrow=c(2,2))
plot(modelo1)
## Ejercicio 8: De ser necesario realice una transformación apropiada para mejorar el ajuste y supuestos del modelo.
## Se decide hacer transformación a la variable dependiente con el fin de mejorar el modelo de regresión lineal.
w=1/area_construida
modelo2=lm(precio_millon~w)
summary(modelo2)
##
## Call:
## lm(formula = precio_millon ~ w)
##
## Residuals:
## Min 1Q Median 3Q Max
## -36.987 -16.743 -5.023 18.547 44.379
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 635.35 18.27 34.77 < 0.0000000000000002 ***
## w -32464.72 1895.32 -17.13 0.00000000000000584 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 23.05 on 24 degrees of freedom
## Multiple R-squared: 0.9244, Adjusted R-squared: 0.9212
## F-statistic: 293.4 on 1 and 24 DF, p-value: 0.000000000000005839
## Ejercicio 9: De ser necesario realice una transformación apropiada para mejorar el ajuste y supuestos del modelo.
## Con la transformación realizada, se mejora el coeficiente de determinación con un valor de R2 ajustado de 92.12%. También se identifica en el primer gráfico que se cumple con el supuesto de aleatoriedad (media cero y varianza constante) de los errores. Así mismo, en el segundo gráfico también se ve un mejor rendimiento en el supuesto de normalidad de los errores para los datos extremos.
summary(modelo2)$adj.r.squared
## [1] 0.9212346
par(mfrow=c(2,2))
plot(modelo2)