En el mercado inmobiliario actual, la tasación precisa de los inmuebles es crucial para el éxito de las transacciones, tanto para compradores como para vendedores. La inmobiliaria A&C, consciente de esto, busca desarrollar un modelo robusto que le permita orientar sus decisiones de precios en la negociación de apartamentos de estrato 4 con área construida menor a 200 metros cuadrados.
Para lograr este objetivo, se propone un enfoque basado en ciencia de datos, siguiendo una serie de pasos cuidadosamente diseñados para analizar los datos de ofertas de vivienda obtenidos del portal Fincaraiz.
Se validarán los supuestos del modelo mediante gráficos y pruebas de hipótesis, y se explorarán transformaciones de variables si es necesario. Se compararán diferentes modelos, seleccionando el que mejor se ajuste a los datos y cumpla con los supuestos establecidos.
Finalmente, se compararán diferentes modelos de regresión lineal simple, seleccionando el que mejor se ajuste a los datos y cumpla con los supuestos establecidos. El modelo seleccionado permitirá a A&C tomar decisiones informadas sobre los precios de los inmuebles, optimizando sus resultados en el mercado inmobiliario.
## Skipping install of 'paqueteMETODOS' from a github remote, the SHA1 (69a119e2) has not changed since last install.
## Use `force = TRUE` to force installation
## Loading required package: cubature
## Loading required package: dplyr
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Loading required package: flextable
## Loading required package: ggplot2
## Loading required package: lmtest
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: MASS
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
## Loading required package: psych
##
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
## Loading required package: summarytools
## Loading required package: randtests
## Loading required package: rapportools
##
## Attaching package: 'rapportools'
## The following objects are masked from 'package:summarytools':
##
## label, label<-
## The following object is masked from 'package:dplyr':
##
## n
## The following objects are masked from 'package:stats':
##
## IQR, median, sd, var
## The following objects are masked from 'package:base':
##
## max, mean, min, range, sum
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
## zona estrato preciom areaconst tipo
## 0 0 0 0 0
## [1] "Zona Centro" "Zona Norte" "Zona Oeste" "Zona Oriente" "Zona Sur"
## [1] "3" "4" "5" "6"
## [1] "Apartamento" "Casa"
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 207.4 230.7 238.8 243.7 251.5 309.7
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 40.00 60.00 75.00 87.63 98.00 200.00
# Histogramas de las variables numéricas
hist(vivienda4$preciom, main = "Histograma de Precios", xlab = "Precio")hist(vivienda4$areaconst, main = "Histograma de Área de Construcción", xlab = "Área de Construcción")con este primer acercamiento se puede concluir:
los precios de las viviendas van desde 207.4 millones de pesos hasta un máximo de 309.7 millones de pesos. con una mediana de 238.8 millones de pesos y una media de 243.7 millones de pesos. En cuanto a la distribución de los datos se evidencia que es simétrica sesgada a la izquierda.
las áreas de las viviendas van desde 40 metros cuadrados hasta un máximo de 200 metros cuadrados. con una mediana de 75 metros cuadrados y una media de 87 metros cuadrados. En cuanto a la distribución de los datos se evidencia que es simétrica sesgada a la izquierda, pero con una mayor dispersión que los datos de la variable precios.
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 (área construida) - incluir gráficos e indicadores apropiados interpretados.
# histograma apilado de precio y área de construcción para detectar valores atípicos
library(ggplot2)
ggplot(vivienda4, aes(x = areaconst, fill = cut(preciom, breaks = 20))) +
geom_histogram(position = "stack", bins = 30) +
labs(x = "Área", y = "Frecuencia", fill = "Precio") +
ggtitle("Histograma Apilado de Precio y Área")# Correlación entre precio y área de construcción
correlación <- cor(vivienda4$preciom, vivienda4$areaconst)
print(correlación)## [1] 0.9309803
# Gráfico de dispersión con línea de regresión
plot(vivienda4$areaconst, vivienda4$preciom, main = "Precio vs. Área", xlab = "Área", ylab = "Precio")
abline(lm(preciom ~ areaconst, data = vivienda4), col = "red")Al comparar las variables precio y area se puede concluir que:
El histograma apilado de precio y área se puede evidenciar como a medida que el área (Eje X) va en aumento, los precios que están agrupados por escala de colores van aumentando. Adicional se evidencia que la mayoría de las viviendas ofrecidas se encuentran en el rango de los 50 a los 100 metros cuadrados.
El valor de correlación es igual a 0.9309803 lo cual implica que hay una relación lineal positiva fuerte entre las variables. Esto significa que a medida que aumenta el area de la vivienda, es probable que también aumente el precio de la vivienda, y viceversa. En otras palabras, las dos variables se mueven en la misma dirección. Esta información se ve perfectamente representada en el gráfico de dispersión con línea de regresión lineal.
Estime el modelo de regresión lineal simple entre precio=f(area)+ε. Interprete los coeficientes del modelo β₀,β₁ en caso de ser correcto.
# Estimar el modelo de regresión lineal simple
modelo <- lm(preciom ~ areaconst, data = vivienda4)
summary(modelo)##
## Call:
## lm(formula = preciom ~ areaconst, data = vivienda4)
##
## Residuals:
## Min 1Q Median 3Q Max
## -26.5997 -5.0198 -0.0056 4.6648 24.4010
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.998e+02 4.514e-01 442.7 <2e-16 ***
## areaconst 5.009e-01 4.758e-03 105.3 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.141 on 1704 degrees of freedom
## Multiple R-squared: 0.8667, Adjusted R-squared: 0.8666
## F-statistic: 1.108e+04 on 1 and 1704 DF, p-value: < 2.2e-16
Residuos: Los residuos tienen una distribución que va desde -26.5997 hasta 24.4010, con una mediana de -0.0056 y una desviación estándar de aproximadamente 7.141. Estos valores indican la dispersión de los errores de predicción alrededor de la línea de regresión.
Coeficientes: El intercepto (β₀) tiene un valor estimado de 199.8 (1.998e+02) con un error estándar de 0.4514. El valor t para el intercepto es muy alto (442.7), lo que indica que el intercepto es estadísticamente significativo. Esto significa que, en el modelo, cuando “areaconst” es igual a cero, se espera que el precio (preciom) sea de aproximadamente 199.8 unidades monetarias.
El coeficiente de “areaconst” (β₁) tiene un valor estimado de 0.5019 (5.009e-01) con un error estándar de 0.004758. El valor t para “areaconst” es también muy alto (105.3), lo que indica que el coeficiente es estadísticamente significativo. Esto significa que, en promedio, se espera que el precio aumente en 0.5019 unidades monetarias por cada unidad adicional de área de construcción.
Multiple R-squared (R cuadrado múltiple): El R cuadrado múltiple es de aproximadamente 0.8667, lo que indica que alrededor del 86.67% de la variabilidad en “preciom” puede ser explicada por la variable independiente “areaconst” en el modelo.
Adjusted R-squared (R cuadrado ajustado): El R cuadrado ajustado es de aproximadamente 0.8666.
F-statistic (Estadístico F): El valor del estadístico F es muy alto (1.108e+04) y el p-valor asociado es prácticamente cero, lo que indica que el modelo en general es significativo.
Conclusión: el modelo de regresión lineal simple muestra que tanto el intercepto como la variable “areaconst” son estadísticamente significativos en la predicción del precio de las viviendas.
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.
# Construir un intervalo de confianza del 95% para el coeficiente beta1
intervalo_confianza <- confint(modelo)[2, ]
print(intervalo_confianza)## 2.5 % 97.5 %
## 0.4915592 0.5102243
# Realizar una prueba de hipótesis t
prueba_t <- t.test(vivienda4$preciom, vivienda4$areaconst)
print(prueba_t)##
## Welch Two Sample t-test
##
## data: vivienda4$preciom and vivienda4$areaconst
## t = 156.19, df = 2615.8, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 154.1141 158.0329
## sample estimates:
## mean of x mean of y
## 243.70306 87.62954
Intervalo de confianza para el coeficiente β1: El intervalo de confianza del 95% para el coeficiente β1 es [0.4915592, 0.5102243]. Esto significa que con un nivel de confianza del 95%, se espera que el verdadero valor del coeficiente β1 esté dentro de este rango. Dado que este intervalo no incluye el valor cero, sugiere que el coeficiente β1 es significativamente diferente de cero.
Resultados de la prueba t: La prueba t muestra un valor t de 156.19 con un número de grados de libertad (df) aproximado de 2615.8. El p-valor asociado es prácticamente cero (p-value < 2.2e-16), lo que indica que hay evidencia significativa para rechazar la hipótesis nula de que la diferencia en las medias de “preciom” entre los dos grupos definidos por “areaconst” es igual a cero. En otras palabras, esto sugiere que hay una diferencia significativa en los precios promedio de las viviendas entre los diferentes niveles de “areaconst”.
Conclusión: tanto el intervalo de confianza como la prueba t proporcionan evidencia de que el coeficiente β1 es significativamente diferente de cero, lo que sugiere que el tamaño de la vivienda tiene un efecto significativo en el precio de las viviendas.
Calcule e interprete el indicador de bondad R2.
## [1] 0.8667242
¿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?.
# Predicción del precio para un apartamento de 110 metros cuadrados
area_apartamento <- 110
precio_predicho <- predict(modelo, data.frame(areaconst = area_apartamento))
print(precio_predicho)## 1
## 254.9082
# Comparar con el precio dado de 200
precio_dado <- 200
if (precio_predicho < precio_dado) {
print("La oferta es atractiva.")
} else {
print("La oferta no es atractiva.")
}## [1] "La oferta no es atractiva."
La oferta está por debajo del precio estimado: La oferta dada de 200 millones está por debajo del precio estimado de 254 millones. Esto sugiere que, según el modelo de regresión lineal utilizado, el precio dado es más bajo de lo que se esperaría para un apartamento de 110 metros cuadrados en esa zona.
La oferta puede ser una oportunidad de negociación: Aunque la oferta no es atractiva según la comparación directa con el precio estimado, puede presentar una oportunidad de negociación. Es posible que el vendedor esté dispuesto a reducir el precio o considerar otros términos más favorables en la transacción.
Consideraciones adicionales: Además del precio, es importante considerar otros factores, como el estado y las características específicas del apartamento, las tendencias del mercado inmobiliario en la zona, y la situación financiera del comprador, entre otros. Estos factores pueden influir en la evaluación general de la oferta y en la decisión final de compra.
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.
# Gráficos de diagnóstico
par(mfrow = c(2, 2)) # Organiza los gráficos en una matriz de 2x2
# Gráfico de residuos estandarizados vs valores ajustados
plot(modelo, which = 1)
# Gráfico de residuos estandarizados vs valores ajustados
plot(modelo, which = 3)
# Histograma de los residuos
hist(resid(modelo), main = "Histograma de Residuos", xlab = "Residuos")
# Gráfico Q-Q plot de los residuos
qqnorm(resid(modelo))
qqline(resid(modelo))# Pruebas de hipótesis
# Prueba de Breusch-Pagan para homocedasticidad
library(lmtest)
bptest(modelo)##
## studentized Breusch-Pagan test
##
## data: modelo
## BP = 0.089882, df = 1, p-value = 0.7643
##
## Shapiro-Wilk normality test
##
## data: resid(modelo)
## W = 0.99911, p-value = 0.5907
los graficos “Residual vs Fitted” y “Scale-Location” muestran que no existe violación en ninguno de los supuestos.
De acuerdo con la curva que se evidencia en el histograma y como los puntos en el gráfico se ajustan bien a la línea diagonal el grafico “Normal Q-Q Plot”, sugiere que los residuos siguen una distribución normal.
Homocedasticidad: La prueba de Breusch-Pagan para la homocedasticidad arroja un valor p de 0.7643. Como este valor p es mayor que el nivel de significancia típico (como 0.05), no hay suficiente evidencia para rechazar la hipótesis nula de homocedasticidad. Esto sugiere que los residuos tienen una varianza constante a lo largo de los valores ajustados y, por lo tanto, el supuesto de homocedasticidad se mantiene.
Normalidad de los residuos: La prueba de Shapiro-Wilk para la normalidad de los residuos arroja un valor p de 0.5907. Dado que este valor p es mayor que el nivel de significancia típico (como 0.05), no hay suficiente evidencia para rechazar la hipótesis nula de normalidad. Esto sugiere que los residuos siguen una distribución normal y, por lo tanto, el supuesto de normalidad de los residuos se mantiene.
De ser necesario realice una transformación apropiada para mejorar el ajuste y supuestos del modelo.
Estime varios modelos y compare los resultados obtenidos. En el mejor de los modelos, ¿se cumplen los supuestos sobre los errores?
# Modelo original
modelo_original <- lm(preciom ~ areaconst, data = vivienda4)
# Modelo con transformación logarítmica
modelo_log <- lm(log(preciom) ~ areaconst, data = vivienda4)
# Modelo con transformación raíz cuadrada
modelo_sqrt <- lm(sqrt(preciom) ~ areaconst, data = vivienda4)
# Comparación de modelos
resumen_modelo_original <- summary(modelo_original)
resumen_modelo_log <- summary(modelo_log)
resumen_modelo_sqrt <- summary(modelo_sqrt)
# Imprimir resultados
print("Modelo original:")## [1] "Modelo original:"
## [1] 0.8667242
## [1] "Modelo con transformación logarítmica:"
## [1] 0.8519165
## [1] "Modelo con transformación raíz cuadrada:"
## [1] 0.8598879
# Prueba de Breusch-Pagan para homocedasticidad del mejor modelo
library(lmtest)
bp_test <- bptest(modelo_original)
print(bp_test)##
## studentized Breusch-Pagan test
##
## data: modelo_original
## BP = 0.089882, df = 1, p-value = 0.7643
# Prueba de Shapiro-Wilk para normalidad de los residuos
shapiro_test <- shapiro.test(resid(modelo_original))
print(shapiro_test)##
## Shapiro-Wilk normality test
##
## data: resid(modelo_original)
## W = 0.99911, p-value = 0.5907
Modelo original: El coeficiente de determinación (R2) del modelo original es de aproximadamente 0.867. Esto significa que alrededor del 86.7% de la variabilidad en el precio de las viviendas puede ser explicada por el tamaño de construcción utilizando el modelo original.
Modelo con transformación logarítmica: El coeficiente de determinación (R2) del modelo con transformación logarítmica es de aproximadamente 0.852.Esto significa que alrededor del 85.2% de la variabilidad en el logaritmo del precio de las viviendas puede ser explicada por el tamaño de construcción utilizando este modelo alternativo.
Modelo con transformación raíz cuadrada: El coeficiente de determinación (R2) del modelo con transformación raíz cuadrada es de aproximadamente 0.860.Esto significa que alrededor del 86.0% de la variabilidad en la raíz cuadrada del precio de las viviendas puede ser explicada por el tamaño de construcción utilizando este modelo alternativo.
Conclusión: basándonos únicamente en los coeficientes de determinación (R2), podríamos concluir que el modelo original proporciona el mejor ajuste a los datos, ya que tiene el coeficiente de determinación más alto.
En el mejor de los modelos, ¿se cumplen los supuestos sobre los errores?
El grafico “Residual vs Fitted” muestra que no existe violación en ninguno de los supuestos.
El grafico Normal Q-Q Plot como los puntos en el gráfico se ajustan bien a la línea diagonal, esto sugiere que los residuos siguen una distribución normal.
Homocedasticidad: La prueba de Breusch-Pagan para la homocedasticidad arroja un valor p de 0.7643. Dado que este valor p es mayor que el nivel de significancia típico (como 0.05), no hay suficiente evidencia para rechazar la hipótesis nula de homocedasticidad. Esto sugiere que los residuos tienen una varianza constante a lo largo de los valores ajustados, por lo que el supuesto de homocedasticidad parece cumplirse.
Normalidad de los residuos: La prueba de Shapiro-Wilk para la normalidad de los residuos arroja un valor p de 0.5907. Dado que este valor p es mayor que el nivel de significancia típico (como 0.05), no hay suficiente evidencia para rechazar la hipótesis nula de normalidad. Esto sugiere que los residuos siguen una distribución normal, por lo que el supuesto de normalidad de los residuos parece cumplirse.
Conclusión: Dado que ambas pruebas de hipótesis no proporcionan suficiente evidencia para rechazar los supuestos de homocedasticidad y normalidad de los residuos y los gráficos indican que no hay violación de los supuestos y demuestran la normalidad de los residuos, podemos concluir que los supuestos sobre los errores parecen cumplirse en el modelo original.