| Area_contruida | precio_millon | |
|---|---|---|
| Min. : 80.0 | Min. :240.0 | |
| 1st Qu.: 86.0 | 1st Qu.:251.2 | |
| Median : 97.0 | Median :305.0 | |
| Mean :115.7 | Mean :332.1 | |
| 3rd Qu.:130.0 | 3rd Qu.:395.0 | |
| Max. :195.0 | Max. :480.0 |
Se observa que la base de datos contiene información sobre el precio por millón en (COP) (y) el área Construida (x).
Se observa que el promedio de area construida es de 115.7 mt2, mientras que el promedio de precio es de 332.1 millones de COP.
correlacion = round(cor(Area_contruida,precio_millon),4)
correlacion
## [1] 0.919
ggplot(viviendas, aes(x=Area_contruida, y=precio_millon)) + geom_point(size=3, shape=16) + geom_smooth(method=lm, se=FALSE, colour="red") + ggtitle(paste("Gráfico area vs precios (correlación:",correlacion,")")) + labs(x = "Área Construida (m2)") + labs(y = "Precio Vivienda (COP)") + theme_linedraw()
Se observa que a mayor área construida el precio del inmueble incrementa y la relación es POSITIVA FUERTE de acuerdo con el coeficiente de correlación de Pearson (0,91).
mod=lm(precio_millon~Area_contruida,data=viviendas)
summary(mod)
##
## Call:
## lm(formula = precio_millon ~ Area_contruida, data = viviendas)
##
## 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
beta_0 = mod$coefficients[1]
beta_1 = mod$coefficients[2]
modelo = data.frame(beta_0, beta_1)
kbl(modelo,caption = "<center><strong>Coeficientes del Modelo
</strong></center>")%>% kable_paper(bootstrap_options = "striped")
| beta_0 | beta_1 | |
|---|---|---|
| (Intercept) | 86.23387 | 2.12397 |
El coeficiente \(\beta_0\) es: 86.234. Quiere decir que el punto de referencia o partida para el precio en la zona es de $86.234.000. Si embargo, para el caso de 0 (cero mt2) no nos dice mucho porque un area de cero metros cuadrados no tendría valor,
De otra parte, \(\beta_1\) es: 2.124, esto nos indica que por cada metro adicional de área construida se incrementan en $2.124.000 COP el precio del inmueble.
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
R_Squared = data.frame(summary(mod)$r.squared)
kbl(R_Squared, caption = "<center><strong>Ajuste R2
</strong></center>")%>% kable_paper(bootstrap_options = "striped")
| summary.mod..r.squared |
|---|
| 0.8446152 |
Se observa que el ajuste del modelo es de \(R^2=0.8446\) es decir que el modelo explica el 84,46% de la variabilidad de los precios.
area = 110
pred = beta_0 + (beta_1*area)
prediccion = data.frame(area, pred)
kbl(prediccion, caption = "<center><strong>Predicción
</strong></center>")%>% kable_paper(bootstrap_options = "striped")
| area | pred | |
|---|---|---|
| (Intercept) | 110 | 319.8706 |
X=c(Area_contruida,110,110)
Y=c(precio_millon,pred, 200)
Grupo = c(rep("Datos", 26), rep("Predicción", 2))
data= data.frame(X,Y, Grupo)
g1 =ggplot(data, aes(x=X, y=Y, color=Grupo)) + geom_point(size=3, shape=16) + geom_smooth(method=lm, se=FALSE, colour="red") + annotate(geom="text", x=116, y=215, label="200 - (Precio muy bajo)", color="black") + theme_linedraw()
plot = ggarrange(g1, ncol = 1, nrow = 1, common.legend =TRUE,legend="bottom")
## `geom_smooth()` using formula 'y ~ x'
## `geom_smooth()` using formula 'y ~ x'
annotate_figure(plot, top = text_grob(paste("Predicción de precio Area=100 "," Precio=", pred) ,color = "black", face = "bold", size = 12))
El precio promedio para un apartamento de 100 metros cuadrados sería de 319.8 millones COP.
Una oferta de 200 millones COP sería una mala oferta debido a que está 119.8 millones COP por debajo del pronostico.
predict(mod,list(Area_contruida=110),interval = "confidence",level = 0.95)
## fit lwr upr
## 1 319.8706 306.3133 333.4279
Verificando con intervalos de confianza al 95% se evidencia que la oferta está muy por debajo del precio esperado.
En la practica pueden existir factores adicionales que afecten el precio de un inmueble, tales cómo, embargos, mal estado del inmueble, inseguridad entre otros.
Podemos observar respecto a los supuestos sobre el error \(e_i\) lo siguiente:
a. Media cero
mean(mod$residuals)
## [1] -3.760347e-16
El valor es cero.
b. Normalidad
shapiro.test(mod$residuals)$p.value
## [1] 0.3009225
El resultado es mayor que 0.05 por lo cual se considera que se los residuos se distribuyen normalmente.
c. Variabilidad constante de los residuos (homocedasticidad):
bptest(mod)
##
## studentized Breusch-Pagan test
##
## data: mod
## BP = 5.8737, df = 1, p-value = 0.01537
El P-Value es menor a 0.05 por lo cual no cumplem el criterio en las variazas constantes.
d. No autocorrelación (Independencia):
dwt(mod, alternative = "two.sided")
## lag Autocorrelation D-W Statistic p-value
## 1 0.02511179 1.883052 0.782
## Alternative hypothesis: rho != 0
El P-Value es mayor a 0.05 por lo cual se consideran independientes
mod_ajustado=lm(precio_millon~log(Area_contruida), data=viviendas)
par(mfrow=c(2,2))
plot(mod_ajustado)
summary(mod_ajustado)$r.squared
## [1] 0.8962713
Este nuevo modelo explica el 89.6% de los resultados de precio.
summary(mod)
##
## Call:
## lm(formula = precio_millon ~ Area_contruida, data = viviendas)
##
## 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(mod_ajustado)
##
## Call:
## lm(formula = precio_millon ~ log(Area_contruida), data = viviendas)
##
## 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
mean(mod_ajustado$residuals)
## [1] 1.019484e-16
shapiro.test(mod_ajustado$residuals)$p.value
## [1] 0.5680068
bptest(mod_ajustado)
##
## studentized Breusch-Pagan test
##
## data: mod_ajustado
## BP = 5.8156, df = 1, p-value = 0.01588
dwt(mod_ajustado, alternative = "two.sided")
## lag Autocorrelation D-W Statistic p-value
## 1 0.0862521 1.736923 0.466
## Alternative hypothesis: rho != 0
El modelo mejora su ajuste pero aun no cumple el criterio c. Variabilidad constante de los residuos (homocedasticidad):