Preguntas

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

library(readxl)
library(ggplot2)
library(CGPfunctions)
## Warning: package 'CGPfunctions' was built under R version 4.1.2
viviendas = read_excel("G:/ACADEMIA/JAVERIANA CALI/1. SEMESTRE 2022-I/2. METODOS Y SIMULACION/datos_vivienda.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
  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.
attach(viviendas)
#Estadisticos descriptivos area construida
Prom_Area_contruida=mean(Area_contruida)
Desv_Area_contruida=sd(Area_contruida)
P25_Area_contruida=quantile(Area_contruida, prob=c(0.25))
P50_Area_contruida=quantile(Area_contruida, prob=c(0.50))
P75_Area_contruida=quantile(Area_contruida, prob=c(0.75))

data.frame(Prom_Area_contruida,Desv_Area_contruida,P25_Area_contruida,P50_Area_contruida,P75_Area_contruida)
##     Prom_Area_contruida Desv_Area_contruida P25_Area_contruida
## 25%            115.7469            35.54332                 86
##     P50_Area_contruida P75_Area_contruida
## 25%                 97                130
#Estadisticos descriptivos area construida
Prom_precio_millon=mean(precio_millon)
Desv_precio_millon=sd(precio_millon)
P25_precio_millon=quantile(precio_millon, prob=c(0.25))
P50_precio_millon=quantile(precio_millon, prob=c(0.50))
P75_precio_millon=quantile(precio_millon, prob=c(0.75))

data.frame(Prom_precio_millon,Desv_precio_millon,P25_precio_millon,P50_precio_millon,P75_precio_millon)
##     Prom_precio_millon Desv_precio_millon P25_precio_millon P50_precio_millon
## 25%           332.0769           82.14423            251.25               305
##     P75_precio_millon
## 25%               395
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 = 'ivory',main="Area Construida",ylab='metros cuadrados')
boxplot(precio_millon,col = 'ivory',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=250,main = 'precio vs area construida')

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

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

#B0 indica el precio base de los inmuebles con un minimo de 86.236 millones #B1 indida que por cada metro cuadrado el precio incrementa en 2.124

  1. 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 hipotesis t.
#Intervalo de confianza y se evidencia que el coeficiente es diferente a cero.
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
  1. Calcule e interprete el indicador de bondad y ajuste R2.
r.squared=summary(mod)$r.squared
print(paste("La metrica de Bondad y ajuste para este modelo es:", r.squared))
## [1] "La metrica de Bondad y ajuste para este modelo es: 0.844615168561367"
#Lo cual evidencia una explicación de la varianza del precio en funcion del area en un 84.46%
  1. 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?.

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

#Una oferta de 200M estaria muy por debajo del precio estimado . #Se podrian agregar variables a la estimación como las caracteristicas de la vivienda.

  1. Realice la validación de supuestos del modelo por medio de graficos apropiados, interpretarlos y sugerir posibles soluciones si se violan algunos de ellos.
par(mfrow=c(2,2))
plot(mod)

#se requiere una transformacion para lograr que los supuestos se cumplan satisfactoriamente.
qqnorm(mod$residuals)
qqline(mod$residuals)

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

#Se confirma normalidad en los residuales

ggplot(data = viviendas, aes(mod$fitted.values, mod$residuals)) +
geom_point() +
geom_smooth(color = "firebrick", se = FALSE) +
geom_hline(yintercept = 0) +
theme_bw()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

library(lmtest)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
bptest(mod)
## 
##  studentized Breusch-Pagan test
## 
## data:  mod
## BP = 5.8737, df = 1, p-value = 0.01537

#Evidencias de falta de homocedasticidad.

No se presenta necesidad de realizar algun tipo de transformación.