Alcance

Construcción y presentación de un modelo que oriente a los directivos de la inmobiliaria A&C, sobre los precios de inmuebles a negociar.

Se toman como base para este informe los datos de ofertas de vivienda descargadas del portal Fincaraiz para apartamentos de estrato 4 ,con área construida menor a 200 m2 (vivienda4.RDS), realizando un filtro adicional por la variable Tipo = Apartamento.

Los cálculos y análisis detallados para llegar al modelo recomendado, se presentan como anexos de este informe.


1. Modelos Generados

.

En la elaboración de este informe, se generaron en total 7 diferentes modelos predictivos; para determinar el mejor de ellos, se consideraron diversos aspectos entre los cuales se encuentran el R-cuadrado ajustado, el coeficiente para la variable predictora (Coef_area), y el error estándar de los residuos.

Durante el proceso de consrucción y validación de cada modelo (ver anexos de este documento), algunos fueron descartados debido que sus variables fueron considerablemente menos favorecedoras, por tanto, de los 7 iniciales, se realizó un primer filtro a partir del cual se generaron los siguientes 4:

  • M1: Regresión Lineal Simple.
  • M2: Regresión Lineal con Transformación Logarítmica del Precio.
  • M5: Regresión Lineal con Transformación Raíz Cuadrada del Precio.
  • M7: Regresión Lineal con Transformaciones Logarítmica del Precio y Raíz Cuadrada del Área.

La siguiente tabla presenta un resumen comparativo de sus resultados:

comparacion <- data.frame(
  Modelo = c("M1(MRL)", "M2(log Precio)", "M5(sqrt Precio) ", "M7(lg precio-sqrt area)"),
  R2_ajustado = c(71.61, 69.54, 70.6, 69.18),
  Coef_area = c(0.4984, 0.002007, 0.0158, 0.0382),
  Error_std_res = c(7.081, 0.02996, 0.2301, 0.03014)
)

print(comparacion)
##                    Modelo R2_ajustado Coef_area Error_std_res
## 1                 M1(MRL)       71.61  0.498400       7.08100
## 2          M2(log Precio)       69.54  0.002007       0.02996
## 3        M5(sqrt Precio)        70.60  0.015800       0.23010
## 4 M7(lg precio-sqrt area)       69.18  0.038200       0.03014

.

Lectura/interpretación:

  • R2 Ajustado: Este valor indica la proporción de variabilidad en el precio explicada por el modelo. El modelo tiene el valor más alto de R2 Ajustado (71.61% ), lo que sugiere que explica mejor la variabilidad en el precio en comparación con M2, M5 y M7, es decir que tiene una mejor Capacidad predictiva.

  • Coeficiente de Área: Representa la relación entre el área construida y el precio. Los coeficientes positivos indican una relación positiva entre el área y el precio. Todos los modelos muestran coeficientes significativos para la variable área, sin embargo, el modelo M1 tiene el coeficiente de área más alto (0.4984), lo que indica que un aumento en el área está asociado con un mayor aumento en el precio en comparación con otros modelos.

  • Error Estándar de Residuos: Es una medida de dispersión de los residuos alrededor de la línea de regresión. Los modelos M2, M5 y M7 tienen errores estándar de residuos significativamente más bajos en comparación con M1, lo que sugiere que estos modelos tienen un mejor ajuste a los datos que el M1. Esta característica sería muy relevante si el objetivo fuera encontrar un modelo predictivo muy preciso, de los precios de los apartamentos.

.

1.1 Modelo Elegido

.

MODELO 1

El modelo elegido es el de regresión lineal simple, donde:


precio = 200.1 + 0.4984 × area


1.2 Características Modelo Elegido

.

  • Residuals (Residuos):

Los residuos son las diferencias entre los valores observados y los valores predichos por el modelo.

La distribución de los residuos es simétrica alrededor de cero, lo que indica que el modelo no está sesgado hacia ningún extremo.

El rango de los residuos es bastante amplio, con un mínimo de -26.5139 y un máximo de 24.3309, lo que sugiere que el modelo puede no capturar completamente la variabilidad en los datos.

.

  • Coefficients (Coeficientes):

El coeficiente para el intercepto (β0) es de 200.1. Esto indica que cuando el área es cero, el precio esperado es de aproximadamente 200.1 millones.

El coeficiente para la variable predictora (β1) es de 0.4984. Esto significa que, en promedio, por cada unidad de aumento en el área, el precio aumenta en 0.4984 unidades.

Ambos coeficientes son altamente significativos, con valores de t-value muy grandes y valores p muy pequeños (< 0.001), lo que indica una fuerte evidencia en contra de la hipótesis nula de que los coeficientes son cero.

.

  • Residual standard error (Error estándar residual):

El error estándar residual es una medida de la dispersión de los residuos alrededor de la línea de regresión. En este modelo, el error estándar residual es de 7.081, lo que indica que, en promedio, las observaciones individuales están a 7.081 unidades del ajuste de la línea de regresión.

Distribución de residuos: Los residuos parecen seguir una distribución normal, con una ligera asimetría hacia la derecha. La media de los residuos es cercana a cero, lo que indica que el modelo está bien calibrado en general.

.

  • Multiple R-squared (R-cuadrado múltiple) y Adjusted R-squared (R-cuadrado ajustado):

El R-cuadrado múltiple (R2) es una medida de la proporción de la variabilidad en la variable de respuesta que es explicada por el modelo.En este caso, el R2 es de 0.7163, lo que significa que aproximadamente el 71.63% de la variabilidad en el precio se explica por la variable predictora (área).

El R-cuadrado ajustado tiene en cuenta el número de predictores en el modelo. En este caso, el es de 0.7161, que es ligeramente más bajo que el R2, lo que sugiere que la adición del predictor no ha mejorado significativamente el ajuste del modelo.

.

  • F-statistic (Estadístico F):

El estadístico F es una prueba de la significancia global del modelo. En este caso, el valor del estadístico F es 3436, con un valor p muy pequeño (< 0.001), lo que indica que el modelo en su conjunto es altamente significativo.

.

  • Cumplimiento de Supuestos

A continuación se presenta en resumen de los principales supuestos del modelo. Los cálculos y análisis se evidencian en el ANEXO 2.8 de este documento.

supuestosm1 <- data.frame(
  Supuesto = c("Linealidad", "Homocedasticidad", "Normalidad"),
  Cumplimiento = c("No cumple", "No cumple", "Cumple")
)

print(supuestosm1)
##           Supuesto Cumplimiento
## 1       Linealidad    No cumple
## 2 Homocedasticidad    No cumple
## 3       Normalidad       Cumple

Es de mencionar que en todos los modelos pre-seleccionados, el comportamiento de los supuestos es el mismo que en el M1.


Conclusiones:

En definitiva no hay un único modelo que en todas las variables analizadas tenga un mejor resultado que los otros. Por tanto, la elección estuvo supeditada al objetivos específico de este análisis: Construir un modelo que oriente a la inmobiliaria A&C sobre los precios de inmuebles para orientarlos en las negociaciones a realizar.

Teniendo en cuenta lo anterior, se recomienda el MODELO 1 - regresión lineal simple, pues proporciona una buena descripción de la relación entre el precio y el área, siendo un predictor significativo del precio, con un coeficiente positivo significativo.

Sin embargo, el amplio rango de residuos sugiere que el modelo puede no capturar completamente la variabilidad en los datos. Esta observación resalta la importancia de considerar la inclusión de nuevas variables predictoras (como por ejemplo la zona) para mejorar la capacidad predictiva del modelo.

Es importante mencionar también que al generar el modelo 1 sobre la base de datos en el estado inicial (incluyendo las casas), el resultado del mismo se hace significativamente más predicitivo, pues el error estandar de los residuos sigue siendo prácticamente 7.1, mientras que el R2 aumenta en casi 15 puntos porcentuales, ubicándose en 86.67%:

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

En definitiva, el modelo parece tener una capacidad predictiva razonable, como una primera línea base de proyección para las negociaciones que realizarán los asesores.

2. Anexos

2.1 Datos

Se presenta una base de datos de 1706 registros de viviendas, con 5 variables entre las cuáles se encuentran la zona, el estrato socioeconómico, el precio en millones de pesos, el área construida en metros cuadrados y el tipo de vivienda.

Los datos están estandarizados por lo que no se requiere una etapa previa de limpieza y homologación, sin embargo dado que el análisis está dirigido hacia los apartamentos de la zona 4, se hace necesario incorporar un filtro.


Base Inicial

library(paqueteMETODOS)
library(GGally)
library(nortest)
library(lmtest)
library(olsrr)
library(stargazer)
library(zoo)
library(MASS)
library(dplyr)
library(robustbase)

data(vivienda4)
vivienda4 = data.frame(vivienda4)
head(vivienda4)
pie(table(vivienda4$tipo), col=c("blue", "grey"), main="Distribuciones por tipo")


Base Filtrada

Una vez aplicado el filtro de Tipo = Apartamento, se genera una base de datos de 1363 registros, así:

datos_apartamentos <- vivienda4 %>% filter(tipo == "Apartamento")
head(datos_apartamentos)
## calcular outliers de la base de datos filtrada
boxplot(datos_apartamentos$precio, main = "Boxplot de Precios de Apartamentos", ylab = "Precio")

outliers <- boxplot(datos_apartamentos$precio, plot = FALSE)$out
if (length(outliers) > 0) {
  points(rep(1, length(outliers)), outliers, col = "red", pch = 16)
  legend("topright", legend = "Outliers", col = "red", pch = 16)
}

En el gráfico se evidencia que hay varios valores que están significativamente por encima del tercer cuartil más 1.5 veces el rango intercuartílico. Estos valores son muy altos en comparación con el resto de los datos.

2.2 Análisis exploratorio

En las siguientes estadísticas y gráficas, se observa un análisis exploratorio de las variables: Precio de vivienda (millones COP) y Área de la vivienda (m2):

  • El Precio (en millones) mínimo es de 207.4 millones y el máximo de 305.2 millones, con una media de 237.7 millones. Adicionalmente, el 75% de los inmuebles tienen un precio igual o inferior a 243.6, que corresponde al 3er cuartil. La identificación del tercer cuartil puede ayudar a segmentar el mercado inmobiliario en categorías de precio, lo que puede ser útil para comprender las preferencias del mercado y para la toma de decisiones estratégicas, como la fijación de precios y la orientación de marketing.

  • El Área construida mínima es de 40 m2 y el área máxima es de 200 m2, con una media de 75.48m. Al revisar el tercer cuartil se identifica que tiene un valor de 84, esto indica que el 75% de las propiedades tiene un área construida igual o inferior a 84 metros cuadrados.

  • De 1363 registros, más del 78% corresponde a inmuebles de la Zona Sur.

  • Se confirma que todos los registros corresponden a estrato 4.

  • El percentil 90 de 237.7 m indica que en el 90% de los apartamentos, el precio será inferior a ese valor.

  • El área construida tiene un percentil 90 de 75.5 m que indica que el 90% de los apartamentos tienen un área construida por debajo de ese tamaño.

summary(datos_apartamentos)
##            zona      estrato     preciom        areaconst     
##  Zona Centro :   7   3:   0   Min.   :207.4   Min.   : 40.00  
##  Zona Norte  : 237   4:1363   1st Qu.:228.8   1st Qu.: 60.00  
##  Zona Oeste  :  52   5:   0   Median :236.1   Median : 70.00  
##  Zona Oriente:   2   6:   0   Mean   :237.7   Mean   : 75.48  
##  Zona Sur    :1065            3rd Qu.:243.6   3rd Qu.: 84.00  
##                               Max.   :305.2   Max.   :200.00  
##           tipo     
##  Apartamento:1363  
##  Casa       :   0  
##                    
##                    
##                    
## 
barplot(table(datos_apartamentos$zona), col=c("orange","blue", "yellow", "red"), main="Distribucion por zonas")

datos_apartamentos|> summarise(media_preciom = mean(preciom),
                      varianza_preciom = var(preciom),
                      desvi_preciom = sd(preciom),
                      Q1 = quantile(preciom, probs=0.25),
                      P90 = quantile(preciom, probs=0.90))
area = datos_apartamentos$areaconst
precio = datos_apartamentos$preciom

hist(precio, main = "Precio vivienda", 
     xlab = "$ en Millones", col = "blue")

datos_apartamentos|> summarise(media_area = mean(areaconst),
                      varianza_area = var(areaconst),
                      desvi_area = sd(areaconst),
                      Q1 = quantile(areaconst, probs=0.25),
                      D4 = quantile(areaconst, probs=0.40),
                      P90 = quantile(areaconst, probs=0.90))
hist(area, main = "Área construida", 
     xlab = "Metro cuadrado", col = "lightblue")

2.3 Análisis Bivariado

El gráfico y el cálculo de la correlación (cercano a 1) evidencian que existe una relación lineal positiva entre las variables: Precio de vivienda (millones COP) y Área de la vivienda (m2), ya que a mayor área construida, más alto el precio.Sin embargo por el valor del coeficiente de correlación, se evidencia que es una correlación Positiva debil (0.3≤r<0.8).

grafico=ggplot(data = datos_apartamentos,aes(y=area,x=precio)) + geom_point() + geom_smooth()

grafico_con_titulo <- grafico + labs(title = "Relación precio y área")

grafico_completo <- grafico_con_titulo +
  xlab("Precio (millones)") +
  ylab("Área (m2)")

grafico_centrado <- grafico_completo +
  theme(plot.title = element_text(hjust = 0.5))

plot(grafico_centrado)

cor(area,precio)
## [1] 0.8463271

2.4 Modelo Reg. Simple

A continuación se calcula el Modelo de regresión lineal simple entre precio=f(area)+ε, y se interpretan los coeficientes β0/β1 del modelo.

MRL= lm(precio ~ area)
summary(MRL)
## 
## Call:
## lm(formula = precio ~ area)
## 
## 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 ***
## area        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
plot(area, precio, xlab = "Área construida", ylab= "Precio", main = "Regresión Lineal")

abline(MRL, col ="blue")

Dado el resultado del intercepto (β0 = 200.1) y del β1 (0.498), se evidencia que el precio estimado cuando el área es cero es de 200 millones, y que por cada metro construido adicional, el precio aumentará en poco menos de 500 mil pesos.

El error estándar residual es de 7.081, lo que indica cuánto varían las observaciones reales alrededor de la línea de regresión. Un error bastante alto.

El R-cuadrado múltiple es de aproximadamente 0.7163, lo que indica que 71.63% de la variabilidad en el precio puede ser explicada por la variable área construida (sin que sea un muy buen resultado… el porcentaje no es tan alto).

El R-cuadrado ajustado es de aproximadamente 0.7161, que es muy similar al R-cuadrado múltiple y tiene en cuenta el número de predictores en el modelo.

El valor de la estadística F es muy alto (3436) y el p-value es bajo, indicando una significancia global del modelo.

En resumen, los resultados del modelo sugieren que la variable área tiene un efecto significativo en la predicción del precio, pero es necesario evaluar los supuestos de este modelo.

2.5 Intervalo de confianza

Construcción de un intervalo de confianza (95%) para el coeficiente β1.

#interpretar y concluir si el coeficiente es igual a cero o no.

par(mfrow=c(2,2))
plot(MRL)

intervalo_confianza <- confint(MRL, level = 0.95)

print(intervalo_confianza)
##                   2.5 %     97.5 %
## (Intercept) 198.7494103 201.377500
## area          0.4817357   0.515097
if (intervalo_confianza[1] <= 0 && intervalo_confianza[2] >= 0) {
  print("β1 es cero. No es posible rechazar la hipótesis nula.")
} else {
  print("β1 es diferente de cero. Se rechaza la hipótesis nula.")
}
## [1] "β1 es diferente de cero. Se rechaza la hipótesis nula."

Con un intervalo de confianza de 95% se observa que la pendiente β1 se situa entre 0.48 y 0.52, es decir que por cada metro cuadrado adicional de área construida, se espera que el precio aumente entre aproximadamente 0.48 y 0.52 millones.

Debido que tanto el intercepto (β0) como la pendiente de la línea de regresión (β1) son diferentes de cero, se concluye que hay una relación significativa entre la variable independiente y la variable dependiente. Se rechaza la hipótesis nula y se acepta la alternativa, lo que respalda la validez del modelo de regresión lineal ajustado.

2.6 Indicador Bondad

Cómo se observó en el anexo 2.4, encontramos que el R-cuadrado múltiple es de 0.7163, lo que indica que alrededor del 71.63% de la variabilidad en el precio puede ser explicada por la variable área construida. Si bien es un resultado que sugiere significancia en la predicción, el modelo puede estar sujeto a la transformación para mejorar el resultado.

summary(MRL)
## 
## Call:
## lm(formula = precio ~ area)
## 
## 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 ***
## area        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

2.7 Proyección $(110m)

  • A continuación se realiza el cálculo del precio promedio estimado para un apartamento de 110 m2:
predict(MRL,list(area=110),interval = "confidence")
##        fit      lwr      upr
## 1 254.8893 254.2014 255.5771

De acuerdo a la predicción, el precio promedio de un apartamento de 110 metros cuadrados sería aproximadamente de 254.9 millones, con un mínimo y máximo de 254.2 y 255.6 millones, respectivamente.

Por tanto, en una primera lectura podría considerarse que un precio de 200 millones, para un inmueble de esas carecterísticas, sería una oferta atractiva al encontrarse un 27.4% por debajo del precio esperado, sin embargo, para considerarse atractiva la oferta deberían contemplarse también otras variables como la zona, las condiciones del inmueble y demás atributos disponibles.

2.8 Validación supuestos M1

. .

  • Supuesto de linealidad

Se verifica graficando los residuos del modelo contra los valores ajustados y calculando la media de los residuos:

plot(MRL$fitted.values, resid(MRL), 
     xlab = "Valores ajustados", ylab = "Residuos",
     main = "Residuos vs. Valores Ajustados")
abline(h = 0, col = "red") 

residuos = resid(MRL)
media_residuos = mean(residuos)
print(media_residuos)
## [1] 2.792293e-18

.

Aunque la media de los residuos sea cercana a cero, la presencia de un patrón de embudo en el gráfico (concentración de datos hacia la izquierda), sugiere que la relación entre las variables precio de la vivienda y el área construida, no es netamente lineal, y podría ser más compleja de lo que se modela con un modelo lineal simple. No se cumpliría el supuesto de linealidad del modelo lineal.


  • Supuesto de homocedasticidad

Se verifica graficando los residuos estandarizados del modelo contra los valores ajustados. Si la dispersión de los residuos es constante a lo largo de los valores ajustados, entonces el supuesto se cumple.

plot(MRL,which = 3)

#plot(modelo$fitted.values, rstandard(modelo),
#     xlab = "Valores ajustados", ylab = "Residuos estandarizados",
#     main = "Residuos Estandarizados vs. Valores Ajustados")
#abline(h = 0, col = "red")  

En este caso, la concentración de datos hacia la izquierda del gráfico sugiere heterocedasticidad, es decir, que la variabilidad de los errores no es constante en toda la gama de valores de la variable independiente, por tanto no se cumple el supuesto de homocedasticidad.


.

  • Supuesto de normalidad de los residuos

Se verifica generando el gráfico Q-Q para validar si los residuos siguen una distribución normal. Si los puntos en el gráfico están aproximadamente en una línea recta, entonces el supuesto se cumple.

qqnorm(resid(MRL))
qqline(resid(MRL),col="red")

De acuerdo al gráfico, se confirma que se cumple el supuesto de normalidad. Esto se confirma también a través del test de Lilliefors:

lillie.test(resid(MRL))
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  resid(MRL)
## D = 0.016011, p-value = 0.541

El valor p (0.541) es mayor que el nivel de significancia de 0.05. En resumen, basado en la prueba de Lilliefors, no hay suficiente evidencia para rechazar la hipótesis de normalidad para tus datos. Esto sugiere que los datos pueden provenir de una distribución normal.

residuos = MRL$residuals
hist(residuos, main = "Histograma residuos modelo",col="blue" )


Autocorrelación Residuos:

Al realizar un test de Durbin-Watson podemos darnos cuenta que la correlación es positiva.

lmtest::dwtest(MRL)
## 
##  Durbin-Watson test
## 
## data:  MRL
## DW = 2.0204, p-value = 0.6435
## alternative hypothesis: true autocorrelation is greater than 0

El valor de DW (2.0204) cercano a 2 sugiere que no hay autocorrelación de primer orden en los residuos, es decir que los residuos podrían considerarse independientes entre sí.


Outlier:

boxplot(residuos, main = "Boxplot de Residuos", ylab = "Residuos")

outliers <- boxplot(residuos, plot = FALSE)$out
if (length(outliers) > 0) {
  points(rep(1, length(outliers)), outliers, col = "red", pch = 16)
  legend("topright", legend = "Outliers", col = "red", pch = 16)
}


En resumen, aunque una media de residuos cercana a cero sugiere una buena capacidad predictiva del modelo , la presencia de heterocedasticidad indica que la variabilidad de los errores no es constante en todos los niveles de los predictores. Esto podría requerir una revisión más profunda del modelo y posiblemente TRANSFORMACIONES para mejorar su validez y precisión

2.9 Transformar Modelo1 (M2)

.

2.9.1 Generaicón Modelo 2: Transformación M1 con log de Precio

Dado el anexo anterior donde se evidencia que no se da cumplimiento a todos los supuestos, podemos intentar transformar las variables, para mejorar el ajuste y los supuestos del modelo.

modelo2 <- lm(log(precio) ~ area, data = datos_apartamentos)
summary(modelo2)
## 
## Call:
## lm(formula = log(precio) ~ area, data = datos_apartamentos)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.104645 -0.020942  0.000593  0.019371  0.099110 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 5.318e+00  2.835e-03 1876.11   <2e-16 ***
## area        2.007e-03  3.598e-05   55.77   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.02996 on 1361 degrees of freedom
## Multiple R-squared:  0.6956, Adjusted R-squared:  0.6954 
## F-statistic:  3110 on 1 and 1361 DF,  p-value: < 2.2e-16

Comparando el nuevo modelo (llamado modelo2) con el original, se evidencia:

  • R-cuadrado ajustado: El R-cuadrado ajustado del modelo transformado (0.6956) es menor que el del modelo original (0.7163). Esto sugiere que el modelo original explica un poco más de la variabilidad en los datos que el modelo transformado.

  • Error estándar residual: El error estándar residual del modelo transformado (0.02996) es significativamente menor que el del modelo original (7.081). Esto indica que el modelo transformado tiene un mejor ajuste a los datos en términos de ajuste de los residuos.

  • Coeficiente para la variable “área”: En el modelo transformado, el coeficiente para la variable “area” (0.002007) es significativamente menor que en el modelo original (0.4984). Esto sugiere que la relación entre la variable “area” y la variable de respuesta es menos pronunciada en el modelo transformado.

En general, el modelo transformado muestra un error estándar residual mucho menor, lo que sugiere un mejor ajuste a los datos en términos de la precisión de las predicciones. Sin embargo, el R-cuadrado ajustado es menor, lo que indica que el modelo original puede explicar un poco más de la variabilidad en los datos.

.


2.9.2 Supuestos Modelo Transformado (M2)

.

par(mfrow=c(2,2))
plot(modelo2)
abline(h = 0, col = "red") 

lmtest::dwtest(modelo2)
## 
##  Durbin-Watson test
## 
## data:  modelo2
## DW = 2.0219, p-value = 0.6534
## alternative hypothesis: true autocorrelation is greater than 0
residuos2 <- modelo2$residuals

boxplot(residuos2, main = "Boxplot de Residuos", ylab = "Residuos")

outliers <- boxplot(residuos2, plot = FALSE)$out
if (length(outliers) > 0) {
  points(rep(1, length(outliers)), outliers, col = "red", pch = 16)
  legend("topright", legend = "Outliers", col = "red", pch = 16)
}

El cambio en la media de los residuos hacia un valor negativo más cercano a cero sugiere que la transformación logarítmica ha ayudado a mejorar la distribución de los residuos en torno a cero, lo que puede indicar una mejor adecuación del modelo a los datos. Sin embargo siguen sin cumplirse los supuestos a excepción del de normalidad que también se cumplía en el modelo original, por lo que se puede concluir que no es una transformación lo suficientemente óptima.

2.10 Otros Modelos

A continuación se estiman otros modelos y se comparan los resultados obtenidos, identificando si en el mejor de los modelos.


  • Modelo 3: log(precio) y log(area)
##summary(MRL) # lm normal

##summary(modelo2) # log(precio)

modelo3 = lm(log(precio) ~ log(area), data = datos_apartamentos)
summary(modelo3)
## 
## Call:
## lm(formula = log(precio) ~ log(area), data = datos_apartamentos)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.104277 -0.022240  0.000027  0.020782  0.093359 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 4.722680   0.014102  334.91   <2e-16 ***
## log(area)   0.174148   0.003283   53.05   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03101 on 1361 degrees of freedom
## Multiple R-squared:  0.674,  Adjusted R-squared:  0.6738 
## F-statistic:  2814 on 1 and 1361 DF,  p-value: < 2.2e-16

  • Modelo 4: log(area)
modelo4 = lm(precio ~ log(area), data = datos_apartamentos)
summary(modelo4)
## 
## Call:
## lm(formula = precio ~ log(area), data = datos_apartamentos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -22.9725  -5.4109  -0.1832   4.9141  24.1899 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  53.8202     3.4091   15.79   <2e-16 ***
## log(area)    42.8778     0.7936   54.03   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.496 on 1361 degrees of freedom
## Multiple R-squared:  0.682,  Adjusted R-squared:  0.6818 
## F-statistic:  2919 on 1 and 1361 DF,  p-value: < 2.2e-16

  • Modelo 5: sqrt(precio)
modelo5 <- lm(sqrt(precio) ~ area, data = datos_apartamentos)
summary(modelo5)
## 
## Call:
## lm(formula = sqrt(precio) ~ area, data = datos_apartamentos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.83242 -0.16051  0.00178  0.14901  0.77629 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 1.422e+01  2.176e-02   653.3   <2e-16 ***
## area        1.580e-02  2.763e-04    57.2   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2301 on 1361 degrees of freedom
## Multiple R-squared:  0.7063, Adjusted R-squared:  0.706 
## F-statistic:  3272 on 1 and 1361 DF,  p-value: < 2.2e-16
  • Modelo 6: sqrt(area)
modelo6 <- lm(precio ~ sqrt(area), data = datos_apartamentos)
summary(modelo6)
## 
## Call:
## lm(formula = precio ~ sqrt(area), data = datos_apartamentos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -25.1087  -5.2451  -0.0772   4.7355  23.6388 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 156.3863     1.4349  108.99   <2e-16 ***
## sqrt(area)    9.4454     0.1652   57.19   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.206 on 1361 degrees of freedom
## Multiple R-squared:  0.7061, Adjusted R-squared:  0.7059 
## F-statistic:  3271 on 1 and 1361 DF,  p-value: < 2.2e-16
  • Modelo 7: log(precio) ~ sqrt(area)
modelo7 <- lm(log(precio) ~ sqrt(area), data = datos_apartamentos)
summary(modelo7)
## 
## Call:
## lm(formula = log(precio) ~ sqrt(area), data = datos_apartamentos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.10393 -0.02172  0.00058  0.02005  0.09632 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 5.1406402  0.0060014   856.6   <2e-16 ***
## sqrt(area)  0.0382009  0.0006908    55.3   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03014 on 1361 degrees of freedom
## Multiple R-squared:  0.692,  Adjusted R-squared:  0.6918 
## F-statistic:  3058 on 1 and 1361 DF,  p-value: < 2.2e-16

A continuación se generan los principales supuestos de los modelos 5 y 7, que por sus resultados, han quedado preseleccionados con los modelos 1 y 2, para los cuales ya se han analizado los supuestos previamente, por tanto no se incluyen nuevamente en este anexo.

2.10.2 Supuestos Modelo 5

.

par(mfrow=c(2,2))
plot(modelo5)
abline(h = 0, col = "red") 

lmtest::dwtest(modelo5)
## 
##  Durbin-Watson test
## 
## data:  modelo5
## DW = 2.0218, p-value = 0.6527
## alternative hypothesis: true autocorrelation is greater than 0

2.10.3 Supuestos Modelo 7

.

par(mfrow=c(2,2))
plot(modelo7)
abline(h = 0, col = "red") 

lmtest::dwtest(modelo7)
## 
##  Durbin-Watson test
## 
## data:  modelo7
## DW = 2.0001, p-value = 0.4971
## alternative hypothesis: true autocorrelation is greater than 0