Actividad - Regresión Lineal Simple

1. 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 interpretados.

library(readxl)
datos = read_excel("C:/Archivos R/datos_vivienda.xlsx")
head(datos,3)
## # A tibble: 3 x 2
##   Area_contruida precio_millon
##            <dbl>         <dbl>
## 1             86           250
## 2            118           385
## 3            130           395

Análisis exploratorio univariado de datos:

require(ggplot2)
## Loading required package: ggplot2
require(ggpubr)
## Loading required package: ggpubr
g1=ggplot(datos,aes(x=Area_contruida))+geom_histogram()+theme_bw()
g2=ggplot(datos,aes(x=Area_contruida))+geom_bar()+theme_bw()
g3=ggplot(datos,aes(x=precio_millon))+geom_histogram()+theme_bw()
g4=ggplot(datos,aes(x=precio_millon))+geom_bar()+theme_bw()
ggarrange(g1,g2,g3,g4,labels = c("A", "B","C","D"),ncol = 2, nrow = 2)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

require(table1)
## Loading required package: table1
## 
## Attaching package: 'table1'
## The following objects are masked from 'package:base':
## 
##     units, units<-
y = table1::table1(~ Area_contruida+precio_millon, data = datos)
y
Overall
(N=26)
Area_contruida
Mean (SD) 116 (35.5)
Median [Min, Max] 97.0 [80.0, 195]
precio_millon
Mean (SD) 332 (82.1)
Median [Min, Max] 305 [240, 480]

Las variables objeto de análisis son área construida y precio, de la variable área construida se compone de 26 viviendas ofertadas, se observa que la mayoría de viviendas ofertadas se ubican por debajo de los 125 metros cuadrados, en promedio tienen 116 metros cuadrados, con un área mínima de 80 y máxima de 195 metros cuadrados. En cuanto a su precio observamos que el precio mínimo es de 240 millones y máximo es de 480 millones, con un precio promedio de 332 millones, la mayoría de viviendas ofertadas se ubican por debajo de los 300 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 predictiva (x=área) - incluir gráficos e indicadores apropiados interpretados.

t.test(datos$Area_contruida,datos$precio_millon)
## 
##  Welch Two Sample t-test
## 
## data:  datos$Area_contruida and datos$precio_millon
## t = -12.324, df = 34.044, p-value = 4.202e-14
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -252.0007 -180.6593
## sample estimates:
## mean of x mean of y 
##  115.7469  332.0769
datos$Area_contruida_grupo=cut(datos$Area_contruida,breaks = c(0,50,100,150,200))
datos$precio_millon_grupo=cut(datos$precio_millon,breaks = c(200,300,400,500))
require(CGPfunctions)
## Loading required package: CGPfunctions
## Warning in .recacheSubclasses(def@className, def, env): undefined subclass
## "packedMatrix" of class "replValueSp"; definition not updated
## Warning in .recacheSubclasses(def@className, def, env): undefined subclass
## "packedMatrix" of class "mMatrix"; definition not updated
PlotXTabs2(data = datos,x =Area_contruida_grupo  ,y =precio_millon_grupo )

Con los datos presentados se puede determinar que a medida que el área construida de la vivienda aumenta, también incrementa su valor.

3. Estime el modelo de regresión lineal simple entre precio = f(área)+e. Interprete los coeficientes del modelo B0; B1 en caso de ser correcto.

attach(datos)
plot(Area_contruida,precio_millon)

cor(precio_millon,Area_contruida)
## [1] 0.9190295

El coeficiente de correlación tiene una relación positiva fuerte los que nos indica que el precio de las unidades de vivienda esta muy asociado con el área en metros cuadrados.

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

Bo = (Intercept) 86.234, significa que si no hay área construida el valor mínimo de la es de 86 Millones que se podría suponer puede ser del terreno.

B1 = Área_contruida 2.124, indica que por un metro adicional de área construida se espera un aumento en el precio de 2,124 en la vivienda.

4. Construir un intervalo de confianza (95%) para el coeficiente B1, interpretar y concluir si el coeficiente es igual a cero o no. Compare este resultado con una prueba de hipótesis t.

predict(mod,newdata = list(Area_contruida=110))
##        1 
## 319.8706
predict(mod,newdata = list(Area_contruida=110),interval = "confidence",level = 0.95)
##        fit      lwr      upr
## 1 319.8706 306.3133 333.4279
t.test(datos$Area_contruida,datos$precio_millon)
## 
##  Welch Two Sample t-test
## 
## data:  datos$Area_contruida and datos$precio_millon
## t = -12.324, df = 34.044, p-value = 4.202e-14
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -252.0007 -180.6593
## sample estimates:
## mean of x mean of y 
##  115.7469  332.0769

5.Calcule e interprete el indicador de bondad y ajuste R2.

Multiple R-squared: 0.8446, el coeficiente de bondad de ajuste R cuadrado en este modelo es bueno y logra explicar en un 84,46% el precio de las viviendas según el área construida.

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

predict(mod,newdata = list(Area_contruida=110))
##        1 
## 319.8706

Con el modelo calculado se espera que una vivienda de 110 metros cuadrados de área construida tenga un valor aproximado de 320 Millones; por lo tanto se considera que es una buena oferta porque se estaría adquiriendo por debajo del precio estimado con un ahorro de 120 Millones, sin embargo es inusual que la vivienda este muy por debajo del precio estimado, es necesario indagar a que se debe la oferta porqué puede obedecer a problemas de inseguridad, deterioro de la vivienda u otros elementos que incidan en el precio.

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

par(mfrow=c(2,2))
plot(mod)

Como se puede observar en los gráficos no el modelo no cumple con el supuesto de aleatoriedad de los errores porque los residuales presentan un comportamiento debido a alguna componente sistemática que no se esta contemplando , analizando el el gráfico de normalidad algunas observaciones no se ajustan a la linea esperada.

Como dos de los supuesto no se cumplen es necesario utilizar una transformación que nos permita mejorar el ajuste del modelo para mejorar el modelo, se podría usan logaritmo, para lo cual es necesario correr nuevamente el modelo.

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

mod = lm(precio_millon~log(Area_contruida))
summary(mod)
## 
## 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

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

par(mfrow=c(2,2))
plot(mod)

Cuando corremos el modelo ajustado con la transformación aplicando logaritmo, se puede observar que no se reflejan mejoras significativas en la aleatoriedad, sin embargo el ajuste de normalidad evidencia un leve mejora, analizando el R cuadrado, el primer modelo arrojaba 0.8446, y en modelo transformado obtenemos un 0.8963, que es significativo porque logra explicar mucho mejor la relación precio Vs área construida de la vivienda.