Preguntas

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(tidyverse)
library(here)
library(lmtest)

ventas <- readxl::read_excel(
  here(
    "Unidad 3", "YDRAY-datos_vivienda-3.xlsx"
  )
)
hist(ventas$precio_millon)

hist(ventas$Area_contruida)

mean(ventas$Area_contruida)
## [1] 115.7469
mean(ventas$precio_millon)
## [1] 332.0769

Se puede observar una distribucion bimodal de los precios de las viviendas con picos en el rango entre 200 y 300 millones de pesos, asi como tambien en el rango entre 350 y 450 millones de pesos. Por otro lado, la distribucion del area tiene una distribucion con un sesgo hacia el rango entre 80 y 100 metros cuadrados. El area media de las viviendas es de 115.7 metros cuadrados y el precio medio de las viviendas es de 332 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.

ventas %>% 
  ggplot(aes(Area_contruida, precio_millon)) +
  geom_point() +
  geom_smooth()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

Se puede ver una relacion positiva entre el area construida y el precio de las viviendas. Una relacion con una pendiente mas pronunciada para rangos de vivienda entre 75 metros y 120 metros, que se aplana un poco para viviendas con mayor area.

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.

modelo <- lm(precio_millon ~ Area_contruida, ventas)
summary(modelo)
## 
## Call:
## lm(formula = precio_millon ~ Area_contruida, data = ventas)
## 
## 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

El beta 0 es de 86.2 lo que implica que segun el modelo el precio inicial de las viviendas parte desde ese punto (en millones), pues ese valor asume que ese seria el precio de una vivienda si el area construida es cero. El beta 1 es de 2.12 lo que implica que por cada unidad de area adicional en promedio se incrementa el precio en 2.1 millones de pesos.

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.

limite_izquierdo <- 2.124 - (1.96 * 0.186)
limite_derecho <- 2.124 + (1.96 * 0.186)
data.frame(limite_izquierdo, limite_derecho)
##   limite_izquierdo limite_derecho
## 1          1.75944        2.48856

Lo que se infiere al observar el intervalo de confianza al 95% es que el cero no esta incluido en el intervalo por lo cual se puede sostener que el beta1 es diferente de cero. Al comparar este resultado con la prueba de hipotesis t desplegada en el resumen del modelo, la cual nos dio un resultado de 3.45e-11 muy por debajo del 0.005 que se utiliza como el umbral para determinar si la variable es significativa, es coherente con el resultado del intervalo de confianza, es decir, que se rechaza la hipotesis de que el beta1 es cero.

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

El indicador de bondad de ajuste expuesto mas arriba fue de 0.8446 lo que significa que el modelo es capaz de explicar el 84.5% de la varianza de lo datos, en otras palabras, el modelo es capaz de explicar aproximadamente el 85% del comportamiento de los precios.

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

predict(modelo, list(Area_contruida = 110), interval = "confidence")
##        fit      lwr      upr
## 1 319.8706 306.3133 333.4279

Para el modelo el precio estimado para un apartamento de 110 metros cuadrados es de 319.8 millones de pesos. Para determinar si un apartamento en la misma zona con 110 metros cuadrados a un precio de 200 millones seria una buena oferta hay otros factores que analizar, como el estado del apartamento el cual no esta siendo considerado por el modelo, puesto que puede acarrear costos adicionales para el comprador.

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.

hist(modelo$residuals, breaks = 30)

shapiro.test(modelo$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo$residuals
## W = 0.95489, p-value = 0.3009
par(mfrow = c(2,2))
plot(modelo)

dwtest(modelo)
## 
##  Durbin-Watson test
## 
## data:  modelo
## DW = 1.8831, p-value = 0.3831
## alternative hypothesis: true autocorrelation is greater than 0

Normalidad de los errores: Al analizar el histograma y realizar el test de shapito wilks con un valor-p mayor a 0.05, No rechazamos la hipotesis nula de que la distribucion es normal. Por lo tanto, podemos asumir que los errores tienen distribucion normal. Homogeneidad de la varianza: Con el grafico se puede ver que la varianza no es homogenea por lo cual el supuesto de homocedasticidad no se estaria cumpliendo. Independencia de los errores: Al realizar el test de Durbin Watson se observa que no se rechaza la hipotesis nula de que la autocorrelacion es cero. Por tanto, podemos asumir que hay independencia de los errores. No colinealidad: Como solo hay una variable explicativa no puede existir colinealidad.

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

Para mejorar el ajuste y supuestos del modelo en este caso para hacer que se cumpla la homocedasticidad se hace una transformacion de la variable respuesta (precios), se eleva al cuadrado.

ventas <- ventas %>% 
  mutate(precio_2 = precio_millon ^ 2)

modelo_2 <- lm(precio_2 ~ Area_contruida, ventas)

summary(modelo_2)
## 
## Call:
## lm(formula = precio_2 ~ Area_contruida, data = ventas)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -37353 -13858  -2935  11632  47135 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -53790.3    14520.0  -3.705  0.00111 ** 
## Area_contruida   1473.5      120.1  12.267 7.91e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 21350 on 24 degrees of freedom
## Multiple R-squared:  0.8624, Adjusted R-squared:  0.8567 
## F-statistic: 150.5 on 1 and 24 DF,  p-value: 7.914e-12
par(mfrow = c(2,2))
plot(modelo_2)

La transformacion del precio a un precio cuadrado resulta en una mejora del R2 del modelo. Pasando de 0.8446 a 0.8624.

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

summary(modelo)
## 
## Call:
## lm(formula = precio_millon ~ Area_contruida, data = ventas)
## 
## 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(modelo_2)
## 
## Call:
## lm(formula = precio_2 ~ Area_contruida, data = ventas)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -37353 -13858  -2935  11632  47135 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -53790.3    14520.0  -3.705  0.00111 ** 
## Area_contruida   1473.5      120.1  12.267 7.91e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 21350 on 24 degrees of freedom
## Multiple R-squared:  0.8624, Adjusted R-squared:  0.8567 
## F-statistic: 150.5 on 1 and 24 DF,  p-value: 7.914e-12

El segundo modelo con el precio elevado al cuadrado presenta una mejora en la bondad de ajusta presentando un mayor R2