Comenzamos leyendo la base de datos vivienda con la cual se trabajara en este trabajo
## # A tibble: 8,322 × 12
## Zona piso Estrato precio_millon Area_contruida parqueaderos Banos
## <chr> <chr> <dbl> <dbl> <dbl> <chr> <dbl>
## 1 Zona Sur 2 6 880 237 2 5
## 2 Zona Oeste 2 4 1200 800 3 6
## 3 Zona Sur 3 5 250 86 NA 2
## 4 Zona Sur NA 6 1280 346 4 6
## 5 Zona Sur 2 6 1300 600 4 7
## 6 Zona Sur 3 6 513 160 2 4
## 7 Zona Sur 2 6 870 490 3 6
## 8 Zona Sur 5 5 310 82.5 1 2
## 9 Zona Sur 9 4 240 80 1 2
## 10 Zona Sur 6 6 690 150 2 5
## # … with 8,312 more rows, and 5 more variables: Habitaciones <dbl>, Tipo <chr>,
## # Barrio <chr>, cordenada_longitud <dbl>, Cordenada_latitud <dbl>
Realice un análisis exploratorio de las variables precio de vivienda (millones de pesos COP) y área de la vivienda (metros cuadrados) - incluir gráficos e indicadores apropiados e interprételos.
Se procede a realizar la seleccion de las dos variables:
## # A tibble: 8,322 × 2
## precio_millon Area_contruida
## <dbl> <dbl>
## 1 880 237
## 2 1200 800
## 3 250 86
## 4 1280 346
## 5 1300 600
## 6 513 160
## 7 870 490
## 8 310 82.5
## 9 240 80
## 10 690 150
## # … with 8,312 more rows
Una vez obtenida las dos variables, se procede a realizar analisis descriptivo:
En los dos histogramas se pueden ver que la mayoria de las viviendas oxilan entre los 500 millones de pesos y su area construida esta entre 0 y los 500 metros cuadrados y en su correlacion podemos ver que tienen poca correlación, pero las viviendas de 500 millones se correlacionan con las que tienen 500 metros cuadrados construidos y despues se nota una dispersion a medida que va aumentando una y otra.
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 gráficos e indicadores apropiados e interprételos.
Con esta grafica se observa que el area construida y el precio de las vivienda si estan correlacionadas o tiene una correlacion positiva.
Estime el modelo de regresión lineal simple entre precio = f(area) + e. Interprete tosos los coeficientes del modeloelo.
##
## Call:
## lm(formula = precio_millon ~ Area_contruida, data = viviendanew)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2659.88 -120.78 -47.55 67.27 1330.10
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 157.47636 4.13640 38.07 <2e-16 ***
## Area_contruida 1.58018 0.01831 86.30 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 238.7 on 8317 degrees of freedom
## (3 observations deleted due to missingness)
## Multiple R-squared: 0.4725, Adjusted R-squared: 0.4724
## F-statistic: 7448 on 1 and 8317 DF, p-value: < 2.2e-16
Viendo el modelo, nos arroja que tanto el intercepto como la variable area construida son significativas en nuestro modelo, ya que obtenemos un numero menor a 0.05 y observando el BETA 1 se puede decir que por cada unidad de area contruida va aumentar en 1.58 para la variable precio y El valor de R^2 indica que el modelo calculado explica el 47.25% de la variabilidad presente en la variable respuesta.
Construya un intervalo de confianza (95%) para el coeficiente β1, interprete y concluya si el coeficiente es igual a cero o no. Compare este resultado con una prueba de hipótesis t.
confint(modelo, level = 0.95)
## 2.5 % 97.5 %
## (Intercept) 149.367981 165.584740
## Area_contruida 1.544286 1.616067
summary(modelo)
##
## Call:
## lm(formula = precio_millon ~ Area_contruida, data = viviendanew)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2659.88 -120.78 -47.55 67.27 1330.10
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 157.47636 4.13640 38.07 <2e-16 ***
## Area_contruida 1.58018 0.01831 86.30 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 238.7 on 8317 degrees of freedom
## (3 observations deleted due to missingness)
## Multiple R-squared: 0.4725, Adjusted R-squared: 0.4724
## F-statistic: 7448 on 1 and 8317 DF, p-value: < 2.2e-16
Como se observa el intervalo no contiene el cero para ninguno de los dos (intercepto y B1), por lo cual se puede decir que para el B1 tendra un impacto con respecto a la variable respuesta. Por otro lado las pruebas t estan mostrando valores cercanos a cero, por lo cual los coeficientes son significativos.
Calcule e interprete el indicador de bondad y ajuste R^2
El valor de R^2 indica que el modelo calculado explica el 47.25% de la variabilidad presente en la variable respuesta; por lo cual se puede decir que el R^2 es debil y por ende se podrai decir que aunque la variable area construida es significativa para el modelo, solamente esa variable no alcanza a explicar toda la variabilidad del modelo.
¿Cuál sería el precio promedio estimado para un apartamento de 110 metros cuadrados? Considera entonces con este resultado que un apartamento en la misma zona con 110 metros cuadrados en un precio de 200 millones sería una buena oferta? ¿Qué consideraciones adicionales se deben tener?
x0pred = data.frame(Area_contruida=110)
predict(modelo,x0pred,interval='prediction')
## fit lwr upr
## 1 331.2958 -136.712 799.3036
si es una buena oferta, ya que el tope minimo en promedio tiene un valor de 331 millones un apartamento con esas caracteristicas y el valor que se encontro tiene una diferencia de 131 millones a favor y para tener en cuenta en otras compras ya se sabe cual es el tope tanto minimo como maximo que puede constar uns vivienda de esas caracteristicas y asi mismo hacer una buena compra a favor.
Realice la validación de supuestos del modelo por medio de gráficos apropiados, interpretarlos y sugerir posibles soluciones si se violan algunos de ellos.
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## studentized Breusch-Pagan test
##
## data: modelo
## BP = 1609.3, df = 1, p-value < 2.2e-16
Realizando el test de Breusch-pagan obtuvimos un valor p menor a 0.05 de tal manera que rechazamos la hipotesis nula y de esta menera no se cumple el supuesto de homosedasticidad.
###RESIDUOS
res.stud.base = studres(modelo)
modelo.fit.base= modelo$fitted.values
par(mfrow=c(1,2))
plot(modelo.fit.base,res.stud.base, ylab='residuos estudentizados',
xlab='valores ajustados',main='(a)', col = "BLUE")
abline(h=1,lty=2)
lines(lowess(res.stud.base~modelo.fit.base), col = 2)
plot(modelo.fit.base,abs(res.stud.base),
ylab='valor absoluto de los residuos estudentizados',
xlab='valores ajustados',main='(b)', col = "BLUE")
lines(lowess(abs(res.stud.base)~modelo.fit.base), col = 2)
Comprobando el supuesto de homocedasticidad y observando lo que nos arrojan las graficas podemos concluir que no se cumple este supuesto; ya que en los graficos a y b los datos no se destribuyen de manera equivalente.
car::qqPlot(modelo,xlab='cuantiles teóricos',ylab='residuos estudentizados', distribution = 'norm')
## [1] 1017 3324
ks.test(modelo$residuals,pnorm,mean(modelo$residuals),sd(modelo$residuals))
## Warning in ks.test.default(modelo$residuals, pnorm, mean(modelo$residuals), :
## ties should not be present for the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: modelo$residuals
## D = 0.14774, p-value < 2.2e-16
## alternative hypothesis: two-sided
Realizando el test de Kolmogorov-Smirnov se puede apreciar que no hay normalidad, ya que los datos no siguen una patron lineal, en cambio varian sobre la misma.
De ser necesario realice una transformación apropiada para mejorar el ajuste y supuestos del modelo.
Se decide hacer una transformacion de box-cox, ya que en el modelo incial no cumple con ningun supuesto y el ajuste del R^2 es pequeño.
boxcox = MASS::boxcox(modelo,lambda=seq(-3,3,length.out = 1000),
ylab='log-verosimilitud')
boxcox$x[boxcox$y ==max(boxcox$y)] # valor que maximiza la log-verosimilitud
## [1] 0.01501502
Una vez obtenida el lambda = 0.015, se procede a realizar la tranformación del modelo
modelonew<-lm(precio_millon^0.015~Area_contruida,data = viviendanew)
summary(modelonew)
##
## Call:
## lm(formula = precio_millon^0.015 ~ Area_contruida, data = viviendanew)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.086437 -0.005566 -0.000164 0.005186 0.024266
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.083e+00 1.403e-04 7714.33 <2e-16 ***
## Area_contruida 5.190e-05 6.211e-07 83.56 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.008099 on 8317 degrees of freedom
## (3 observations deleted due to missingness)
## Multiple R-squared: 0.4564, Adjusted R-squared: 0.4563
## F-statistic: 6983 on 1 and 8317 DF, p-value: < 2.2e-16
Nuevamente se procede a evaluar los supuestos de heterocedasticidad y normalidad
bptest(modelonew)
##
## studentized Breusch-Pagan test
##
## data: modelonew
## BP = 944.91, df = 1, p-value < 2.2e-16
Realizando el test de Breusch-pagan nuevamente, obtuvimos un valor p menor a 0.05 de tal manera que rechazamos la hipotesis nula y de esta manera no se cumple el supuesto de homosedasticidad.
###RESIDUOS
res.stud.base = studres(modelonew)
modelonew.fit.base= modelonew$fitted.values
par(mfrow=c(1,2))
plot(modelonew.fit.base,res.stud.base, ylab='residuos estudentizados',
xlab='valores ajustados',main='(a)', col = "BLUE")
abline(h=1,lty=2)
lines(lowess(res.stud.base~modelonew.fit.base), col = 2)
plot(modelonew.fit.base,abs(res.stud.base),
ylab='valor absoluto de los residuos estudentizados',
xlab='valores ajustados',main='(b)', col = "BLUE")
lines(lowess(abs(res.stud.base)~modelonew.fit.base), col = 2)
Comprobando el supuesto de homocedasticidad otra vez y observando lo que nos arrojan las graficas podemos concluir que no se cumple este supuesto; ya que en los graficos a y b los datos no se destribuyen de manera equivalente.
car::qqPlot(modelonew,xlab='cuantiles teóricos',ylab='residuos estudentizados', distribution = 'norm')
## [1] 1017 3324
ks.test(modelonew$residuals,pnorm,mean(modelonew$residuals),sd(modelonew$residuals))
## Warning in ks.test.default(modelonew$residuals, pnorm,
## mean(modelonew$residuals), : ties should not be present for the Kolmogorov-
## Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: modelonew$residuals
## D = 0.016466, p-value = 0.02198
## alternative hypothesis: two-sided
Realizando el test de Kolmogorov-Smirnov nuevamente, se puede apreciar que si hay normalidad, ya que los datos siguen un patron lineal.
De ser necesario compare el ajuste y supuestos del modelo inicial y el transformado.
Una vez realizado el modelo con la transformación box-cox, se puede decir que no se obtienen diferencias significativas con respecto al R^2 del modelo inicial, de hecho el modelo inicial presenta un R^2 ajustado mayor al R^2 ajustado del modelo transformado (47.25%<45.63%). En cuanto a los supuesto, si se obtiene un ajustde de normalidad con el modelo transformado; sin embargo en los dos modelos se presenta herterocedasticidad.