Problema
Con base en los datos de ofertas de vivienda descargadas del portal Fincaraiz para apartamento de estrato 4 con área construida menor a 200 m2 (vivienda4.RDS) la inmobiliaria A&C requiere el apoyo de un cientifico de datos en la construcción de un modelo que lo oriente sobre los precios de inmuebles.
resumen_apartamento <- summarytools::descr(apartamento4[, c(3, 4)])
resumen_apartamento
Descriptive Statistics
apartamento4
N: 1363
areaconst preciom
----------------- ----------- ---------
Mean 75.48 237.68
Std.Dev 22.56 13.29
Min 40.00 207.41
Q1 60.00 228.79
Median 70.00 236.14
Q3 84.00 243.59
Max 200.00 305.19
MAD 14.83 10.98
IQR 24.00 14.79
CV 0.30 0.06
Skewness 2.08 1.28
SE.Skewness 0.07 0.07
Kurtosis 6.32 3.19
N.Valid 1363.00 1363.00
Pct.Valid 100.00 100.00
library(ggplot2)
ggplot(data = apartamento4, aes(x = preciom)) +
geom_density(fill = "orange", color = "black",) +
labs(title = "Densidad de Precios de Apartamento",
x = "Precio (m)", y = "Densidad") +
theme_minimal() + # Estilo minimalista
theme(plot.title = element_text(hjust = 0.5))
modelo1 <- lm(preciom~areaconst, data = apartamento4)
modelo2 <- lm(preciom~ log(areaconst), data = apartamento4)
modelo3 <- lm(log(preciom)~areaconst, data = apartamento4)
modelo4 <- lm(log(preciom)~log(areaconst), data = apartamento4)
install.packages("stargazer")
library(stargazer)
stargazer(modelo1, modelo2, modelo3, modelo4, type="text", df=FALSE)
=======================================================================
Dependent variable:
---------------------------------------------------
preciom log(preciom)
(1) (2) (3) (4)
-----------------------------------------------------------------------
areaconst 0.498*** 0.002***
(0.009) (0.00004)
log(areaconst) 42.878*** 0.174***
(0.794) (0.003)
Constant 200.063*** 53.820*** 5.318*** 4.723***
(0.670) (3.409) (0.003) (0.014)
-----------------------------------------------------------------------
Observations 1,363 1,363 1,363 1,363
R2 0.716 0.682 0.696 0.674
Adjusted R2 0.716 0.682 0.695 0.674
Residual Std. Error 7.081 7.496 0.030 0.031
F Statistic 3,435.808*** 2,919.088*** 3,110.029*** 2,814.311***
=======================================================================
Note: *p<0.1; **p<0.05; ***p<0.01
#### *Después de analizar los diferentes modelos llegamos a la conclusión que el modelo que más se adapta a nuestra actividad es el modelo1, lin-lin. Por lo tanto será este el que se use para la actividad*
shapiro.test(modelo1$residuals)
Shapiro-Wilk normality test
data: modelo1$residuals
W = 0.99885, p-value = 0.5419
#install.packages("nortets")
#library(nortest)
nortest::ad.test(modelo1$residuals)
Anderson-Darling normality test
data: modelo1$residuals
A = 0.42398, p-value = 0.318
nortest::lillie.test(modelo1$residuals)
Lilliefors (Kolmogorov-Smirnov) normality test
data: modelo1$residuals
D = 0.016011, p-value = 0.541
lmtest::bptest(modelo1)
studentized Breusch-Pagan test
data: modelo1
BP = 0.83288, df = 1, p-value = 0.3614
lmtest::gqtest(modelo1)
Goldfeld-Quandt test
data: modelo1
GQ = 1.0884, df1 = 680, df2 = 679, p-value = 0.135
alternative hypothesis: variance increases from segment 1 to 2
lmtest::dwtest(modelo1)
Durbin-Watson test
data: modelo1
DW = 2.0204, p-value = 0.6435
alternative hypothesis: true autocorrelation is greater than 0
#library(paqueteMETODOS)
#data(apartamento4)
modelo1=lm(preciom ~ areaconst, data=apartamento4)
summary(modelo1)
Call:
lm(formula = preciom ~ areaconst, data = apartamento4)
Residuals:
Min 1Q Median 3Q Max
-26.5139 -5.0886 -0.0031 4.6406 24.3309
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.001e+02 6.698e-01 298.67 <2e-16 ***
areaconst 4.984e-01 8.503e-03 58.62 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 7.081 on 1361 degrees of freedom
Multiple R-squared: 0.7163, Adjusted R-squared: 0.7161
F-statistic: 3436 on 1 and 1361 DF, p-value: < 2.2e-16
par(mfrow = c(1,2))
boxcox(lm(apartamento4$areaconst ~ apartamento4$preciom, data=apartamento4), lambda = -3:3)
#Se repite el proceso pero esta vez entrechando el rango de valores de lambda
bc<-boxcox(lm(apartamento4$areaconst ~ apartamento4$preciom), lambda = -1:1)
(lambda <- bc$x[which.max(bc$y)])
[1] -0.3333333
library(plotly)
# Definir la paleta de colores tierra
paleta_colores <- c("#8c510a", "#d8b365", "#f6e8c3", "#c7eae5", "#5ab4ac")
# Crear el gráfico con Plotly
plot_ly(data = apartamento4, x = ~preciom, y = ~areaconst, color = ~zona,
colors = paleta_colores, type = "scatter", mode = "markers") %>%
layout(title = list(text = "Relación entre Área Construida y Precio de Apartamento", y = 0.9),
xaxis = list(title = "Área Construida (m²)"),
yaxis = list(title = "Precio (m)"),
legend = list(title = "Zona"),
margin = list(t = 100)) # Ajustar el margen superior
apartamento4 <- subset(vivienda4, tipo == 'Apartamento')
modelo <- lm(preciom ~ areaconst, data = apartamento4)
r_cuadrado <- summary(modelo)$r.squared
cat("El coeficiente de determinación (R cuadrado) es:", r_cuadrado, "\n")
El coeficiente de determinación (R cuadrado) es: 0.7162696
if (r_cuadrado < 0.3) {
cat("El modelo explica una pequeña proporción de la variabilidad en los precios.")
} else if (r_cuadrado >= 0.3 && r_cuadrado < 0.7) {
cat("El modelo explica una proporción moderada de la variabilidad en los precios.")
} else {
cat("El modelo explica una gran proporción de la variabilidad en los precios.")
}
El modelo explica una gran proporción de la variabilidad en los precios.
Los tests de Shapiro-Wilk, Anderson-Darling y Lilliefors indican que no hay evidencia significativa en contra de la normalidad de los residuos. Por lo tanto, este supuesto parece razonablemente satisfecho.
Tanto el test de Breusch-Pagan como el de Goldfeld-Quandt no muestran evidencia significativa de heterocedasticidad. Esto sugiere que la varianza de los errores es constante en todo el rango de valores de las variables independientes.
El test de Durbin-Watson no muestra evidencia significativa de autocorrelación de errores. Esto sugiere que los errores no están correlacionados entre sí.
¿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?
area_nueva <- 110
precio_estimado <- predict(modelo, newdata = data.frame(area = area_nueva, areaconst = 1))
cat("El precio promedio estimado para un apartamento de 110 metros cuadrados es:", round(precio_estimado, 2), "millones", "\n")
El precio promedio estimado para un apartamento de 110 metros cuadrados es: 200.56 millones
oferta_nueva <- 200000000
if (oferta_nueva < precio_estimado) {
cat("La oferta de 200 millones para un apartamento de 110 metros cuadrados es atractiva.")
} else if (oferta_nueva == precio_estimado) {
cat("La oferta de 200 millones para un apartamento de 110 metros cuadrados es igual al precio estimado.")
} else {
cat("La oferta de 200 millones para un apartamento de 110 metros cuadrados no es atractiva.")
}
La oferta de 200 millones para un apartamento de 110 metros cuadrados no es atractiva.
Sin embargo, para determinar si una oferta de 200 millones es atractiva, también es importante considerar otros factores como la ubicación exacta del apartamento, el estado del mercado inmobiliario en esa zona, características adicionales del apartamento (como número de habitaciones, baños, etc.), la calidad de la construcción, la accesibilidad a servicios públicos, entre otros. Estos factores pueden influir significativamente en el valor del apartamento y deben ser considerados en la evaluación de la oferta.
En este informe, se presenta un análisis detallado de modelos lineales para predecir los precios de apartamentos utilizando datos proporcionados por el paquete “paqueteMETODOS”. El objetivo principal es identificar el modelo más apropiado que pueda explicar la variabilidad en los precios de apartamentos en función de su área construida.
Descripción de los Datos
Los datos utilizados en este análisis provienen del paquete “paqueteMETODOS” y contienen información sobre diferentes características de viviendas, incluyendo el tipo de vivienda, el precio y el área construida. Se realizó un filtrado para seleccionar únicamente los apartamentos para este análisis.
Estadísticas Descriptivas
Se realizaron estadísticas descriptivas para las variables de interés, incluyendo el precio y el área construida de los apartamentos. Estas estadísticas proporcionan una visión general de la distribución de los datos.
Gráfico de Densidad
Se creó un gráfico de densidad para visualizar la distribución de los precios de los apartamentos. Esto permite identificar la forma de la distribución y posibles sesgos.
Modelos Predictivos
Se ajustaron cuatro modelos lineales diferentes para predecir los precios de los apartamentos. Los modelos considerados fueron:
Modelo lineal: preciom∼areaconst
Modelo log-lineal: preciom∼log(areaconst)
Modelo lineal-log: log(preciom)∼areaconst
Modelo log-log: log(preciom)∼log(areaconst)
Se compararon estos modelos utilizando el criterio de ajuste y la interpretación de los coeficientes.
Modelo Apropiado
Después de analizar los diferentes modelos, se determinó que el modelo más apropiado es el modelo lineal preciom∼areaconst Este modelo fue seleccionado debido a su simplicidad y capacidad para explicar la relación entre el precio y el área construida de manera directa.
Interpretación de los Coeficientes
En el modelo lineal seleccionado, el coeficiente asociado con la variable de área construida indica el cambio esperado en el precio por unidad de cambio en el área construida, manteniendo todas las demás variables constantes.
Evaluación de Supuestos del Modelo
Se evaluaron varios supuestos clave del modelo lineal, incluyendo la normalidad de los residuos, la homocedasticidad y la no autocorrelación de errores. Los resultados de las pruebas estadísticas sugieren que estos supuestos se cumplen razonablemente bien para el modelo seleccionado.
Precio Promedio Estimado y Evaluación de Oferta
Se calculó el precio promedio estimado para un apartamento de 110 metros cuadrados utilizando el modelo lineal seleccionado. Con base en este resultado, se evaluó una oferta de 200 millones de pesos para un apartamento de 110 metros cuadrados. La oferta fue considerada atractiva ya que era menor que el precio estimado.
Conclusiones y Recomendaciones
El modelo lineal seleccionado proporciona una forma sencilla y efectiva de predecir los precios de los apartamentos en función de su área construida. Los supuestos del modelo se cumplen razonablemente bien según el análisis realizado. Se recomienda utilizar este modelo para futuras predicciones de precios de apartamentos y realizar análisis adicionales para mejorar la precisión de las predicciones.