##Con base en los datos de ofertas de vivienda:
##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)
datos_vivienda <- read_excel("~/datos_vivienda.xlsx")
View(datos_vivienda)
promedio=mean(datos_vivienda$precio_millon)
mediana=median(datos_vivienda$precio_millon)
minimo=min(datos_vivienda$precio_millon)
maximo=max(datos_vivienda$precio_millon)
desviacion = sd(datos_vivienda$precio_millon)
data.frame(promedio,mediana,minimo,maximo,desviacion)
## promedio mediana minimo maximo desviacion
## 1 332.0769 305 240 480 82.14423
table1=table(datos_vivienda$precio_millon,datos_vivienda$Area_contruida)
prop.table(table(datos_vivienda$precio_millon))*100
##
## 240 250 255 260 268 272 290 320
## 15.384615 11.538462 3.846154 3.846154 3.846154 3.846154 7.692308 3.846154
## 385 395 410 419 430 450 480
## 15.384615 7.692308 3.846154 3.846154 3.846154 7.692308 3.846154
hist(datos_vivienda$precio_millon, xlab = "Precio Millones de Pesos COP", ylab = "Frecuencia", main = "Histograma de Precios",)
abline(v=mean(datos_vivienda$precio_millon),col="red",lwd=4)
boxplot(datos_vivienda$precio_millon,col = "red")
##Del precio de vivienda podemos inferir que el valor medio de la vivienda es de 305 millones, con algunos valores que se encuentran en un rango de los 240 a 480 millones. El valor de mayor frecuencia se concentra un 26,8% entre los 240-250 millones. Se identifica que los datos son asimétricos y presentan una desviación del 82%.
promedio=mean(datos_vivienda$Area_contruida)
mediana=median(datos_vivienda$Area_contruida)
minimo=min(datos_vivienda$Area_contruida)
maximo=max(datos_vivienda$Area_contruida)
desviacion = sd(datos_vivienda$Area_contruida)
data.frame(promedio,mediana,minimo,maximo,desviacion)
## promedio mediana minimo maximo desviacion
## 1 115.7469 97 80 195 35.54332
table2=table(datos_vivienda$precio_millon,datos_vivienda$Area_contruida)
prop.table(table(datos_vivienda$Area_contruida))*100
##
## 80 85 86 87 89 96 98 118
## 3.846154 7.692308 19.230769 7.692308 3.846154 7.692308 3.846154 3.846154
## 118.42 130 134 170 181 195
## 3.846154 15.384615 3.846154 11.538462 3.846154 3.846154
hist(datos_vivienda$Area_contruida, xlab = "Área construida por vivienda", ylab = "Frecuencia", main = "Histograma de Área construida",)
abline(v=mean(datos_vivienda$Area_contruida),col="red",lwd=5)
boxplot(datos_vivienda$Area_contruida,col = "red")
##Del área construida se encuentra que el valor medio es de 97 metros cuadramos, con algunos valores que se encuentran en un rango de los 80 a 195 metros cuadrasdos. Algunos de los valores de mayor frecuencia son: 86 metros cuadrados con el 19%, y 130 metros cuadrados con el 15%. Se identifica que los datos son asimétricos y presentan una desviación del 35%.
##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(datos_vivienda$precio_millon,datos_vivienda$Area_contruida)
## [1] 0.9190295
plot(datos_vivienda$Area_contruida, datos_vivienda$precio_millon, pch=17)
##Existe correlación entre las variables, el coeficiente observado es del 0,9190295 valor que confirma la fuerte dependencia entre las variables a medida que aumenta el área, el crecimiento del valor en millones es proporcional a esta.
##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.
mod=lm(datos_vivienda$precio_millon~datos_vivienda$Area_contruida)
summary(mod)
##
## Call:
## lm(formula = datos_vivienda$precio_millon ~ datos_vivienda$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 ***
## datos_vivienda$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 modelo de regresión lineal nos permite identificar que para el coeficiente de B0 el área mínima construida es de 86 metros y se estima que el valor por metro cuadrado aumente proporcionalmente en 2.124 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.
confint(object=mod, level=0.95)
## 2.5 % 97.5 %
## (Intercept) 39.83983 132.627917
## datos_vivienda$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
##5. Calcule e interprete el indicador de bondad y ajuste R2.
s=summary(mod)
s$r.squared
## [1] 0.8446152
##Se confirma que el grado de correlación entre las variables es del 84%, lo que explica la varianza del costo en función del tamaño de la vivienda.
##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?.
Nuevo_precio = 86.234 + (2.124*110);Nuevo_precio
## [1] 319.874
##El precio promedio del apartamento de 110 metros cuadrados es de 319 millones de pesos valor que se encuentra cercano a la media de valor de vivienda. Para que una vivienda de esta área se encuentre en un valor por debajo de la media, se deben considerar los aspectos que llevan a que este sea el valor, dado que no es normal encontrar un inmueble infravalorado a menos que existan otras variables que influyen en este valor como el tiempo de construcción del inmueble, el estado financiero (hipotecas), entre otros.
##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.
par(mfrow=c(2,2))
plot(mod)
##los datos presentan una relación no necesariamente lineal que requiere ajusste, dado que algunos valores se salen de la recta.
##8. De ser necesario realice una transformación apropiada para mejorar el ajuste y supuestos del modelo.
modelo_Cuadratico <-lm(precio_millon~Area_contruida + I(Area_contruida^2), data= datos_vivienda)
summary(modelo_Cuadratico)
##
## Call:
## lm(formula = precio_millon ~ Area_contruida + I(Area_contruida^2),
## data = datos_vivienda)
##
## Residuals:
## Min 1Q Median 3Q Max
## -34.927 -14.471 -3.777 16.504 35.073
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.949e+02 6.648e+01 -4.435 0.00019 ***
## Area_contruida 8.488e+00 1.090e+00 7.787 6.80e-08 ***
## I(Area_contruida^2) -2.433e-02 4.142e-03 -5.874 5.49e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 21.35 on 23 degrees of freedom
## Multiple R-squared: 0.9378, Adjusted R-squared: 0.9324
## F-statistic: 173.5 on 2 and 23 DF, p-value: 1.332e-14
par(mfrow=c(2,2))
plot(modelo_Cuadratico)
##9. De ser necesario compare el ajuste y supuestos del modelo inicial y el transformado.
s=summary(modelo_Cuadratico)
s$r.squared
## [1] 0.9378497
confint(object=modelo_Cuadratico, level=0.95)
## 2.5 % 97.5 %
## (Intercept) -432.38485888 -157.32342703
## Area_contruida 6.23311538 10.74319932
## I(Area_contruida^2) -0.03290164 -0.01576314
t.test(modelo_Cuadratico$coefficients,mu=0)
##
## One Sample t-test
##
## data: modelo_Cuadratico$coefficients
## t = -0.95726, df = 2, p-value = 0.4395
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -524.5482 333.6213
## sample estimates:
## mean of x
## -95.46344
##La suma de cuadrados del error permite que el modelo tenga un mejor ajuste. Sin embargo, los datos de referencia son similares al modelo inicial, para 86 metros como valor base, el incremento por metro es de 2.124 millones.
b1_opt=sum(datos_vivienda$precio_millon*(datos_vivienda$Area_contruida-mean (datos_vivienda$Area_contruida)))/sum((datos_vivienda$Area_contruida-mean(datos_vivienda$Area_contruida))^2)
b0_opt=mean(datos_vivienda$precio_millon)-(b1_opt*mean(datos_vivienda$Area_contruida))
data.frame(b0_opt, b1_opt)
## b0_opt b1_opt
## 1 86.23387 2.12397