Con base en los datos de ofertas de vivienda descargadas del portal Fincaraiz para apartamento de estrato 4 con área construida menor a 200 m2 (vivienda4.RDS) la inmobiliaria A&C requiere el apoyo de un cientifico de datos en la construcción de un modelo que lo oriente sobre los precios de inmuebles.

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

vivienda4$tipo=str_to_upper(vivienda4$tipo)
Data = subset(vivienda4, vivienda4$estrato == 4 & vivienda4$areaconst < 200 & vivienda4$tipo == "APARTAMENTO")

AnalisisPrecioVivienda = vivienda4$preciom
AnalisisAreaVivienda = vivienda4$areaconst

AnalisisExploratorio <- function(variable,variableAnalizada){
  print(paste("----- ANALISIS EXPLORATORIO DE ",variableAnalizada," -----"))
  print(paste("media: ",mean(variable)))
  
  print(paste("mediana: ",median(variable)))
  
  print(paste("Valor Maximo: ",max(variable)))
  
  print(paste("Valor Minimo: ", min(variable)))
  
  print(paste("Varianza: ", var(variable)))
  
  print("Cuartiles de 25%, 50% y 70%")
  print(quantile(variable, 0.25))
  print(quantile(variable, 0.50))
  print(quantile(variable, 0.70))
  
  print(paste("Desviacion estandar: ",sd(variable)))
  
  testNormalidad = shapiro.test(variable)
  print(testNormalidad)
  
  hist(variable, xlab = variableAnalizada, main = "HISTOGRAMA")
  
  boxplot(variable,horizontal= FALSE,xlab = paste("Diagrama de cajas de: ",variableAnalizada), main = "Cajas" )
  
}

AnalisisExploratorio(variable = AnalisisAreaVivienda,variableAnalizada = "AREA DE VIVIENDAS")
## [1] "----- ANALISIS EXPLORATORIO DE  AREA DE VIVIENDAS  -----"
## [1] "media:  87.6295427901524"
## [1] "mediana:  75"
## [1] "Valor Maximo:  200"
## [1] "Valor Minimo:  40"
## [1] "Varianza:  1321.0685460665"
## [1] "Cuartiles de 25%, 50% y 70%"
## 25% 
##  60 
## 50% 
##  75 
## 70% 
##  90 
## [1] "Desviacion estandar:  36.3465066556127"
## 
##  Shapiro-Wilk normality test
## 
## data:  variable
## W = 0.8168, p-value < 2.2e-16

AnalisisExploratorio(variable = AnalisisPrecioVivienda,variableAnalizada = "PRECIO DE VIVIENDAS")
## [1] "----- ANALISIS EXPLORATORIO DE  PRECIO DE VIVIENDAS  -----"
## [1] "media:  225.374560375147"
## [1] "mediana:  210"
## [1] "Valor Maximo:  760"
## [1] "Valor Minimo:  78"
## [1] "Varianza:  7376.27428499723"
## [1] "Cuartiles de 25%, 50% y 70%"
## 25% 
## 160 
## 50% 
## 210 
## 70% 
## 250 
## [1] "Desviacion estandar:  85.8852390402288"
## 
##  Shapiro-Wilk normality test
## 
## data:  variable
## W = 0.8896, p-value < 2.2e-16

ANALISIS

PRECIO VIVIENDA: De acuerdo al analisis realizado se puede concluir que distribucion sesgada hacia la derecha ya que su media es muy superior a su mediana y segun sus cuartiles el 70% de los apartamentos se encuentran por debajo de de 250 millones, el 50% de las casas estan por debajo de 210 millones y el 25% por debajo de 160 millones. Tambien se puede concluir que su distribucion no es normal de acuerdo con el histograma.

AREA VIVIENDA: De acuerdo al analisis realizado tambien se observa que tiene una sesgadez hacia la derecha debido a que su media es mas grande que la mediana, el 70% de las casas tienen menos de 90 metros cuadrados, el 50% menos de 75 metros cuadrados y el 25% menos de 60 metros cuadrados.

PUNTO 2

Realice un análisis exploratorio bivariado de datos, enfocado en la relación entre la variable respuesta (precio) en función de la variable predictora (area construida) - incluir gráficos e indicadores apropiados interpretados.

plot(AnalisisPrecioVivienda,AnalisisAreaVivienda,xlab = "Precios de viviendas", ylab = "Area de vivienda")
abline(lm(AnalisisAreaVivienda ~ AnalisisPrecioVivienda), col = "red")

Correlacion = cor(AnalisisPrecioVivienda,AnalisisAreaVivienda)
print(paste("Corelacion: ",Correlacion))
## [1] "Corelacion:  0.763016627167914"
analisisRegresionLineal = lm(AnalisisPrecioVivienda~AnalisisAreaVivienda)
summary(analisisRegresionLineal)
## 
## Call:
## lm(formula = AnalisisPrecioVivienda ~ AnalisisAreaVivienda)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -195.86  -31.95   -8.95   27.87  431.17 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)            67.381      3.510   19.20   <2e-16 ***
## AnalisisAreaVivienda    1.803      0.037   48.73   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 55.53 on 1704 degrees of freedom
## Multiple R-squared:  0.5822, Adjusted R-squared:  0.5819 
## F-statistic:  2374 on 1 and 1704 DF,  p-value: < 2.2e-16

ANALISIS

Luego de realizar los calculos, se puede observar que la correlacion es fuerte ya que su resultado fue 0.76, esto es un valor muy cercano a 1 y por lo tanto nos confirma que hay una fuerte relacion entre el area de las viviendas y el precio, tambien se observa que la distribucion de los residuos es asimetrica ya que la mediana no esta cerca del punto medio entre el minimo y el maximo. Se puede ver que la variable precio depende en un 58% de la variable area

PUNTO 3

Estime el modelo de regresión lineal simple entre precio=f(area)+ε. Interprete los coeficientes del modelo β0, β1 en caso de ser correcto.

modeloLineal = lm(AnalisisPrecioVivienda ~ AnalisisAreaVivienda, data = Data)
modeloLineal
## 
## Call:
## lm(formula = AnalisisPrecioVivienda ~ AnalisisAreaVivienda, data = Data)
## 
## Coefficients:
##          (Intercept)  AnalisisAreaVivienda  
##               67.381                 1.803

ANALISIS

B1 es el area el cual es la variable independiente y B0 es el intercepto o el precio el cual depende del area directamente, como se menciono anteriormente el precio tiene una dependencia de 58% respecto al area, tambien es correcto decir que por cada punto de area que aumente, el precio aumentara aproximadamente 2 puntos.

PUNTO 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 hipótesis t.

Intervalo_Confianza = confint(object = modeloLineal, level = 0.95)
Intervalo_Confianza
##                          2.5 %    97.5 %
## (Intercept)          60.496208 74.265055
## AnalisisAreaVivienda  1.730404  1.875547

ANALISIS

Este intervalo nos muestra donde puede estar ubicado el valor real tanto para el intercepto como para el valor del area, no nos da un valor exacto pero si un rango de confianza muy certero y se puede tener seguridad de que en el intercepto el valor se encuentre entre 60.4 y 74.2 y en area se encuentra entre 1.73 y 1.87.

PUNTO 5

Calcule e interprete el indicador de bondad R2.

summary(modeloLineal)
## 
## Call:
## lm(formula = AnalisisPrecioVivienda ~ AnalisisAreaVivienda, data = Data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -195.86  -31.95   -8.95   27.87  431.17 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)            67.381      3.510   19.20   <2e-16 ***
## AnalisisAreaVivienda    1.803      0.037   48.73   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 55.53 on 1704 degrees of freedom
## Multiple R-squared:  0.5822, Adjusted R-squared:  0.5819 
## F-statistic:  2374 on 1 and 1704 DF,  p-value: < 2.2e-16

el R Cuadrado nos indica que el valor de la variable dependiente (precio)es de 58% dependiente del area

PUNTO 6

¿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 atractiva esta oferta? ¿Qué consideraciones adicionales se deben tener?.

predict(modeloLineal, data.frame(AnalisisAreaVivienda = 110), interval = "confidence", level = 0.95)
##        fit      lwr      upr
## 1 265.7079 262.6113 268.8046
summary(modeloLineal$residuals)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -195.857  -31.953   -8.946    0.000   27.875  431.169

ANALISIS

Despues de validar los resultados obtenidos podemos consluir que si es viable la oferta ya que los precios ocilan entre los 150 millones a 374 millones para el area 110 m2, esto sin tener en cuenta otros factores que pueden influir como la zona

PUNTO 7

Realice la validación de los supuestos del modelo por medio de gráficos apropiados, interpretarlos y sugerir posibles soluciones si se violan algunos de ellos. Utilice las pruebas de hipótesis para la validación de supuestos y compare los resultados con lo observado en los gráficos asociados.

hist(modeloLineal$residuals)

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

shapiro.test(modeloLineal$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modeloLineal$residuals
## W = 0.92671, p-value < 2.2e-16
bptest(modeloLineal)
## 
##  studentized Breusch-Pagan test
## 
## data:  modeloLineal
## BP = 152.8, df = 1, p-value < 2.2e-16

ANALISIS

Se puede observar que de acuerdo al tamaño de BP el cual es grande, que este no es homocedastico y tambien dado que su p-value es muy pequeño, se rechaza su hipotesis nula. Para cumplir con esto es necesario cambiar de modelo o mejorar el ya existente. Tambien se observa que la distribucion de sus residuos no es normal.

PUNTO 8

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

ModeloAdaptado = lm(log(AnalisisPrecioVivienda) ~ log(AnalisisAreaVivienda), data = Data)
ModeloAdaptado
## 
## Call:
## lm(formula = log(AnalisisPrecioVivienda) ~ log(AnalisisAreaVivienda), 
##     data = Data)
## 
## Coefficients:
##               (Intercept)  log(AnalisisAreaVivienda)  
##                    1.9189                     0.7802
bptest(ModeloAdaptado)
## 
##  studentized Breusch-Pagan test
## 
## data:  ModeloAdaptado
## BP = 65.105, df = 1, p-value = 7.101e-16

ANALISIS

Se observa mejoria con el nuevo modelo, sin embargo, aun su p-value es muy pequeño por lo tanto se rechaza la hipotesis nula y no cumple con la homocedasticidad esto tambien nos indica que la varianza de los errores no es constante, al igual que tener un BP alto es un indicio de esto, por tal razon aun se debe de mejorar mas el modelo o definitivamente realizar el cambio de modelo por otro que se adapte mejor.

PUNTO 9

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

modeloLineal
## 
## Call:
## lm(formula = AnalisisPrecioVivienda ~ AnalisisAreaVivienda, data = Data)
## 
## Coefficients:
##          (Intercept)  AnalisisAreaVivienda  
##               67.381                 1.803
bptest(modeloLineal)
## 
##  studentized Breusch-Pagan test
## 
## data:  modeloLineal
## BP = 152.8, df = 1, p-value < 2.2e-16
ModeloAdaptado
## 
## Call:
## lm(formula = log(AnalisisPrecioVivienda) ~ log(AnalisisAreaVivienda), 
##     data = Data)
## 
## Coefficients:
##               (Intercept)  log(AnalisisAreaVivienda)  
##                    1.9189                     0.7802
bptest(ModeloAdaptado)
## 
##  studentized Breusch-Pagan test
## 
## data:  ModeloAdaptado
## BP = 65.105, df = 1, p-value = 7.101e-16

ANALISIS

Se observa gran mejoria en el segundo modelo despues de realizarce la transformacion sin embargo, en ninguno de los dos modelos se cumple el principio de homocedasticidades decir, es necesario adaptarse mas o cambiar de modelo, dado que sus BP aun son valores muy grandes y su p-value en ambos modelos son demasiado pequeños, dando indicio de lo anterior mencionado y asi mismo demostrando su rechazo a la hipotesis nula

PUNTO 10

Estime varios modelos y compare los resultados obtenidos. En el mejor de los modelos, ¿se cumplen los supuestos sobre los errores?

modelo1=lm(AnalisisPrecioVivienda ~ AnalisisAreaVivienda, data=Data)         
modelo2=lm(AnalisisPrecioVivienda ~ log(AnalisisAreaVivienda), data=Data)    
modelo3=lm(log(AnalisisPrecioVivienda) ~ AnalisisAreaVivienda, data=Data)   
modelo4=lm(log(AnalisisPrecioVivienda) ~ log(AnalisisAreaVivienda), data=Data)

dwtest(modelo1)
## 
##  Durbin-Watson test
## 
## data:  modelo1
## DW = 1.6713, p-value = 5.124e-12
## alternative hypothesis: true autocorrelation is greater than 0
dwtest(modelo2)
## 
##  Durbin-Watson test
## 
## data:  modelo2
## DW = 1.6908, p-value = 7.831e-11
## alternative hypothesis: true autocorrelation is greater than 0
dwtest(modelo3)
## 
##  Durbin-Watson test
## 
## data:  modelo3
## DW = 1.5006, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
dwtest(modelo4)
## 
##  Durbin-Watson test
## 
## data:  modelo4
## DW = 1.5104, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
stargazer(modelo1, modelo2, modelo3, modelo4, type="text", df=FALSE)
## 
## ================================================================================
##                                            Dependent variable:                  
##                           ------------------------------------------------------
##                             AnalisisPrecioVivienda    log(AnalisisPrecioVivienda)
##                               (1)           (2)            (3)          (4)     
## --------------------------------------------------------------------------------
## AnalisisAreaVivienda        1.803***                    0.007***                
##                             (0.037)                     (0.0002)                
##                                                                                 
## log(AnalisisAreaVivienda)                189.708***                   0.780***  
##                                           (3.641)                     (0.014)   
##                                                                                 
## Constant                   67.381***    -610.083***     4.724***      1.919***  
##                             (3.510)       (16.085)       (0.014)      (0.063)   
##                                                                                 
## --------------------------------------------------------------------------------
## Observations                 1,706         1,706          1,706        1,706    
## R2                           0.582         0.614          0.571        0.639    
## Adjusted R2                  0.582         0.614          0.571        0.638    
## Residual Std. Error          55.531        53.347         0.227        0.208    
## F Statistic               2,374.452***  2,715.248***  2,267.022***  3,012.086***
## ================================================================================
## Note:                                                *p<0.1; **p<0.05; ***p<0.01

ANALISIS

Se observa que el mejor modelo o el que mejor se adapta es el modelo 4, ya que su R2 y el ajuste de R2 es mayor al de los demas modelos, tambien cabe resaltar que su residual o el error es minimo en comparacion con los otros modelos y su F Statistic es el mas elevado y su autocorrelacion es positiva.

Por tal razon aunque no es el modelo mas optimo ya que posiblemente se puede mejorar mas, o probablemente haya un modelo distinto que se adapte mejor, en este caso, el modelo 4 seria la mejor opcion.