Este informe presenta un análisis detallado de los precios de las viviendas y su relación con el área construida en el mercado inmobiliario. El análisis se basa en datos recopilados del portal Fincaraiz para apartamento de estrato 4 con área construida menor a 200 m 2 y tiene como objetivo proporcionar información clave para la toma de decisiones.
1.1 Datos Faltantes
Se realizó una verificación de datos faltantes en los registros y se determinó que no hay valores faltantes en las variables analizadas.
1.2 Distribución de Variables
Se realizaron histogramas para visualizar la distribución de las variables precio y área construida. Ambas variables muestran distribuciones prácticamente idénticas, lo que sugiere una correlación potencial entre ellas.
2.1 Correlación
Se calculó la correlación entre el precio de las viviendas y el área construida, y se encontró una correlación positiva fuerte de 0.76. Esto indica que a medida que aumenta el área construida, el precio tiende a aumentar.
2.2 Modelo de Regresión Lineal Simple
Se estimó un modelo de regresión lineal simple entre el precio y el área construida. El modelo resultante es:
Precio = 1.8 * ÁreaConstruida + ε El coeficiente de regresión β1 es positivo (1.8), lo que sugiere que un aumento en el área construida se asocia con un aumento en el precio. El R-cuadrado indica que el modelo explica una cantidad significativa de la variabilidad en los precios.
2.3 Prueba de Hipótesis y Diagnóstico de Errores
Se ajustó un modelo transformado utilizando el logaritmo de las variables. El modelo transformado mejoró ligeramente el ajuste a los datos y cumplió con algunos supuestos.
data("vivienda4")
# revision de datos faltantes
faltantes <- colSums(is.na(vivienda4))
faltantes
## zona estrato preciom areaconst tipo
## 0 0 0 0 0
summary(vivienda4$preciom)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 78.0 160.0 210.0 225.4 265.0 760.0
summary(vivienda4$areaconst)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 40.00 60.00 75.00 87.63 98.00 200.00
hist(vivienda4$preciom, main = "Histograma del Precio de Vivienda", xlab = "Precio (millones de pesos COP)", col = "lightblue")
hist(vivienda4$areaconst, main = "Histograma del Área de la Vivienda", xlab = "Área (metros cuadrados)", col = "lightgreen")
No hay valores faltantes es ninguna variable, notamos que las distribuciones de ambas variables son prácticamente idénticas, lo cual puede ser un buen indicativo de correlación.
cor(vivienda4$areaconst, vivienda4$preciom)
## [1] 0.7630166
modelo1 <- lm(preciom ~ areaconst, data = vivienda4)
plot(vivienda4$areaconst, vivienda4$preciom,
main = "Diagrama de Dispersión: Precio vs. Área Construida",
xlab = "Área Construida (metros cuadrados)",
ylab = "Precio (millones de pesos COP)",
col = "blue")
abline(modelo1, col = "red")
summary(modelo1)
##
## Call:
## lm(formula = preciom ~ areaconst, data = vivienda4)
##
## 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 ***
## areaconst 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
print(cor(vivienda4$preciom,vivienda4$areaconst))
## [1] 0.7630166
El diagrama de dispersión, da una clara tendencia al alza, es decir, entre más área de construcción, podemos decir, en base a la gráfica, que el precio aumentara también, teniendo una correlación de ambas variables de 0.7630166, confirmamos la correlación positiva entre ambas variables.
modelo1 <- lm(preciom ~ areaconst, data = vivienda4)
summary(modelo1)
##
## Call:
## lm(formula = preciom ~ areaconst, data = vivienda4)
##
## 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 ***
## areaconst 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
u = modelo1$residuals
al tener el coeficiente \(\beta_1\) positivo es un indicativo que la variable aporta positivamente a la regresión lineal, es decir, al precio final, sin embargo, entre más grande ese número, significa que aporta mayor cantidad a l precio la variable, así que con un valor de 1.8 podemos decir que su aporte es positivo, pero no excesivamente grande.
modelo1 <- lm(preciom ~ areaconst, data = vivienda4)
conf_int <- confint(modelo1, level = 0.95)
conf_int
## 2.5 % 97.5 %
## (Intercept) 60.496208 74.265055
## areaconst 1.730404 1.875547
\[H_0: \beta_1 = 0 \quad\quad, H_1: \beta_1 \neq 0\]
prueba_t <- shapiro.test(u)
prueba_t
##
## Shapiro-Wilk normality test
##
## data: u
## W = 0.92671, p-value < 2.2e-16
La prueba de hipótesis arrojo un pvalor menor al 0.05 por lo tanto tenemos evidencia para rechazar la hipótesis de que el coeficiente beta es igual a 0. No se presenta normalidad de los errores.
lmtest::bptest(modelo1)
##
## studentized Breusch-Pagan test
##
## data: modelo1
## BP = 152.8, df = 1, p-value < 2.2e-16
La varianza de los errores no es constante, los errores tienen varianza.
lmtest::dwtest(modelo1)
##
## Durbin-Watson test
##
## data: modelo1
## DW = 1.6713, p-value = 5.124e-12
## alternative hypothesis: true autocorrelation is greater than 0
Los errores no son independientes
summary(modelo1)$r.squared
## [1] 0.5821944
Teniendo en cuenta que el valor esta más cercano a 1 que a 0, podemos establecer que nuestro modelo se ajusta medianamente bien a los datos.
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(modelo1, data.frame(areaconst=110), interval = "confidence")
## fit lwr upr
## 1 265.7079 262.6113 268.8046
(262.6113 , 268.8046): El precio promedio estimado para un apartamento de 110 metros cuadrados, según el modelo de regresión lineal simple, es de 265.7079 millones de pesos COP. Esto significa que, en promedio, un apartamento de 110 metros cuadrados en esa zona se vendería por aproximadamente 265.7 millones de pesos.
Tendría en cuenta:
Comparación de precios: El precio propuesto de 200 millones de pesos COP es significativamente más bajo que el precio estimado por el modelo (265.7 millones de pesos COP). Esto podría considerarse una oferta atractiva en términos de precio.
Contexto del mercado: Asegúrate de comprender el mercado inmobiliario en esa zona. Puede haber diversas razones por las que un vendedor podría ofrecer un precio más bajo, como una necesidad de venta rápida, condiciones del inmueble, competencia en la zona, entre otros.
Condición y características del apartamento: Además del precio, es importante considerar las condiciones y características específicas del apartamento en cuestión. ¿Está en buen estado? ¿Tiene características adicionales que lo hacen más atractivo?
Negociación y evaluación de riesgos: Si estás interesado en la oferta, es fundamental realizar una inspección detallada del apartamento y, si es posible, obtener una tasación independiente. También puedes considerar la posibilidad de negociar el precio.
plot(modelo1)
Los gráficos se ajustan bastante bien a lo suponemos del modelo que se ajusta medianamente bien a los datos.
modelo2 <- lm(log(preciom) ~ areaconst, data = vivienda4)
summary(modelo2)
##
## Call:
## lm(formula = log(preciom) ~ areaconst, data = vivienda4)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.80097 -0.16347 -0.02737 0.16610 1.14818
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.7238296 0.0143492 329.21 <2e-16 ***
## areaconst 0.0072020 0.0001513 47.61 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.227 on 1704 degrees of freedom
## Multiple R-squared: 0.5709, Adjusted R-squared: 0.5706
## F-statistic: 2267 on 1 and 1704 DF, p-value: < 2.2e-16
plot(modelo1)
plot(modelo2)
Las gráficas son bastante parecidas entre sí.
summary(modelo1)$r.squared
## [1] 0.5821944
summary(modelo2)$r.squared
## [1] 0.5708913
El \(R^2\) con la transformación, nos da un mejor ajuste a los datos, aunque la variación es poca
shapiro.test(modelo2$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo2$residuals
## W = 0.99287, p-value = 2.395e-07
Ambos modelos rechazan la hipótesis de nulidad en el \(\beta_1\)
modelo3 <- lm(preciom ~ log(areaconst), data = vivienda4)
modelo4 <- lm(log(preciom) ~ log(areaconst), data = vivienda4)
library(stargazer)
##
## Please cite as:
## Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
## R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
stargazer(modelo1, modelo2, modelo3, modelo4, type = "text", df=FALSE)
##
## =======================================================================
## Dependent variable:
## ---------------------------------------------------
## preciom log(preciom) preciom log(preciom)
## (1) (2) (3) (4)
## -----------------------------------------------------------------------
## areaconst 1.803*** 0.007***
## (0.037) (0.0002)
##
## log(areaconst) 189.708*** 0.780***
## (3.641) (0.014)
##
## Constant 67.381*** 4.724*** -610.083*** 1.919***
## (3.510) (0.014) (16.085) (0.063)
##
## -----------------------------------------------------------------------
## Observations 1,706 1,706 1,706 1,706
## R2 0.582 0.571 0.614 0.639
## Adjusted R2 0.582 0.571 0.614 0.638
## Residual Std. Error 55.531 0.227 53.347 0.208
## F Statistic 2,374.452*** 2,267.022*** 2,715.248*** 3,012.086***
## =======================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
modelo3 <- lm(preciom ~ log(areaconst), data = vivienda4)
summary(modelo3)
##
## Call:
## lm(formula = preciom ~ log(areaconst), data = vivienda4)
##
## Residuals:
## Min 1Q Median 3Q Max
## -192.72 -27.27 -3.56 23.58 419.52
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -610.083 16.085 -37.93 <2e-16 ***
## log(areaconst) 189.708 3.641 52.11 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 53.35 on 1704 degrees of freedom
## Multiple R-squared: 0.6144, Adjusted R-squared: 0.6142
## F-statistic: 2715 on 1 and 1704 DF, p-value: < 2.2e-16
u = modelo3$residuals
shapiro.test(u)
##
## Shapiro-Wilk normality test
##
## data: u
## W = 0.91387, p-value < 2.2e-16
lmtest::bptest(modelo3)
##
## studentized Breusch-Pagan test
##
## data: modelo3
## BP = 146.29, df = 1, p-value < 2.2e-16
lmtest::dwtest(modelo3)
##
## Durbin-Watson test
##
## data: modelo3
## DW = 1.6908, p-value = 7.831e-11
## alternative hypothesis: true autocorrelation is greater than 0
No se presenta normalida de los errores
La varianza de los errores no es constante en todas las observaciones, los errores tienen varianza.
Los errores no son independientes.
modelo4 <- lm(log(preciom) ~ log(areaconst), data = vivienda4)
summary(modelo4)
##
## Call:
## lm(formula = log(preciom) ~ log(areaconst), data = vivienda4)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.85459 -0.13422 -0.00746 0.13797 1.10104
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.91891 0.06281 30.55 <2e-16 ***
## log(areaconst) 0.78022 0.01422 54.88 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2083 on 1704 degrees of freedom
## Multiple R-squared: 0.6387, Adjusted R-squared: 0.6385
## F-statistic: 3012 on 1 and 1704 DF, p-value: < 2.2e-16
u = modelo4$residuals
shapiro.test(u)
##
## Shapiro-Wilk normality test
##
## data: u
## W = 0.9934, p-value = 6.631e-07
lmtest::bptest(modelo4)
##
## studentized Breusch-Pagan test
##
## data: modelo4
## BP = 65.105, df = 1, p-value = 7.101e-16
lmtest::dwtest(modelo4)
##
## Durbin-Watson test
##
## data: modelo4
## DW = 1.5104, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
Dado que el valor p es extremadamente pequeño (p-value = 6.631e-07), se rechaza la hipótesis nula en favor de la hipótesis alternativa. Esto sugiere que los errores no siguen una distribución normal.
La varianza de los errores no es constante en todas las observaciones, los errores tienen varianza, pero no es constante
Los errores no son independientes