Introducción

El sector inmobiliario en Cali (Colombia), ha experimentado un notable crecimiento en los últimos años, impulsado por diversos factores como el aumento de la población, la inversión extranjera y el desarrollo de nuevos proyectos sociales y urbanísticos. Con el propósito de comprender la relación que tienen las principales variables de la vivienda en la ciudad, se llevará a cabo un análisis a partir del modelo de regresión lineal simple con la información recopilada del portal Fincaraiz para apartamentos de estrato 4 en la ciudad. Este informe servirá de fundamento para que la inmobiliaria A&C pueda establecer una mejor base en la toma de decisiones estratégicas en relación con los precios de la vivienda y el área de construcción.

Objetivo

El objetivo de este documento es desarrollar un análisis sobre el mejor modelo de regresión lineal simple en el sector inmobiliario de la ciudad de Cali, que permita a la empresa determinar los precios de los inmuebles a negociar en un futuro. Con este fin, se establecerán los siguientes objetivos específicos que respaldarán este análisis:

• Realizar un análisis exploratorio descriptivo de los precios y el área construida de los apartamentos estrato 4 en la ciudad de Cali. Igualmente, realizar un análisis bivariado de las variables precio y área construida.

• Estimar el modelo de regresión lineal simple, además de la interpretación de los indicadores, coeficientes y supuestos del modelo.

• Realizar la transformación del modelo y la estimación de diferentes modelos que mejoren los ajustes del modelo inicial y comprobación de los supuestos del modelo.

Métodos

Para el desarrollo de este informe, se hará uso de técnicas y herramientas estadísticas para organizar, resumir y presentar los datos recopilados de acuerdo con la guía del curso de metodos y simulación estadistica, la cual seguirá las siguientes etapas:

  1. Carga de datos y visualización previa.

  2. Análisis explotario de los datos y desarrollo del modelo de regresión lineal.

  3. Transformaciones del modelo inicial.

  4. Conclusiones

1. Carga de datos y visualización previa.

En este apartado, se realizará la carga de la base de datos original, se realizará una primera visualización de los datos obtenidos y se presentarán los paquetes a utilizar para el desarrollo del mismo.

1.1 Paquetes de librerías.

Consolidado de paquetes de librerias a utilizar en el proyecto.

library(paqueteMETODOS)
library(devtools)
library(dplyr)
library(ggplot2)
library(GGally)
library(naniar)
library(knitr)
library(rmarkdown)
library(xaringan)
library(blogdown)
library(kableExtra)
library(stargazer)
library(MASS)

1.2 Importación de datos

Al realizar el proceso de importación, se observa que el conjunto inicial de datos cuenta con un total de 1706 registros (filas - observaciones) y 5 variables (columnas) con diferentes tipos de datos como zona, estrato, precio en millones de pesos COP, area construida y tipo de vivienda.

Tal como se observa en la siguiente tabla, no se encuentran datos faltantes (NA) para el conjunto de datos del analisis.

#Descarga de la base de datos original
#devtools::install_github("dgonxalex80/paqueteMETODOS") 
data(vivienda4)

# Se crea una copia seguridad.
viviwork = vivienda4

# Se visualiza la existencia de datos faltantes por medio de un data frame
faltantes = colSums(is.na(vivienda4)) %>%
  as.data.frame()
colnames(faltantes) = "Faltantes"

kable(faltantes, caption = "Datos faltantes por variable") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), full_width = FALSE)
Datos faltantes por variable
Faltantes
zona 0
estrato 0
preciom 0
areaconst 0
tipo 0
# Se crea un subset con la variable tipo de vivienda = Apartamento
subset_aptos = subset(vivienda4, vivienda4$tipo == "Apartamento")

1.3 Distribución de variables.

Se realiza un análisis previo de las variables cualitativas: zona, estrato y tipo, para determinar que no haya errores dactilares en los datos o que no haya que realizar una limpieza de las variables.

Este ejercicio sirve igualmente para determinar, en principio, la dimensión que representan las variables. Por ejemplo, la Zona Sur es la que mayor participación tendrá en el análisis, al igual de la existencia única del Estrato cuatro (4).

Tal como lo menciona el ejercicio, se realizará un subset con el tipo de vivienda Apartamento para el desarrollo del Modelo de Regresión Lineal Simple, y se tendrá en cuenta 1363 registros.

summary(vivienda4$zona)
##  Zona Centro   Zona Norte   Zona Oeste Zona Oriente     Zona Sur 
##            8          288           60            6         1344
summary(vivienda4$estrato)
##    3    4    5    6 
##    0 1706    0    0
summary(vivienda4$tipo)
## Apartamento        Casa 
##        1363         343

2. Análisis exploratorio y desarrollo del modelo de regresión lineal.

2.1 Punto #1

1) 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.

2.1.1 Análisis de la variable precio de vivienda (millones de pesos COP)

El primer análisis propuesto está relacionado con los descriptivos de la variable precio. En ella encontramos que de todo el conjunto de datos, el precio promedio de un apartamento en Cali (dadas las demas condiciones de estrato y zona) está en los $237 millones de pesos; con viviendas desde los $207 hasta los $305 millones de pesos, y una gran concentración de precios entre entre los $220 y $250 millones de pesos.

El análisis de indicadores cómo la desviación estandar (13.29), el rango intercuartilico (14.79) y el coeficiente de variación (0,06) indican una baja variabilidad en los precios y dispersión de datos. El valor del sesgo (Skewness) de 1.28, indica que la distribución de los precios está sesgada hacia la derecha. En otras palabras, hay más precios por encima de la media que por debajo de ella, lo que sugiere una concentración de precios más bajos y una dispersión de precios más altos.

summarytools::descr(subset_aptos$preciom)
## Descriptive Statistics  
## subset_aptos$preciom  
## N: 1363  
## 
##                     preciom
## ----------------- ---------
##              Mean    237.68
##           Std.Dev     13.29
##               Min    207.41
##                Q1    228.79
##            Median    236.14
##                Q3    243.59
##               Max    305.19
##               MAD     10.98
##               IQR     14.79
##                CV      0.06
##          Skewness      1.28
##       SE.Skewness      0.07
##          Kurtosis      3.19
##           N.Valid   1363.00
##         Pct.Valid    100.00

En los siguientes graficos, diagrama de cajas e histograma, podemos observar el análisis y descripción mencionado. Desde los valores atipicos presentes en la variable y la distribución de los mismos.

par(mfrow = c(1, 2))  # Dividir el espacio de la pantalla en 2 filas y 1 columna
boxplot(subset_aptos$preciom,
        main = "[Diagrama de Cajas]",
        ylab = "Precio (en millones)",
        col = "#9abaf9",
        border = "#001865",
        cex.lab = 0.8,
        cex.axis = 0.8,
        cex.main = 1,
        cex.sub = 0.8)

hist(subset_aptos$preciom,
     main = "[Histograma]",
     ylab = "Frecuencia",
     xlab = "Precio (en millones)",
     col = "#9abaf9",
     border = "#001865",
     cex.lab = 0.8,
     cex.axis = 0.8,
     cex.main = 1,
     cex.sub = 0.8)

2.1.2 Analisis de la variable área construida de la vivienda (metros cuadrados)

Para los descriptivos de la variable área construida, se puede encontrar que de todo el conjunto de datos, el promedio del área para los apartamentos está en los 75.48 \(m^2\); con viviendas desde los 40 hasta los 200 \(m^2\) de area construida, y una gran concentración de área construida entre los 60 y 90 metros cuadrados.

El análisis de indicadores cómo la desviación estandar (22.56), el rango intercuartilico (24.00) y el coeficiente de variación (0.30) indican una variabilidad moderada en relación con la media de los datos. Los datos presentan una forma sesgada hacia la derecha (Skewness 2.08), caracterizada por una concentración de valores mas bajos hacia el lado derecho de la media.

#### 3.1.1 Analisis de precio general####
summarytools::descr(subset_aptos$areaconst)
## Descriptive Statistics  
## subset_aptos$areaconst  
## N: 1363  
## 
##                     areaconst
## ----------------- -----------
##              Mean       75.48
##           Std.Dev       22.56
##               Min       40.00
##                Q1       60.00
##            Median       70.00
##                Q3       84.00
##               Max      200.00
##               MAD       14.83
##               IQR       24.00
##                CV        0.30
##          Skewness        2.08
##       SE.Skewness        0.07
##          Kurtosis        6.32
##           N.Valid     1363.00
##         Pct.Valid      100.00

En los siguientes graficos, diagrama de cajas e histograma, podemos observar el análisis y descripción mencionado. Desde los valores atipicos presentes en la variable y la distribución de los mismos.

par(mfrow = c(1, 2))  # Dividir el espacio de la pantalla en 2 filas y 1 columna
boxplot(subset_aptos$areaconst,
        main = "[Diagrama de Cajas]",
        ylab = "Precio (en millones)",
        col = "#9abaf9",
        border = "#001865",
        cex.lab = 0.8,
        cex.axis = 0.8,
        cex.main = 1,
        cex.sub = 0.8)

hist(subset_aptos$areaconst,
     main = "[Histograma]",
     ylab = "Frecuencia",
     xlab = "Precio (en millones)",
     col = "#9abaf9",
     border = "#001865",
     cex.lab = 0.8,
     cex.axis = 0.8,
     cex.main = 1,
     cex.sub = 0.8)

2.2 Punto #2

2) 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.

2.2.1 Analisis exploratorio bivariado

Para ello, realizamos la funcion cor (x,y), la cual arroja un valor de 0.84 que puede ser interpretado como una fuerte relación lineal positiva entre las variables precio y área construida; pues a medida que la superficie construida aumenta, el precio de la vivienda también tiende a crecer.

correl_biv = cor(subset_aptos$preciom,subset_aptos$areaconst)
cat("El coeficiente de correlación es: ", correl_biv)
## El coeficiente de correlación es:  0.8463271

De igual manera, el gráfico de dispersión evidencia la relación lineal positiva entre las variables.

plot(subset_aptos$areaconst, subset_aptos$preciom,
     xlab = expression("Área Construida (m"^"2"~")"),
     ylab = "Precio en millones (COP)",
     main = "Gráfico de Dispersión",
     col = "#001865",          
     pch = 20,       
     cex = 1.2)

Por último, se utiliza la función ggpairs del paquete Ggally, que combina indicadores de correlación y gráficos en una sola matriz. Esta nos permite confirmar eficientemente el análisis exploratorio realizado en el punto 1 , además de integrar la correlación entre las dos variables de análisis para este ejercicio.

ggpairs(subset_aptos[,4:3], title="Matríz de Correlaciones")

2.3 Punto #3

3) Estime el modelo de regresión lineal simple entre precio=f(area)+ε. Interprete los coeficientes del modelo β0, β1 en caso de ser correcto.

Basándose en los resultados obtenidos, el modelo de regresión lineal simple es adecuado para describir la relación entre el precio de la vivienda y el área construida en los datos. Los coeficientes (coefficients) correspondientes al intercepto y la pendiente de la variable independiente:

  • El intercepto (β0) tiene un valor estimado de aproximadamente 200.1. Esto sugiere que el precio base de la vivienda es de alrededor de 200.1 millones de pesos colombianos cuando el área construida es cero. Sin embargo, en la práctica, esta interpretación puede no tener mucho sentido, ya que el área construida nunca puede ser cero en la mayoría de los casos (Se puede interpretar como un precio base para esa zona).

  • El coeficiente de la pendiente β1 (areaconst) tiene un valor estimado de aproximadamente 0.498. Esto indica que, en promedio, por cada unidad adicional de área construida en \(m^2\), el precio de la vivienda aumenta en alrededor de 0.498 millones de pesos colombianos.

Ambos coeficientes, el intercepto y el coeficiente de área construida, son altamente significativos (valor p muy pequeño). Esto indica que la relación entre el precio de la vivienda y el área construida es estadísticamente significativa.

# Modelo de regresión lineal simple
modelo = lm(preciom ~ areaconst, data = subset_aptos)
summary(modelo)
## 
## Call:
## lm(formula = preciom ~ areaconst, data = subset_aptos)
## 
## 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
ggplot(subset_aptos, aes(x = areaconst, y = preciom)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE, color = "blue") +
  labs(x = "Área construida",
       y = "Precio (en millones COP)") +
  ggtitle("Gráfico del Modelo de Regresión Lineal [Precio y Área Construida]") +
  annotate("text", x = min(subset_aptos$areaconst), y = max(subset_aptos$preciom),
           label = "y = 200.1 + 0.4984(x)", hjust = 0, vjust = 1, size = 3.5, color = "black")
## `geom_smooth()` using formula = 'y ~ x'

2.4 Punto #4

4) 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.

Para el coeficiente B1 (pendiente) se puede concluir que, con un nivel de confianza del 95%, el verdadero valor está entre aproximadamente 0.4817 y 0.5150. Cómo los intervalos del coeficiente no incluyen el valor cero, se puede decir que hay evidencia suficiente para afirmar que a) el coeficiente es distinto de cero y b) hay una relación lineal significativa entre las variables.

conf_int = confint(modelo, level = 0.95)
conf_int
##                   2.5 %     97.5 %
## (Intercept) 198.7494103 201.377500
## areaconst     0.4817357   0.515097

Por su parte, el test de correlación de Pearson realiza una prueba de hipótesis para determinar si hay una correlación significativa entre las dos variables. El valor p es esencialmente cero (p-value < 2.2e-16), lo que confirma la evidencia suficiente para rechazar la hipótesis nula donde la correlación entre preciom y areaconst es igual a cero (Ho = 0), y refuerza la interpretación de que la variable areaconst tiene un efecto significativo en el precio de la vivienda.

cor.test(subset_aptos$preciom,subset_aptos$areaconst)
## 
##  Pearson's product-moment correlation
## 
## data:  subset_aptos$preciom and subset_aptos$areaconst
## t = 58.616, df = 1361, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.8305531 0.8607445
## sample estimates:
##       cor 
## 0.8463271

2.5 Punto #5

5) Calcule e interprete el indicador de bondad \(R^2\)

El coeficiente de bondad o \(R^2\), representa la proporción de la varianza en la variable dependiente (preciom) que es explicada por el modelo. Es un valor que está entre 0 y 1, donde un valor más cercano a 1 indica un mejor ajuste del modelo a los datos, mientras que un valor más cercano a 0 indica un ajuste deficiente del modelo.

El indicador \(R^2\) del ejercicio es de 0.7162, lo que indica que aproximadamente el 71.62% de la variabilidad del precio de la vivienda es explicada por el modelo de regresión, y específicamente por su relación lineal con el área construida. El R-cuadrado ajustado es similar al R-cuadrado múltiple, pero tiene en cuenta el número de predictores en el modelo, por lo que no hay diferencias sustanciales.

resumen_modelo = summary(modelo)
r_cuadrado = resumen_modelo$r.squared
cat("El coeficiente de bondad es de:", r_cuadrado)
## El coeficiente de bondad es de: 0.7162696

2.6 Punto #6

6) ¿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?

Para estimar el precio promedio de un apartamento de 110 metros cuadrados usando el modelo de regresión lineal, se puede utilizar la ecuación de regresión y sustituir el valor para areaconst.

\[ Y = \beta_0 + \beta_1 X + \varepsilon \]

Precio = 200.1 + 0.4984 x (Area Construida)
Precio = 200.1 + 0.4984 × 110
Precio = 200.1 + 49.84
Precio = 254.92

Por lo tanto, el precio estimado para un apartamento de 110 \(m^2\) es de $254.92 millones COP. Teniendo en cuenta lo anterior, se puede decir que la oferta de un apartamento por $200 millones, en esa misma zona, sería una oferta muy atractiva para el cliente. Por su parte, en caso de ser posible la empresa podría validar la idea de subir un poco más el valor del inmueble bien sea para acercarse a la medía o al valor resultado del modelo, se podría proponer un valor aproximado de $215 o $220 millones COP.

2.7 Punto #7

7) 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.

2.7.1 Supuesto de Normalidad

“Los errores siguen una distribución normal (εi∼N(0,\(σ^2\)))”.

A continuación, se realizarán los test: 1. Shapiro-Wilk y 2. Anderson-Darling para validar la normalidad de una distribución de datos en el modelo propuesto.

Los valores p obtenidos son 0.5419 y 0,318, para el Shapiro-Wilk y Anderson-Darling, respectivamente. Dado que estos valores p son mayor que el nivel de significancia (0.05), no hay suficiente evidencia para rechazar la hipótesis nula de normalidad. Por ello, podemos inferir que los residuales del modelo siguen una distribución normal.

De igual forma, un valor de W cercano a 1 sugiere que los residuales del modelo se ajustan bien a una distribución normal. Para el ejercicio, el estadístico W marcó un valor de 0.9991, mientras que el estadistico A de 0.4239 sugiere que la discrepancia entre los datos y una distribución normal teórica no es muy grande.

shapiro.test(modelo$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo$residuals
## W = 0.99885, p-value = 0.5419
nortest::ad.test(modelo$residuals)
## 
##  Anderson-Darling normality test
## 
## data:  modelo$residuals
## A = 0.42398, p-value = 0.318

2.7.2 Supuesto de Homoscedasticidad

“La varianza al rededor de la linea de regresión, para cualquier valor constante V[ε] = \(σ^2\).

\[ H_0: V[ε_i] = σ^2 \] \[ H_a: V[ε_i] \neq σ^2 \]

A continuación, se realizarán los test: *1. Breusch-Pagan y 2. Goldfeld-Quandt para validar la homocedasticidad (también conocida como homogeneidad de varianza) de los errores en el modelo de regresión propuesto.

En el modelo, los valores p obtenidos son 0.3614 y 0.135, para Breusch-Pagan y Goldfeld-Quandt, respectivamente. Dado que los valores de p son mayores que el nivel de significancia tipico de 0.05, no hay evidencia sufuciente para rechazar la hipótesis nula de homocedasticidad. Por lo tanto, según los test evaluados, no se encuentra evidencia de que la varianza de los errores no sea constante (heterocedasticidad). Esto sugiere que el supuesto de homocedasticidad puede considerarse válido en el modelo.

Por su parte, tanto el valor bajo del estadístico BP (0.8328) como el valor cercano a 1 del estadístico GQ (1.0884) indican que no hay suficiente evidencia para rechazar la hipótesis nula de homocedasticidad.

lmtest::bptest(modelo)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo
## BP = 0.83288, df = 1, p-value = 0.3614
lmtest::gqtest(modelo)
## 
##  Goldfeld-Quandt test
## 
## data:  modelo
## GQ = 1.0884, df1 = 680, df2 = 679, p-value = 0.135
## alternative hypothesis: variance increases from segment 1 to 2

2.7.3 Supuesto de No Autocorrelación

“Los errores que corresponden a diferentes individuos o diferentes tiempo deben ser independintes unos de otros (Cov[εi,εj]=0)”. \[ H_0: E[\varepsilon_i, \varepsilon_j] = 0 \] \[ H_a: E[\varepsilon_i, \varepsilon_j] \neq 0 \]

Para este supuesto, se propone el uso del test de Durbin-Watson (DW), el cual se utiliza para detectar la presencia de autocorrelación en los residuos del modelo de regresión. Para el caso, el valor p obtenido es 0.6435. Dado que este valor p es mayor que el nivel de significancia típico de 0.05, no hay suficiente evidencia para rechazar la hipótesis nula de no autocorrelación. Por lo tanto, no se encuentra evidencia de autocorrelación en los residuos del modelo.

Por su parte, el Estadístico DW: 2.0204 sugiere una autocorrelación negativa (los residuos tienden a estar correlacionados negativamente entre sí o, no hay evidencia sustancial de autocorrelación de primer orden en los residuos del modelo de regresión).

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

A continuación, se validan gráficamente los supuestos del modelo:

  • Gráfico de dispersión de los residuos vs. valores ajustados (Residuals vs Fitted): En el gráfico se observa cierta linealidad y homocedasticidad. Los residuos se distribuyen aleatoriamente alrededor de cero y no se evidencia la existencia de un patrón en la dispersión de residuos.

  • Gráfico Q-Q (quantile-quantile): El gráfico evidencia que los residuos siguen una distribución normal, los puntos se alinean aproximadamente a lo largo de la diagonal.

par(mfrow = c(2,2))
# Suponiendo que 'modelo' es tu modelo de regresión
# Plot del modelo con personalización
plot(modelo, 
     col = "#9abaf9", 
     pch = 20, 
     lwd = 1, 
     cex = 1)

# Agregar una línea de identidad
abline(a = 0, 
       b = 1, 
       col = "#001865", 
       lty = 2)

2.7.4 Outlier Diagrama de Cajas

El diagrama de cajas muestra simetría y distribución uniforme de los residuos alrededor de cero como indicadores para validar las suposiciones del modelo de regresión lineal (no muestran ningún patrón).

boxplot(modelo$residuals,  
        main = "Outliers - Residuos del Modelo", 
        ylab = "Residuos",
        col = "#9abaf9",
        border = "#001865"
)

3. Transformaciones

Punto #8, #9 y #10

8.) De ser necesario realice una transformación apropiada para mejorar el ajuste y supuestos del modelo.
9.) De ser necesario compare el ajuste y supuestos del modelo inicial y el transformado.
10.) Estime varios modelos y compare los resultados obtenidos. En el mejor de los modelos, ¿se cumplen los supuestos sobre los errores?

Dado que existe una relación lineal entre las variables de análisis y se cumplen los supuestos del modelo, no es necesario realizar un proceso de transformación. Sin embargo, para efectos del ejercicio, se probarán algunas de las transformaciones más comunes para mostrar sus posibles cambios y efectos de la misma.

3.1 Transformación Box-Cox

El método box-cox permite encontrar el valor óptimo de Lambda (λ), para identificar la transformación más apropiada en el modelo de regresión lineal.

El resultado para este ejercicio, muestra que el valor da Lambda (λ) es 1, lo que confirma que el modelo no requeriría una transformación.

bc=boxcox(lm(subset_aptos$preciom ~ subset_aptos$areaconst), lambda = -1:1)

lambda = bc$x[which.max(bc$y)]
cat("El valor Lambda (λ) es: ", lambda)
## El valor Lambda (λ) es:  1

3.2 Transformaciones Logarítmicas (Log) y con la variable independiente X (areaconstr)

  • A continuación, se mostrarán los modelos para: a) Lin-Log; b) Log-Lin; c) Log-Log y d) Raiz Cuadrada (x). Posterior a ello, se integrará con el modelo inicial (Lin-Lin), para realizar la comparación y elección del modelo con el mejor ajuste.

Mod. 2 [Lin - Log]

modelo2 = lm(preciom ~ log(areaconst), data = subset_aptos) #Lin - Log
summary(modelo2)
## 
## Call:
## lm(formula = preciom ~ log(areaconst), data = subset_aptos)
## 
## 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(areaconst)  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
shapiro.test(modelo2$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo2$residuals
## W = 0.9971, p-value = 0.01302
nortest::ad.test(modelo2$residuals)
## 
##  Anderson-Darling normality test
## 
## data:  modelo2$residuals
## A = 1.1581, p-value = 0.005009
lmtest::bgtest(modelo2)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  modelo2
## LM test = 0.93995, df = 1, p-value = 0.3323
lmtest::dwtest(modelo2)
## 
##  Durbin-Watson test
## 
## data:  modelo2
## DW = 1.9464, p-value = 0.1587
## alternative hypothesis: true autocorrelation is greater than 0
par(mfrow = c(2,2))
plot(modelo2)

Mod. 3[Log - Lin]

modelo3 = lm(log(preciom) ~ areaconst, data = subset_aptos) #Log - Lin
summary(modelo3)
## 
## Call:
## lm(formula = log(preciom) ~ areaconst, data = subset_aptos)
## 
## 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 ***
## areaconst   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
shapiro.test(modelo3$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo3$residuals
## W = 0.99907, p-value = 0.7333
nortest::ad.test(modelo3$residuals)
## 
##  Anderson-Darling normality test
## 
## data:  modelo3$residuals
## A = 0.33717, p-value = 0.5044
lmtest::bgtest(modelo3)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  modelo3
## LM test = 0.17106, df = 1, p-value = 0.6792
lmtest::dwtest(modelo3)
## 
##  Durbin-Watson test
## 
## data:  modelo3
## DW = 2.0219, p-value = 0.6534
## alternative hypothesis: true autocorrelation is greater than 0
par(mfrow = c(2,2))
plot(modelo3)

Mod. 4 [Log - Log]

modelo4 = lm(log(preciom) ~ log(areaconst), data = subset_aptos) #Log - Log
summary(modelo4)
## 
## Call:
## lm(formula = log(preciom) ~ log(areaconst), data = subset_aptos)
## 
## 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(areaconst) 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
shapiro.test(modelo4$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo4$residuals
## W = 0.9985, p-value = 0.2868
nortest::ad.test(modelo4$residuals)
## 
##  Anderson-Darling normality test
## 
## data:  modelo4$residuals
## A = 0.58718, p-value = 0.1259
lmtest::bgtest(modelo4)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  modelo4
## LM test = 0.42812, df = 1, p-value = 0.5129
lmtest::dwtest(modelo4)
## 
##  Durbin-Watson test
## 
## data:  modelo4
## DW = 1.9635, p-value = 0.2469
## alternative hypothesis: true autocorrelation is greater than 0
par(mfrow = c(2,2))
plot(modelo4)

Mod. 5 [\(\sqrt{\text{x}}\)]

modelo5 = lm(preciom ~ sqrt(areaconst), data = subset_aptos) #Sqrt - Lin
summary(modelo5)
## 
## Call:
## lm(formula = preciom ~ sqrt(areaconst), data = subset_aptos)
## 
## 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(areaconst)   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
shapiro.test(modelo5$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo5$residuals
## W = 0.99832, p-value = 0.1983
lmtest::bptest(modelo5)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo5
## BP = 0.44573, df = 1, p-value = 0.5044
lmtest::dwtest(modelo5)
## 
##  Durbin-Watson test
## 
## data:  modelo5
## DW = 1.9891, p-value = 0.4163
## alternative hypothesis: true autocorrelation is greater than 0
par(mfrow=c(2,2))
plot(modelo5)

Interpretación de Resultados

Entre las consideraciones más importantes para determinar un mejor modelo o un mejor ajuste a los datos, se observa el que tenga un \(R^2\) más alto y un error estándar residual mas bajo. También se observa la significancia estadística de los coeficientes y la interpretación teórica de las variables del modelo.

Teniendo en cuenta estos indicadores, podemos observar que el Modelo 1 (inicial) tiene un R cuadrado ajustado ligeramente más alto que los demás modelos, lo que sugiere que explica un poco más de la variabilidad en la variable dependiente. Los Modelos 3 y 4 tienen errores estándar residuales más bajos, lo que indica un mejor ajuste de los datos.

La elección del mejor modelo dependerá de los objetivos de modelado y de cómo se interpreten los indicadores en el contexto de análisis. Sin embargo, para el ejercicio podríamos decir que los Modelo 3 y 5 parecen mejorar un poco los indicadores del modelo inicial, ya que tienen un \(R^2\) ajustado más alto y un error estándar residual más bajo.

stargazer(modelo, modelo2, modelo3, modelo4, modelo5, type="text", df=FALSE)
## 
## ====================================================================================
##                                           Dependent variable:                       
##                     ----------------------------------------------------------------
##                              preciom                log(preciom)          preciom   
##                         (1)          (2)          (3)          (4)          (5)     
## ------------------------------------------------------------------------------------
## areaconst             0.498***                  0.002***                            
##                       (0.009)                  (0.00004)                            
##                                                                                     
## log(areaconst)                    42.878***                  0.174***               
##                                    (0.794)                   (0.003)                
##                                                                                     
## sqrt(areaconst)                                                           9.445***  
##                                                                           (0.165)   
##                                                                                     
## Constant             200.063***   53.820***     5.318***     4.723***    156.386*** 
##                       (0.670)      (3.409)      (0.003)      (0.014)      (1.435)   
##                                                                                     
## ------------------------------------------------------------------------------------
## Observations           1,363        1,363        1,363        1,363        1,363    
## R2                     0.716        0.682        0.696        0.674        0.706    
## Adjusted R2            0.716        0.682        0.695        0.674        0.706    
## Residual Std. Error    7.081        7.496        0.030        0.031        7.206    
## F Statistic         3,435.808*** 2,919.088*** 3,110.029*** 2,814.311*** 3,270.505***
## ====================================================================================
## Note:                                                    *p<0.1; **p<0.05; ***p<0.01

Pruebas de los modelos

Finalmente, podemos concluir que, al realizar el ejercicio de las transformaciones, los valores finales del modelo para el precio de la vivienda teniendo en cuenta el área construida, no presentan gran diferencia entre sí.

Al realizar el ejercicio de calcular el valor de la vivienda con un área construida de 110 m2, tal como se pide en el ejemplo del ejercicio 6, obtenemos los siguientes resultados.

Modelo Inicial

\[ Y = \beta_0 + \beta_1 X + \varepsilon \]

Precio = 200.1 + 0.4984 x (Area Construida)
Precio = 200.1 + 0.4984 × 110
Precio = 200.1 + 49.84
Precio = 254.92

Modelo 3

\[ \log(\text{Y}) = \beta_0 + \beta_1 \times \text{X} + \varepsilon \]

\(Log(Precio)\) = 5.318 + 0.0020 x (Area Construida)
\(Log(Precio)\) = 5.318 + 0.0020 × 110
Precio = \(e^(5.318 + 0.22)\)
Precio = 254.36

Modelo 5

Precio = \(\beta_0 + \beta_1 \sqrt{\text{Area Construida}} + \varepsilon\)

Precio = 156.38 + 9.4454 x \(\sqrt{\text{Area Construida}}\)
Precio = 156.38 + 9.4454 × \(\sqrt{\text{110}}\)
Precio = 156.38 + 99.05
Precio = 255.44

Lo anterior, bajo el principio de que el modelo inicial cumplía con los supuestos del modelo de regresión lineal simple.

Conclusiones y recomendaciones.

A continuación, se organizan las conclusiones por áreas de interés. Para el ejercicio, detallaremos los estadísticos para las variables de precio y área construida en función del modelo de regresión lineal, ello proporcionará una estructurada de los hallazgos y facilitará la comprensión para la empresa en la toma de decisiones estratégicas.

Precio y área construida: Para el análisis de apartamentos de estrato cuatro (4), el precio promedio de una vivienda es de aproximadamente $237 millones de pesos, con precios que oscilan fuertemente entre los $220 y $250 millones en la zona sur de la ciudad. En cuanto al área construida, el promedio de los apartamentos es de 75.48 \(m^2\), con viviendas que van desde los 40 \(m^2\), concentrándose mayormente entre los 60 y 90 \(m^2\) para la misma zona de análisis. Estos hallazgos se alinean con los requisitos mínimos para las viviendas de interés social (VIS) en Colombia, que establecen un área habitable mínima de 42 \(m^2\) y un precio regulado de 150 smlmv, equivalente a 195 millones de pesos colombianos.

Análisis de correlación: De acuerdo con el análisis de los estadísticos arrojados por el programa, podemos inferir que entre el precio y el área construido hay una fuerte relación lineal positiva. Lo que indica que a medida que la superficie construida aumenta, el precio de la vivienda también aumenta.

Modelo de regresión lineal: De acuerdo con análisis del modelo de regresión lineal simple, podemos sugerir la siguiente formula para realizar el calculo del precio promedio con base en el área construida y/o a construir. Las transformaciones hechas, arrojaron resultados de precio muy similares, por lo que se sugiere el modelo inicial.

\[ \text{Precio} = \text{200.1} + \text{0.4984} \text{(Área Construida)} + \varepsilon \]

Hay que considerar igualmente que este modelo funciona bajo los criterios anteriormente mencionados. Por ello, en caso de querer extrapolar el modelo a otras zonas y estratos de la ciudad, es conveniente poder realizar un nuevo análisis de datos con esas variables.