Regresión simple

Con base en los datos de ofertas de vivienda descargadas del portal Fincaraiz (datos_vivienda.xls - descarga) realizar los siguientes puntos:

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.

library(readxl)
library(ggplot2)
## Warning in as.POSIXlt.POSIXct(Sys.time()): unable to identify current timezone 'H':
## please set environment variable 'TZ'
library(CGPfunctions)

viviendas = read_excel("D:/Maestria/Metodos estadisticos/Regresion/YDRAY-datos_vivienda-3.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)
Prom_Area_contruida=mean(Area_contruida)
Desv_Area_contruida=sd(Area_contruida)
quantile(Area_contruida)
##   0%  25%  50%  75% 100% 
##   80   86   97  130  195
data.frame(Prom_Area_contruida,Desv_Area_contruida)
##   Prom_Area_contruida Desv_Area_contruida
## 1            115.7469            35.54332
par(mfrow=c(1,2))
hist(precio_millon)
hist(Area_contruida)

Prom_precio_millon=mean(precio_millon)
Desv_precio_millon=sd(precio_millon)
quantile(precio_millon)
##     0%    25%    50%    75%   100% 
## 240.00 251.25 305.00 395.00 480.00
data.frame(Prom_precio_millon,Desv_precio_millon)
##   Prom_precio_millon Desv_precio_millon
## 1           332.0769           82.14423
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 = 'green',main="Area Construida",ylab='metros cuadrados')
boxplot(precio_millon,col = 'blue',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=100,main = 'precio vs area construida')

## 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.

cor(precio_millon,Area_contruida)
## [1] 0.9190295
mod1=lm(precio_millon~Area_contruida, data = viviendas )
mod1
## 
## Call:
## lm(formula = precio_millon ~ Area_contruida, data = viviendas)
## 
## Coefficients:
##    (Intercept)  Area_contruida  
##         86.234           2.124
plot(precio_millon,Area_contruida, col=100,main = 'precio vs area construida')
abline(mod1, col="red")

B0 : Es el Precio de los inmuebles con un minimo de 86.234 B1 :Se refiere a que por cada metro cuadrado el precio incrementaria en 2.124

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.

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
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

P-value resultante es:

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

Demuestra que el Area construida de vivienda impacta notablemente el precio de la vivienda, Ejemplo: Prueba con area = 140 metros cuadrados

prueba1=86.234+2.124*140
print(prueba1)
## [1] 383.594

5)

Calcule e interprete el indicador de bondad y ajuste R2.

summary(mod)$r.squared
## [1] 0.8446152

En este caso la variable R2 indica que con un porcentaje del 84% la varaible precio es explicada por la varaible área.

6)

Cual seria 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 seria una buena oferta? Que consideraciones adicionales se deben tener?.

prueba_metros <- data.frame(Area_contruida=110)
predict(object=mod, newdata=prueba_metros, interval="confidence", level=0.95)
##        fit      lwr      upr
## 1 319.8706 306.3133 333.4279

7)

Realice la validación de supuestos del modelo por medio de graficos apropiados, interpretarlos y sugerir posibles soluciones si se violan alugunos de ellos.

par(mfrow=c(2,2))
hist(mod$residuals)
plot(mod)

qqnorm(mod$residuals)
qqline(mod$residuals)
shapiro.test(mod$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  mod$residuals
## W = 0.95489, p-value = 0.3009

8)

De ser necesario realice una transformación apropiada para mejorar el ajuste y supuestos del modelo.

mod_ajuste=lm(precio_millon~log(Area_contruida))
summary(mod_ajuste)
## 
## Call:
## lm(formula = precio_millon ~ log(Area_contruida))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -45.837 -20.153  -1.878  20.145  55.145 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          -948.53      89.09  -10.65 1.42e-10 ***
## log(Area_contruida)   271.88      18.88   14.40 2.63e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 27 on 24 degrees of freedom
## Multiple R-squared:  0.8963, Adjusted R-squared:  0.8919 
## F-statistic: 207.4 on 1 and 24 DF,  p-value: 2.63e-13
par(mfrow=c(2,2))
hist(mod_ajuste$residuals)
plot(mod_ajuste)

qqnorm(mod_ajuste$residuals)
qqline(mod_ajuste$residuals)
shapiro.test(mod_ajuste$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  mod_ajuste$residuals
## W = 0.96783, p-value = 0.568

9)

De ser necesario compare el ajuste y supuestos del modelo inicial y el transformado

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
summary(mod_ajuste)
## 
## Call:
## lm(formula = precio_millon ~ log(Area_contruida))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -45.837 -20.153  -1.878  20.145  55.145 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          -948.53      89.09  -10.65 1.42e-10 ***
## log(Area_contruida)   271.88      18.88   14.40 2.63e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 27 on 24 degrees of freedom
## Multiple R-squared:  0.8963, Adjusted R-squared:  0.8919 
## F-statistic: 207.4 on 1 and 24 DF,  p-value: 2.63e-13
predict(object=mod, newdata=prueba_metros, interval="confidence", level=0.95)
##        fit      lwr      upr
## 1 319.8706 306.3133 333.4279
predict(object=mod_ajuste, newdata=prueba_metros, interval="confidence", level=0.95)
##        fit      lwr      upr
## 1 329.4367 318.5009 340.3726

En terminos generales al aplicar una transformación sobre el modelo, la varaible R2 mejora de 0.8381 (con el moedelo lm(formula = precio_millon ~ Area_contruida)) a 0.8919 (con el modelo lm(formula = precio_millon ~ log(Area_contruida))) y para el ejemplo de predicción en una vivienda de 110 metros cuadrados tambien mejora en su rango y precisión