Preguntas
Con base en los datos de ofertas de vivienda descargadas del portal Fincaraiz (datos_vivienda.xls - descarga) realizar los siguientes puntos:
library(readxl)
library(ggplot2)
library(CGPfunctions)
## Warning: package 'CGPfunctions' was built under R version 4.1.2
viviendas = read_excel("G:/ACADEMIA/JAVERIANA CALI/1. SEMESTRE 2022-I/2. METODOS Y SIMULACION/datos_vivienda.xlsx")
viviendas
## # A tibble: 26 x 2
## Area_contruida precio_millon
## <dbl> <dbl>
## 1 86 250
## 2 118 385
## 3 130 395
## 4 181 419
## 5 86 240
## 6 98 320
## 7 170 480
## 8 96 268
## 9 85 240
## 10 170 450
## # ... with 16 more rows
attach(viviendas)
#Estadisticos descriptivos area construida
Prom_Area_contruida=mean(Area_contruida)
Desv_Area_contruida=sd(Area_contruida)
P25_Area_contruida=quantile(Area_contruida, prob=c(0.25))
P50_Area_contruida=quantile(Area_contruida, prob=c(0.50))
P75_Area_contruida=quantile(Area_contruida, prob=c(0.75))
data.frame(Prom_Area_contruida,Desv_Area_contruida,P25_Area_contruida,P50_Area_contruida,P75_Area_contruida)
## Prom_Area_contruida Desv_Area_contruida P25_Area_contruida
## 25% 115.7469 35.54332 86
## P50_Area_contruida P75_Area_contruida
## 25% 97 130
#Estadisticos descriptivos area construida
Prom_precio_millon=mean(precio_millon)
Desv_precio_millon=sd(precio_millon)
P25_precio_millon=quantile(precio_millon, prob=c(0.25))
P50_precio_millon=quantile(precio_millon, prob=c(0.50))
P75_precio_millon=quantile(precio_millon, prob=c(0.75))
data.frame(Prom_precio_millon,Desv_precio_millon,P25_precio_millon,P50_precio_millon,P75_precio_millon)
## Prom_precio_millon Desv_precio_millon P25_precio_millon P50_precio_millon
## 25% 332.0769 82.14423 251.25 305
## P75_precio_millon
## 25% 395
ggplot(viviendas,aes(x=Area_contruida))+geom_histogram()+theme_bw()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
ggplot(viviendas,aes(x=precio_millon))+geom_histogram()+theme_bw()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
par(mfrow=c(1,2))
boxplot(Area_contruida,col = 'ivory',main="Area Construida",ylab='metros cuadrados')
boxplot(precio_millon,col = 'ivory',main="Precio Millon",ylab='millones de pesos')
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.
cor(precio_millon,Area_contruida)
## [1] 0.9190295
plot(precio_millon,Area_contruida, col=250,main = 'precio vs area construida')
3. Estime el modelo de regresión lineal simple entre precio = f(area)+e. Interprete los coeficientes del modelo B0; B1 en caso de ser correcto.
mod=lm(precio_millon~Area_contruida)
summary(mod)
##
## Call:
## lm(formula = precio_millon ~ Area_contruida)
##
## 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_contruida 2.124 0.186 11.422 3.45e-11 ***
## ---
## 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: 3.45e-11
#B0 indica el precio base de los inmuebles con un minimo de 86.236 millones #B1 indida que por cada metro cuadrado el precio incrementa en 2.124
#Intervalo de confianza y se evidencia que el coeficiente es diferente a cero.
confint(object=mod, level=0.95)
## 2.5 % 97.5 %
## (Intercept) 39.83983 132.627917
## Area_contruida 1.74017 2.507771
t.test(mod$coefficients,mu=0)
##
## One Sample t-test
##
## data: mod$coefficients
## t = 1.0505, df = 1, p-value = 0.4843
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -490.1799 578.5377
## sample estimates:
## mean of x
## 44.17892
r.squared=summary(mod)$r.squared
print(paste("La metrica de Bondad y ajuste para este modelo es:", r.squared))
## [1] "La metrica de Bondad y ajuste para este modelo es: 0.844615168561367"
#Lo cual evidencia una explicación de la varianza del precio en funcion del area en un 84.46%
Considera entonces con este resultado que un apartemento en la misma zona con 110 metros cuadrados en un precio de 200 millones seria una buena oferta? Que consideraciones adicionales se deben tener?.
nuevo <- data.frame(Area_contruida=110)
predict(object=mod, newdata=nuevo, interval="confidence", level=0.95)
## fit lwr upr
## 1 319.8706 306.3133 333.4279
#Una oferta de 200M estaria muy por debajo del precio estimado . #Se podrian agregar variables a la estimación como las caracteristicas de la vivienda.
par(mfrow=c(2,2))
plot(mod)
#se requiere una transformacion para lograr que los supuestos se cumplan satisfactoriamente.
qqnorm(mod$residuals)
qqline(mod$residuals)
shapiro.test(mod$residuals)
##
## Shapiro-Wilk normality test
##
## data: mod$residuals
## W = 0.95489, p-value = 0.3009
#Se confirma normalidad en los residuales
ggplot(data = viviendas, aes(mod$fitted.values, mod$residuals)) +
geom_point() +
geom_smooth(color = "firebrick", se = FALSE) +
geom_hline(yintercept = 0) +
theme_bw()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
bptest(mod)
##
## studentized Breusch-Pagan test
##
## data: mod
## BP = 5.8737, df = 1, p-value = 0.01537
#Evidencias de falta de homocedasticidad.
No se presenta necesidad de realizar algun tipo de transformación.