En este documento se presentan los resultados del diseño y validación de un modelo para la proyección del precio de inmuebles en la ciudad de Cali. El principal objetivo es que los directivos de la Inmobiliaria A&C apoyen la toma de decisiones basados en un modelo robusto y construido a partir de los datos disponibles en el mercado. Dado que por el momento solo se cuenta con una variable explicativa, el área construida, en este primer acercamiento no se logrqaron resultados satisfactorios, de todas formas este trabajo sirve de base para después complementar el estudio con otras variables adicionales que permitan explicar de mejor manera el comportamiento de los precios de los inmuebles.
De acuerdo a los requerimientos de la Inmobiliaria A&C, el modelo se centró en los apartamentos de estrato 4 con área construida menor a 200 \(m^2\), para esto se utilizó un conjunto de datos que corresponde a las características solicitadas, logrando una muestra de 1360 registros compuesto por tres variables: zona, precio por \(m^2\) en miles de COP y área construida en \(m^2\). Por recomendación de los asesores, no se incluyó la variable zona en el estudio.
De esta forma, en los anexos a este documento, se presentan los pasos realizados para el entendimiento de los datos, la construcción y validación de un modelo lineal que permita extraer información relevante para comprender y explicar la relación entre el precio y el área construida de los apartamentos estrato 4 de menos de 200 \(m^2\), el objetivo es proyectar el precio por \(m^2\) a partir del área construida. Se realizó un análisis estadístico descriptivo de cada variable, un análisis de correlación para verificar la linealidad entre las variables, luego se planteó el modelo de regresión lineal simple interpretando los coeficientes y realizando la respectiva prueba de bondad de ajuste, finalmente se validaron los supuestos acerca del comportamiento de los errores del modelo.
El modelo de regresión lineal simple es el siguiente:
\[Y=\beta_{0}+\beta_{1}X+\epsilon\] Donde:
\(Y\): representa a la variable dependiente o respuesta, en este caso, el precio por \(m^2\) en miles de COP.
\(X\): representa a la variable independiente, en este caso, el área construida en \(m^2\).
\(\epsilon\): es el error, variable aleatoria desconocida y que representa todas aquellas variables que no están incluidas en el modelo.
\(\beta_{0}\): coeficiente a estimar, denominado intercepto.
\(\beta_{1}\): coeficiente a estimar, denominado pendiente.
\(\beta_{0}\) y \(\beta_{1}\) conforman los parámetros a estimar para definir la recta:
\[\hat{y}_{i}=\hat\beta_{0}+\hat\beta_{1}x_{i}\] La estimación de los parámetros \(\beta_{0}\) y \(\beta_{1}\) y la ecuación que representa el modelo lineal para relacionar el precio por \(m^2\) de un apartamento estrato 4 en función del área construida es:
\[\hat{y}=36.62 + 2.20x\]
El valor de \(36.62\) o \(\beta_{0}\) representa el punto de corte en el eje \((Y)\) de la recta de regresión por mínimos cuadrados y el valor \(2.20\) o \(\beta_{1}\) representa la pendiente o la razón de cambio de la variable \((Y)\) con respecto a la variable \((X)\), es decir, una constante del modelo lineal que permite valorar el efecto generado sobre el precio ante cambios en el área construida.
El indicador de bondad de ajuste o también llamado coeficiente de determinación \(R^2\) representa la proporción de la variablidad de la variable dependiente atribuible a la variabilidad de la variable independiente, o dicho de otra forma, refleja la bondad de ajuste de un modelo a la variable que pretende explicar. En este caso, el \(R^2=0.55\), de esto se puede deducir que el 55% del cambio en el precio está explicado por la variable área construida en el modelo lineal planteado.
Como se observa, el ajuste del modelo es relativamente bajo, esto sumado a que los supuestos acerca del comportamiento de los errores (normalidad, homocedasticidad, linealidad y no autocorrelación) no se cumplen y que también se realizaron algunas transformaciones en las variables y además se limitó la muestra de datos a áreas menores a 120 \(m^2\) persistiendo las deficiencias.
Entonces, se recomienda buscar y probar otras variables para explicar mejor el comportamiento del precio como: la disponibilidad de parqueadero, el número de habitaciones, el número de baños, el piso de ubicación, la antiguedad de la construcción, etre otras.
Se dispone de un conjunto de datos inicial, 1706 registros, con información de las viviendas estrato 4 por sector, tiene 5 variables: zona, estrato, preciom (miles de COP), areaconst (\(m^2\)) y tipo. A continuación, se presenta una muestra de los datos disponibles:
data(vivienda4)
head(vivienda4)
## # A tibble: 6 × 5
## zona estrato preciom areaconst tipo
## <fct> <fct> <dbl> <dbl> <fct>
## 1 Zona Norte 4 220 52 Apartamento
## 2 Zona Norte 4 600 160 Casa
## 3 Zona Norte 4 320 108 Apartamento
## 4 Zona Sur 4 290 96 Apartamento
## 5 Zona Norte 4 220 82 Apartamento
## 6 Zona Norte 4 305 117 Casa
A partir del conjunto de datos original, se extrae un subconjunto de datos, 1360 registros, con los apartamentos estrato 4 con área construida menor a 200 \(m^2\).
ap4200=vivienda4[vivienda4$areaconst<200 & vivienda4$tipo=="Apartamento", ]
head(ap4200)
## # A tibble: 6 × 5
## zona estrato preciom areaconst tipo
## <fct> <fct> <dbl> <dbl> <fct>
## 1 Zona Norte 4 220 52 Apartamento
## 2 Zona Norte 4 320 108 Apartamento
## 3 Zona Sur 4 290 96 Apartamento
## 4 Zona Norte 4 220 82 Apartamento
## 5 Zona Norte 4 220 75 Apartamento
## 6 Zona Norte 4 162 60 Apartamento
Dado que las columnas estrato y tipo sólo tienen una categoría, 4 y Apartamento, respectivamente, se las elimina, obteniendo de esta forma un nuevo conjunto de datos denominado apto4, conformado por 3 variables y 1360 observaciones. La muestra contenida en apto4 se utiliza para el presente informe y contiene los apartamentos estrato 4 de menos de 200 \(m^2\) de área construida y su respectivo precio por metro cuadrado en miles de COP.
apto4=ap4200[, -c(2, 5)]
head(apto4)
## # A tibble: 6 × 3
## zona preciom areaconst
## <fct> <dbl> <dbl>
## 1 Zona Norte 220 52
## 2 Zona Norte 320 108
## 3 Zona Sur 290 96
## 4 Zona Norte 220 82
## 5 Zona Norte 220 75
## 6 Zona Norte 162 60
Es importante conocer la composición de la muestra de acuerdo a la zona de la ciudad, en orden descendente de la frecuencia por zona están: Sur (1063), Norte (236), Oeste (52), Centro (7) y Oriente (2). Se destaca que el 95% de la muestra está ubicada en sólo dos zonas: la Sur y la Norte, la Oeste tiene una participación del 3.8% la Centro y la Oriente tienen una participación muy baja.
table(apto4$zona) %>%
prop.table()*100
##
## Zona Centro Zona Norte Zona Oeste Zona Oriente Zona Sur
## 0.5147059 17.3529412 3.8235294 0.1470588 78.1617647
Con el conjunto de datos apto4 se construye el modelo para analizar el precio de los inmuebles. A continuación, se presenta un resumen con los pasos realizados para el entendimiento de los datos, la construcción y validación de un modelo lineal que permita extraer información relevante para comprender y explicar la relación entre el precio y el área construida de los apartamentos estrato 4 de menos de 200 \(m^2\).
Se observa que los registros están completos, es decir, que no presentan datos faltantes o inválidos. Se inicia con un análisis exploratorio de las variables preciom y areaconst.
A continuación, se presenta el resumen estadístico de la variable preciom:
summary(apto4$preciom)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 78 153 185 202 240 645
Ahora se presenta la tabla de frecuencias para 5 clases de 150 miles de COP:
breaks=c(0, 150, 300, 450, 600, 750)
precio=cut(apto4$preciom, breaks)
summarytools::freq(precio)
## Frequencies
## precio
## Type: Factor
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## --------------- ------ --------- -------------- --------- --------------
## (0,150] 325 23.897 23.897 23.897 23.897
## (150,300] 941 69.191 93.088 69.191 93.088
## (300,450] 89 6.544 99.632 6.544 99.632
## (450,600] 4 0.294 99.926 0.294 99.926
## (600,750] 1 0.074 100.000 0.074 100.000
## <NA> 0 0.000 100.000
## Total 1360 100.000 100.000 100.000 100.000
Por último se presenta el histograma de frecuencias con su curva de densidad, el gráfico Q-Q Plot y un boxplot para la variable aleatoria preciom:
par(cex=0.5, cex.axis=0.5, cex.lab=0.5, cex.main=0.5, cex.sub=0.5, mfrow=c(1, 3), mai=c(0.5, 0.5, 0.5, 0.5))
hist(apto4$preciom, prob=TRUE, xlab="Precio x m2", ylim=c(0, 0.01), main="Histograma y Densidad del Precio x m2")
lines(density(apto4$preciom), col="blue", lwd=3)
qqnorm(apto4$preciom, main="Q-Q Plot Precio x m2", xlab=" ", ylab=" "); qqline(apto4$preciom, col="red")
boxplot(apto4$preciom, main="Boxplot Precio x m2")
En el histograma se observa que la distribución de la variable preciom presenta una asimetría positiva porque se nota un alaragamiento del lado de los valores que son mayores al promedio, de la curva de densidad se observa que la distribución tiene dos picos. En el gráfico Q-Q Plot se puede apreciar una clara desviación de la línea recta, lo que indica que la distribución de la variable preciom probablemente no sigue una distribución normal. El boxplot confirma la asimetría, el valor de la mediana (185) está por debajo del promedio (202) y hay varios datos atípicos altos que se encuentran por encima de 1.5 veces el rango intercuartílico del límite superior de la caja (percentil 75).
A continuación, se presenta el resumen estadístico de la variable areacons en \(m^2\):
summary(apto4$areaconst)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 40.0 60.0 70.0 75.2 83.0 198.0
Ahora se presenta la tabla de frecuencias para 5 clases de 40 \(m^2\) cada una:
breaks1=c(0, 40, 80, 120, 160, 200)
precio1=cut(apto4$areaconst, breaks1)
summarytools::freq(precio1)
## Frequencies
## precio1
## Type: Factor
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## --------------- ------ --------- -------------- --------- --------------
## (0,40] 1 0.074 0.074 0.074 0.074
## (40,80] 976 71.765 71.838 71.765 71.838
## (80,120] 321 23.603 95.441 23.603 95.441
## (120,160] 52 3.824 99.265 3.824 99.265
## (160,200] 10 0.735 100.000 0.735 100.000
## <NA> 0 0.000 100.000
## Total 1360 100.000 100.000 100.000 100.000
Por último se presenta el histograma de frecuencias con su curva de densidad, el gráfico Q-Q Plot y un boxplot para la variable aleatoria areaconst:
par(cex=0.5, cex.axis=0.5, cex.lab=0.5, cex.main=0.5, cex.sub=0.5, mfrow=c(1, 3), mai=c(0.5, 0.5, 0.5, 0.5))
hist(apto4$areaconst, prob=TRUE, xlab="Area m2", main="Histograma y Densidad del Area m2")
lines(density(apto4$areaconst), col="green", lwd=3)
qqnorm(apto4$areaconst, main="Q-Q Plot Area m2", xlab=" ", ylab=" "); qqline(apto4$areaconst, col="orange")
boxplot(apto4$areaconst, main="Boxplot Area m2")
En el histograma se observa que la distribución de la variable areaconst presenta una asimetría positiva porque se nota un alaragamiento del lado de los valores que son mayores al promedio, de la curva de densidad se observa que la distribución tiene dos picos. En el gráfico Q-Q Plot se puede apreciar una clara desviación de la línea recta, lo que indica que la distribución de la variable areaconst probablemente no sigue una distribución normal. El boxplot confirma la asimetría, el valor de la mediana (70) está por debajo del promedio (75.2) y hay varios datos atípicos altos que se encuentran por encima de 1.5 veces el rango intercuartílico del límite superior de la caja (percentil 75).
Para iniciar con el análisis vibariado se traza un gráfico de dispersión teniendo en cuenta que la variable de respuesta Y es el precio y la variable predictora X es el área construida:
plot(x=apto4$areaconst, y=apto4$preciom, main="Gráfico de Dispersión Precio ~ Area", xlab="Area m2", ylab="Precio x m2 miles de COP")
Para complementar el gráfico se calcula el coeficiente de correlación de Pearson como una medida de la magnitud de la asociación lineal entre las dos variables. Indica si los puntos tienen una tendencia a disponerse alineadamente y es útil para determinar si hay relación lineal entre las variables:
cor(apto4$areaconst, apto4$preciom)
## [1] 0.7431338
De acuerdo a la dispersión de los puntos observada en el gráfico y al valor del coeficiente de correlación obtenido de 0.74 se concluye que existe una relación lineal positiva débil entre las variables precio y área construida, es decir, que a medida que aumente el área construida se esperra que aumente también el precio.
La ecuación del modelo viene dada de la siguiente forma:
\[Y=\beta_{0}+\beta_{1}X+\epsilon\]
Donde:
\(Y\): representa a la variable dependiente o respuesta, en este caso, el precio por \(m^2\) en miles de COP.
\(X\): representa a la variable independiente, en este caso, el área construida en \(m^2\).
\(\epsilon\): es el error, variable aleatoria desconocida y que representa todas aquellas variables que no están incluidas en el modelo.
\(\beta_{0}\): coeficiente a estimar, denominado intercepto.
\(\beta_{1}\): coeficiente a estimar, denominado pendiente.
\(\beta_{0}\) y \(\beta_{1}\) conforman los parámetros a estimar para definir la recta:
\[\hat{y}_{i}=\hat\beta_{0}+\hat\beta_{1}x_{i}\]
De esta forma, el objetivo del modelo es predecir el precio \((Y)\) del \(m^2\) de un apartamento a partir del área construida \((X)\). Para esto es necesario estimar los parámetros \(\beta_{0}\) y \(\beta_{1}\) de la siguiente forma:
modelo=lm(formula = preciom ~ areaconst, data = apto4)
summary(modelo)
##
## Call:
## lm(formula = preciom ~ areaconst, data = apto4)
##
## Residuals:
## Min 1Q Median 3Q Max
## -228.412 -23.589 -4.653 25.674 207.336
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 36.62292 4.20667 8.706 <2e-16 ***
## areaconst 2.19868 0.05372 40.926 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 43.21 on 1358 degrees of freedom
## Multiple R-squared: 0.5522, Adjusted R-squared: 0.5519
## F-statistic: 1675 on 1 and 1358 DF, p-value: < 2.2e-16
La estimación de los parámetros \(\beta_{0}\) y \(\beta_{1}\) y la ecuación que representa el modelo lineal para relacionar el precio por \(m^2\) de un apartamento estrato 4 en función del área construida es:
\[\hat{y}=36.62 + 2.20x\]
El valor de \(36.62\) o \(\beta_{0}\) representa el punto de corte en el eje Y de la recta de regresión por mínimos cuadrados y el valor \(2.20\) o \(\beta_{1}\) representa la pendiente o la razón de cambio de la variable \((Y)\) con respecto a la variable \((X)\), es decir, una constante del modelo lineal que permite valorar el efecto generado sobre el precio ante cambios en el área construida.
A continuación se presenta la recta de regresión ajustada a los puntos por el método de mínimos cuadrados:
plot(x=apto4$areaconst, y=apto4$preciom, main="Gráfico de Dispersión Precio ~ Area", xlab="Area m2", ylab="Precio x m2")
abline(modelo, col="red", lwd=1)
Los intervalos de confianza para los parámetros se obtienen con el comando confint, con el argumento parm se selecciona la variable (areaconst) y con level se puede escoger el nivel de confianza, por defecto 0.95:
confint(modelo, parm="areaconst",level=0.95)
## 2.5 % 97.5 %
## areaconst 2.093294 2.304074
El intervalo de confianza del 95% para el coeficiente \(\beta_{1}\) es:
\[2.09 \leq \beta_{1} \leq 2.30\]
Para concluir si \(\beta_{1}\) es igual o diferente de 0, o lo que es lo mismo, para definir si la variable área construida es significativa para el modelo, se recurre a una prueba de hipótesis t. Para esto, a partir de la muestra disponible se obtiene un estadístico de prueba con distribución t-Student con v=n-2 (1358) grados de libertad:
\[H_{0}: \beta_{1}=0, H_{a}: \beta_{1}\neq 0\]
El resultado de la prueba de hipótesis planteada ya está disponible en el modelo de regresión presentado en el numeral 3.1. El estadístico t es 40.926 y el \(p-valor\) es 2e-16, o sea, muy pequeño y mucho menor al 5%, por tal razón se rechaza la hipótesis nula y se concluye que el coeficiente \(\beta_{1}\) es diferente de 0 y que la variable área construida si es estadísticamente significativa para explicar el comportamiento del precio en el modelo planteado.
El indicador de bondad de ajuste o también llamado coeficiente determinación \(R^2\) representa la proporción de la variablidad de la variable dependiente atribuible a la variabilidad de la variable independiente, o dicho de otra forma, refleja la bondad de ajuste de un modelo a la variable que pretende explicar.
El resultado del \(R^2\) se obtiene del resumen del modelo de regresión presentado en el numeral 3.1 y es \(R^2=0.55\), de esto se puede deducir que el 55% del cambio en el precio está explicado por la variable área construida en el modelo lineal planteado.
El \(R^2\) también se puede obtener elevando al cuadrado el coeficiente de correlación de Pearson.
R2m=cor(apto4$areaconst, apto4$preciom)^2
R2m
## [1] 0.5522478
Para estimar el precio promedio de un apartamento de \(110 m^2\) se utiliza la ecuación del modelo planteado en el numeral 3.2, reemplazando el valor de \(x\) por el área de interés:
\[\hat{y}=36.62292 + 2.19868*110=278.47\]
De acuerdo al modelo lineal planteado, se estima que el precio promedio del \(m^2\) de un apartamento estrato 4 de \(110 m^2\) es de 278.47 miles de COP.
Ahora se presenta un intervalo de confianza del 95% para la estimación del precio de un apartamento estrato 4 de \(110 m^2\):
predict(modelo, data.frame(areaconst=110), interval="confidence", level=0.95)
## fit lwr upr
## 1 278.4782 274.1502 282.8061
predict(modelo, data.frame(areaconst=110), interval="prediction", level=0.95)
## fit lwr upr
## 1 278.4782 193.605 363.3513
Un apartamento de las mismas condiciones si es una oferta atractiva para comprar por 200 miles de COP porque el precio estimiado por el modelo es de 278.47 miles de COP. Pero se debe tener en cuenta que la bondad de ajuste del modelo, medido por el coeficiente de determinación \(R^2\) solo es del 55%, que es un ajuste relativamente bajo, para apoyar la toma de la decisión se puede tener en cuenta el límite inferior del intervalo de confianza del 95% para la proyección, el cual es 193.6, de esta forma se concluye que la oferta podría no resultar atractiva y, para mejorar la precisión del modelo se debería buscar otras variables para explicar mejor el comportamiento del precio como: la disponibilidad de parqueadero, el número de habitaciones, el número de baños, la antiguedad de la construcción, etre otras.
Al realizar inferencia estadística como intervalos de confianza y pruebas de hipótesis sobre las estimaciones, es necesario validar los siguientes supuestos:
Primero: Normalidad: los errores siguen una distribución normal con media 0 y varianza \(\sigma^2\).
Segundo: Homocedasticidad: La varianza alrededor de la línea de regresión, para cualquier valor es constante.Un modelo predictivo presenta homocedasticidad cuando la varianza del error condicional a las variables explicativas es constante a lo largo de las observaciones.
Tercero: Linealidad: La relación entre la variable dependiente y las variables independientes y el error es lineal.
Cuarto: No autocorrelación: Los errores que corresponden a diferentes observaciones o diferentes tiempos deben ser independientes unos de otros, es decir, \(Cov[\epsilon_i,\epsilon_j]=0\)
Quinto: Outliers: Aunque no es un supuesto formal, se espera que los datos no contengan registros atípicos que generan sesgos en los estimadores de los coeficientes.
Se valida la normalidad de los errores a través del Test Shapiro-Wilk:
\[H_{0}: \epsilon\sim Normal, H_{a}: \epsilon-no\sim Normal\]
shapiro.test(modelo$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo$residuals
## W = 0.96464, p-value < 2.2e-16
Dado que el \(p-valor\) obtenido en el test de normalidad es menor al nivel de significancia del 5% se rechaza la hipótesis nula y se concluye que los errores no se distribuyen normalmente.
Se valida la hocedasticidad a través del Test Breusch-Pagan:
\[H_{0}: V[\epsilon_{i}]=\sigma^2, H_{a}: V[\epsilon_{i}]\neq\sigma^2\]
lmtest::bptest(modelo)
##
## studentized Breusch-Pagan test
##
## data: modelo
## BP = 303.81, df = 1, p-value < 2.2e-16
El \(p-valor\) es muy pequeño, casi cero, entonces se rechaza la hipótesis nula y se conluye que la varianza de los errores no es constante a lo largo de las observaciones.
Como se presentó en el numeral 2, de acuerdo a la dispersión de los puntos observada en el gráfico y al valor del coeficiente de correlación obtenido de 0.74 se concluye que existe una relación lineal positiva débil entre las variables precio y área construida.
Se valida la no autocorrelación de errores a través del Test Durbin-Watson:
\[H_{0}: V[\epsilon_{i},\epsilon_{j}]=0, V[\epsilon_{i},\epsilon_{j}]\neq0\]
lmtest::dwtest(modelo)
##
## Durbin-Watson test
##
## data: modelo
## DW = 1.4381, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
El \(p-valor\) es muy pequeño, casi cero, entonces se rechaza la hipótesis nula y se conluye que los errores presentan una autocorrelación mayor a cero.
En las dos variables, preciom y areacosnt se encuentran algunos datos atípicos que pueden generar sesgos en la estimación de los coeficientes.
par(cex=0.5, cex.axis=0.5, cex.lab=0.5, cex.main=0.5, cex.sub=0.5, mfrow=c(1, 2), mai=c(0.5, 0.5, 0.5, 0.5))
boxplot(apto4$preciom, main="Boxplot Precio x m2")
boxplot(apto4$areaconst, main="Boxplot Area m2")
Al complementar estas evidencias con el gráfico de dispersión de las dos
variables (Precio ~ Area) se observa que para áreas grandes, mayores a
120 \(m^2\), es más notoría la
desviación con respecto a la recta de regresión del modelo lineal.
Dado que el ajuste del modelo lineal planteado es relativamente bajo, coeficiente de determinación \(R^2\) igual a 55%, y no se cumplen los supuestos del modelo lineal, a continuación se prueban unas transformaciones en las variables para verificar inicialmente si es posible mejorar el ajuste y después la validación de los supuestos. Se prueban tres modelos alternativos: m2 transformación de la variable \(X\) a logarítmica, m3 transformación de la variable respuesta \(Y\) a logarítmica y m4 transformación de las variables \(X\) y \(Y\) a logarítmicas.
m1=lm(formula = preciom ~ areaconst, data = apto4) # Lin - Lin
m2=lm(formula = preciom ~ log(areaconst), data = apto4) # Lin - Log
m3=lm(formula = log(preciom) ~ areaconst, data = apto4) # Log - Lin
m4=lm(formula = log(preciom) ~ log(areaconst), data = apto4) # Log - Log
#install.packages("stargazer")
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(m1, m2, m3, m4, type="text", df=FALSE)
##
## =======================================================================
## Dependent variable:
## ---------------------------------------------------
## preciom log(preciom)
## (1) (2) (3) (4)
## -----------------------------------------------------------------------
## areaconst 2.199*** 0.010***
## (0.054) (0.0003)
##
## log(areaconst) 194.944*** 0.887***
## (4.518) (0.021)
##
## Constant 36.623*** -633.526*** 4.534*** 1.463***
## (4.207) (19.397) (0.020) (0.089)
##
## -----------------------------------------------------------------------
## Observations 1,360 1,360 1,360 1,360
## R2 0.552 0.578 0.518 0.577
## Adjusted R2 0.552 0.578 0.518 0.576
## Residual Std. Error 43.209 41.937 0.204 0.191
## F Statistic 1,674.927*** 1,861.648*** 1,460.654*** 1,850.326***
## =======================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
El ajuste del modelo inicial es del 55%, como se observa en la anterior tabla, el modelo m2 mejora en algo el ajuste con un coeficiente de determinción \(R^2\) del 58%.
summary(m2)
##
## Call:
## lm(formula = preciom ~ log(areaconst), data = apto4)
##
## Residuals:
## Min 1Q Median 3Q Max
## -195.847 -21.239 -1.573 22.108 261.907
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -633.526 19.397 -32.66 <2e-16 ***
## log(areaconst) 194.944 4.518 43.15 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 41.94 on 1358 degrees of freedom
## Multiple R-squared: 0.5782, Adjusted R-squared: 0.5779
## F-statistic: 1862 on 1 and 1358 DF, p-value: < 2.2e-16
Normalidad
shapiro.test(m2$residuals)
##
## Shapiro-Wilk normality test
##
## data: m2$residuals
## W = 0.95777, p-value < 2.2e-16
Homocedasticidad
lmtest::bptest(m2)
##
## studentized Breusch-Pagan test
##
## data: m2
## BP = 217.76, df = 1, p-value < 2.2e-16
Linealidad
cor(apto4$preciom, log(apto4$areaconst))
## [1] 0.7604044
No Autocorrelación
lmtest::dwtest(m2)
##
## Durbin-Watson test
##
## data: m2
## DW = 1.4796, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
De los resultados anteriores se conlcuye que el modelo m2, en el cual se transformó la variable explicativa \(X\) a logarítmica, aunque se mejora un poco el ajuste, tampoco se cumplen los supuestos de: normalidad, homocedasticidad y no autocorrelación, y tampoco mejora la linealidad con respecto al modelo inicial al pasar, el coeficiente de correlación de 0.74 a 0.76.
En el gráfico de dispersión precio~área se observa que para áreas grandes, mayores a 120 \(m^2\), aumenta la desviación de los datos a la recta de regresón. Entonces, por último se prueba, un modelo m5 limitando la muestra a apartamentos estrato 4 con área construida menor a 120 \(m^2\).
ap4120=apto4[apto4$areaconst<120, ]
head(ap4120)
## # A tibble: 6 × 3
## zona preciom areaconst
## <fct> <dbl> <dbl>
## 1 Zona Norte 220 52
## 2 Zona Norte 320 108
## 3 Zona Sur 290 96
## 4 Zona Norte 220 82
## 5 Zona Norte 220 75
## 6 Zona Norte 162 60
m5=lm(formula = preciom ~ areaconst, data = ap4120)
summary(m5)
##
## Call:
## lm(formula = preciom ~ areaconst, data = ap4120)
##
## Residuals:
## Min 1Q Median 3Q Max
## -168.665 -19.481 -2.152 22.887 164.367
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.5677 5.0569 1.101 0.271
## areaconst 2.6480 0.0691 38.321 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 37.47 on 1287 degrees of freedom
## Multiple R-squared: 0.5329, Adjusted R-squared: 0.5326
## F-statistic: 1468 on 1 and 1287 DF, p-value: < 2.2e-16
Normalidad
shapiro.test(m5$residuals)
##
## Shapiro-Wilk normality test
##
## data: m5$residuals
## W = 0.98342, p-value = 5.567e-11
En este último modelo m5 se observa que el ajuste no solo no mejora, sino que empeora, con respecto al modelo inicial, al pasar del 55% al 53% y tampoco se cumple el supuesto de normalidad en la distribución de los errores.