1. Análisis Exploratorio Univariado

knitr::opts_chunk$set(
    echo = FALSE,
    message = FALSE,
    warning = FALSE
)
library(readxl)
Datos <- read_excel("C:/Users/andre/Desktop/datos_vivienda-3.xlsx")
attach(Datos)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   240.0   251.2   305.0   332.1   395.0   480.0
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    80.0    86.0    97.0   115.7   130.0   195.0

## 
##  Shapiro-Wilk normality test
## 
## data:  Area_contruida
## W = 0.82949, p-value = 0.0005839
## 
##  Shapiro-Wilk normality test
## 
## data:  precio_millon
## W = 0.864, p-value = 0.002691
distribucion df AIC
mlinvweibull(Area_contruida) 2 251.9503
mlinvgamma(Area_contruida) 2 255.2770
mlbetapr(Area_contruida) 2 255.3025
mlinvgauss(Area_contruida) 2 256.3815
mllnorm(Area_contruida) 2 256.6097
mlgamma(Area_contruida) 2 258.1784
mlweibull(Area_contruida) 2 262.7299
mlrayleigh(Area_contruida) 1 271.6858
mlexp(Area_contruida) 1 301.0731
mllgamma(Area_contruida) 2 Inf
distribucion df AIC
mlinvweibull(precio_millon) 2 303.8583
mlinvgauss(precio_millon) 2 304.2362
mlinvgamma(precio_millon) 2 304.2475
mlbetapr(precio_millon) 2 304.2498
mllnorm(precio_millon) 2 304.4458
mlgamma(precio_millon) 2 304.7320
mlweibull(precio_millon) 2 306.0835
mlrayleigh(precio_millon) 1 324.3381
mlexp(precio_millon) 1 355.8791
mllgamma(precio_millon) 2 Inf

Al realizar un análisis exploratorio de las variables de interés, y realizar un test de normalidad de Shapiro-Wilk, el valor-p es signifitivamente menor que el nivel de significa 0.05, por lo cual no se puede adfirmar que las variables sigann una distribución de probabilidad normal; ahora bien, al realizar pruebas de bondad de ajuste entre múltiples distribuciones, se encuentra que para ambos casos, la distribución de probabilidad más cercana es la Weibull; por lo anterior, los estadísticos descriptivos tradicionales como la media, mediana y desviación estándar no permitirían explicar el comportamiento de las variables de manera adecuada.

2. Análisis Exploratorio Bivariado

plot(Area_contruida,precio_millon,xlab="Área construida en metros cuadrados",ylab="Precio en millones",col="blue",pch=21,bg="blue")

pearson=cor(precio_millon,Area_contruida,method="pearson")
spearman=cor(precio_millon,Area_contruida,method="spearman")

Desde un análisis visual preliminar, es posible observar que existe una relación directamente proporcional entre el precio por millón de las viviendas, y el área construida de estas; posteriormente, entre los 3 coeficientes de correlación disponibles en la función cor (Pearson, Spearman y Kendall), se realiza un análisis de los dos primeros, encontrando lo siguiente:

\(r_{pearson} = 0.9190295\)

\(r_{spearman} = 0.9173882\)

Por lo anterior, ambos coeficientes demuestran que existe una correlación fuerte y positiva entre las variables, es decir, a mayor área construida, mayor será el precio de la vivienda, y los coeficientes no son lo suficientemente distintos entre sí, por lo cual, se asume que hasta el momento se trata de una relación lineal (por el alto valor del coeficiente de correlación de Pearson) y a su vez, por sus características, monótona.

3. Modelo de Regresión Lineal Simple

regresion_lineal=lm(precio_millon~Area_contruida)
summary(regresion_lineal)
## 
## Call:
## lm(formula = precio_millon ~ Area_contruida)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -51.673 -25.612  -6.085  24.875  67.650 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      86.234     22.479   3.836 0.000796 ***
## Area_contruida    2.124      0.186  11.422 3.45e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 33.05 on 24 degrees of freedom
## Multiple R-squared:  0.8446, Adjusted R-squared:  0.8381 
## F-statistic: 130.5 on 1 and 24 DF,  p-value: 3.45e-11

Al realizar el modelo de regresión lineal simple entre las variables, los parámetros obtenidos son los siguientes:

\(\beta_0 = 86.234\)

\(\beta_1 = 2.124\)

Siendo así, la ecuación lineal que mejor se ajusta al conjunto de los datos está dada por:

\(Precio = 86.234 + 2.124*Area\)

Esto significa que, ante la eventual de una vivienda con un área 0 (Por ejemplo, vender el lote), el precio que se esperaría encontrar es de \(\beta_0\)= 86 millones; por otra parte, se encuentra también que por cada metro cuadrado adicional que tenga la vivienda, su precio aumentará en \(\beta_1\)= 2.124 millones.

4. Intervalo de Confianza e Hipótesis t

confint(regresion_lineal,2,conf=0.95)
##                  2.5 %   97.5 %
## Area_contruida 1.74017 2.507771
summary(regresion_lineal)
## 
## Call:
## lm(formula = precio_millon ~ Area_contruida)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -51.673 -25.612  -6.085  24.875  67.650 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      86.234     22.479   3.836 0.000796 ***
## Area_contruida    2.124      0.186  11.422 3.45e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 33.05 on 24 degrees of freedom
## Multiple R-squared:  0.8446, Adjusted R-squared:  0.8381 
## F-statistic: 130.5 on 1 and 24 DF,  p-value: 3.45e-11

Se realiza un intervalo de confianza para \(B_1\), es decir, la pendiente de la recta (La cual está relacionada con el área construida en metros cuadrados de las viviendas), y se encuentra que con un nivel de confianza del 95%, este parámetro se encuentra entre 1.74017 y 2.507771.

Por otra parte, se evidencia en la función summary, que esta emplea la prueba de hipótesis de t-student, y para el caso del Área construida, el p-valor es significativamente cercano a 0, por lo anterior, se rechaza la hipótesis nula de que el parámetro \(B_1\) sea 0, guardando coherencia con el anterior análisis del intervalo de confianza.

5. Indicador de bondad y ajuste

cor(Area_contruida,precio_millon)^2
## [1] 0.8446152

Se observa un coeficiente de determinación que indica la bondad y ajuste del modelo \(R_2\) elevado, de 0.8446, es decir, el 84.46% de los datos es explicado por el modelo de regresión lineal planteado.

6. Estimación

(predict(regresion_lineal,newdata=list(Area_contruida=110)))
##        1 
## 319.8706

Se realiza la estimación del precio para un apartamento de \(110m^2\) y se obtiene un precio estimado de 319.8 millones de pesos; al comparar este resultado con el supuesto de un apartamento a la venta por 200 millones, si se tuvier en cuenta únicamente el precio, se podría afirmar que la oferta sería bastante atractiva, ya que representa un costo en un 37% inferior al del precio estimado para un inmueble con esa área construida.

Sin embargo, el modelo bivariado actual no tiene en cuenta otras variables que guardan relevancia al tomar la decisión de adquirir una vivienda, como pueden ser: estrato, ubicación, cercanía a medios de transporte y vías principales, antigüedad, estado de los acabados, entre otros, que sería interesante considerar en un modelo multivariado para conocer cómo estos afectan el precio del inmueble.

7. Validación de Supuestos

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

Se genera el gráfico de los 4 supuestos del análisis de regresión lineal, y a continuación se analizan en profundidad:

7.1 El error es una variable aleatoria con media 0

mean(regresion_lineal$residuals)
## [1] -3.760347e-16

Al calcular el promedio de los residuos de la regresión, se observa que es un valor ínfimo que tiende a cero, por lo cual se confirma este supuesto.

7.2. El error es una variable aleatoria con varianza constante

require(lmtest)
bptest(regresion_lineal)
## 
##  studentized Breusch-Pagan test
## 
## data:  regresion_lineal
## BP = 5.8737, df = 1, p-value = 0.01537

Test de Breusch-Pagan

\(H_0\): Los residuos son Homocedásticos.

\(H_1\): Los residuos no son Homocedásticos.

Este supuesto hace referencia a la Homocedasticidad; para verificarlo, se emplea la prueba de Breusch-Pagan; aquí, se obtiene un p-value de 0.01537, el cual es inferior al nivel de significancia 0.05, por lo cual, se tendría que rechazar hipótesis nula \(H_0\), es decir, los residuos serían Heterocedásticos, por lo que la varianza entre estos no sería constante, violando este supuesto.

7.3 Los errores son independientes entre sí

require(car)
dwt(regresion_lineal,alternative="two.sided")
##  lag Autocorrelation D-W Statistic p-value
##    1      0.02511179      1.883052   0.794
##  Alternative hypothesis: rho != 0

Test de Durbin-Watson

\(H_0\): \(\rho =\) 0 (No existe correlación).

\(H_1\): \(\rho \not=\) 0 (Existe correlación).

Para validar este supuesto, se emplea la prueba de Durbin-Watson, para la cual, al obtener un p-valor de 0.788, por lo que no se rechaza la hipótesis nula y se puede asumir que no existe correlación entre las variables; además, según la bibliografía consultada, si el valor del estadístico de Durbin-Watson se encuentra entre 1.5 y 2.5, la correlación es baja, por lo cual existiría independencia entre los residuos para este caso en el que el valor es de 1.88, además, se evidencia un coeficiente de autocorrelación de tan solo 0.02, por lo cual, al ser tan baja la correlación, se puede concluir que los errores son independientes entre sí.

7.4 Los errores siguen una distribución normal

shapiro.test(regresion_lineal$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  regresion_lineal$residuals
## W = 0.95489, p-value = 0.3009

Test de Shapiro-Wilk

\(H_0\): La distribución es normal.

\(H_1\): La distribución no es normal.

Finalmente, para validar el supuesto de la distribución normal de los errores, se emplea el test de Shapiro-Wilk, en el cual se busca rechazar la hipótesis nula de que la distribución es normal. Siendo así, y al haber obtenido un valor-p de 0.3009, no se rechaza la hipótesis nula, y es posible concluir que los residuos siguen una distribución de probabilidad normal.

8. Transformaciones

Teniendo en cuenta que el modelo de regresión lineal no cumple con el supuesto de Homocedasticidad, se decide realizar pruebas con 3 modelos ajustados:

  1. Transformación Logarítmica: Aplicando Logaritmo en base 10 a la variable independiente X (Área construida)
  2. Transformación Exponencial = Aplicando Logaritmo natural a la variable dependiente Y (Precio por millón)
  3. Transformación de Doble Logaritmo = Aplicando logaritmo a ambas variables.

8.1. Transformación Logarítmica

regresion_logarea=lm(precio_millon~log10(Area_contruida))
summary(regresion_logarea)
## 
## Call:
## lm(formula = precio_millon ~ log10(Area_contruida))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -45.837 -20.153  -1.878  20.145  55.145 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)            -948.53      89.09  -10.65 1.42e-10 ***
## log10(Area_contruida)   626.03      43.47   14.40 2.63e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 27 on 24 degrees of freedom
## Multiple R-squared:  0.8963, Adjusted R-squared:  0.8919 
## F-statistic: 207.4 on 1 and 24 DF,  p-value: 2.63e-13
cor(precio_millon,log10(Area_contruida))
## [1] 0.946716
mean(regresion_logarea$residuals)
## [1] 8.545515e-16
bptest(regresion_logarea)
## 
##  studentized Breusch-Pagan test
## 
## data:  regresion_logarea
## BP = 5.8156, df = 1, p-value = 0.01588
dwt(regresion_logarea,alternative="two.sided")
##  lag Autocorrelation D-W Statistic p-value
##    1       0.0862521      1.736923     0.5
##  Alternative hypothesis: rho != 0
shapiro.test(regresion_logarea$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  regresion_logarea$residuals
## W = 0.96783, p-value = 0.568

8.2. Transformación Exponencial

regresion_logprecio=lm(log(precio_millon)~Area_contruida)
summary(regresion_logprecio)
## 
## Call:
## lm(formula = log(precio_millon) ~ Area_contruida)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.16503 -0.09255 -0.02221  0.08600  0.19822 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    5.048147   0.073371   68.80  < 2e-16 ***
## Area_contruida 0.006288   0.000607   10.36 2.46e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1079 on 24 degrees of freedom
## Multiple R-squared:  0.8172, Adjusted R-squared:  0.8096 
## F-statistic: 107.3 on 1 and 24 DF,  p-value: 2.456e-10
cor(log(precio_millon),Area_contruida)
## [1] 0.9040102
mean(regresion_logprecio$residuals)
## [1] -2.935947e-18
bptest(regresion_logprecio)
## 
##  studentized Breusch-Pagan test
## 
## data:  regresion_logprecio
## BP = 3.3385, df = 1, p-value = 0.06768
dwt(regresion_logprecio,alternative="two.sided")
##  lag Autocorrelation D-W Statistic p-value
##    1      0.01202285      1.923194   0.822
##  Alternative hypothesis: rho != 0
shapiro.test(regresion_logprecio$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  regresion_logprecio$residuals
## W = 0.94034, p-value = 0.1368

8.3. Transformación de Doble Logaritmo

regresion_logarea_logprecio=lm(log10(precio_millon)~log10(Area_contruida))
summary(regresion_logarea_logprecio)
## 
## Call:
## lm(formula = log10(precio_millon) ~ log10(Area_contruida))
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.057870 -0.032931 -0.006233  0.032578  0.069706 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)            0.85299    0.12694    6.72 5.97e-07 ***
## log10(Area_contruida)  0.80928    0.06194   13.06 2.11e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03847 on 24 degrees of freedom
## Multiple R-squared:  0.8767, Adjusted R-squared:  0.8716 
## F-statistic: 170.7 on 1 and 24 DF,  p-value: 2.109e-12
cor(log10(precio_millon),log10(Area_contruida))
## [1] 0.9363367
mean(regresion_logarea_logprecio$residuals)
## [1] 6.669407e-19
bptest(regresion_logarea_logprecio)
## 
##  studentized Breusch-Pagan test
## 
## data:  regresion_logarea_logprecio
## BP = 2.9947, df = 1, p-value = 0.08354
dwt(regresion_logarea_logprecio,alternative="two.sided")
##  lag Autocorrelation D-W Statistic p-value
##    1      0.07868721      1.773009   0.566
##  Alternative hypothesis: rho != 0
shapiro.test(regresion_logarea_logprecio$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  regresion_logarea_logprecio$residuals
## W = 0.94462, p-value = 0.173
cor(log10(precio_millon),log10(Area_contruida))^2
## [1] 0.8767264

9. Comparación Ajuste y Supuestos

Al analizar el comportamiento de los modelos ajustados, se puede apreciar que el comportamiento de la transformación logarítmica sigue incumpliendo con el supuesto de la homocedasticidad, al tener un p-valor en 0.01588 que no permite aceptar la hipótesis nula del test de Breusch-Pagan, que permitiría confirmar la homocedasticidad de los residuos.

Sin embargo, las transformación exponencial, y la de doble logaritmo, sí cumplen con este supuesto al tener un p-valor de 0.067 y 0.083 respectivamente; de igual manera, se verifica que para ambas transformaciones, se cumplen con los otros tres supuestos, por lo cual, se decide tomar como el modelo más ajustado a los datos el del doble logaritmo, puesto que el valor del coeficiente de correlación es el mayor entre estos dos modelos (Siendo de 0.93); a su vez, el valor de \(R^2= 0.8767\) permite concluir que el 87.67% de las parejas de datos se ajustan al modelo de doble logaritmo, siendo este parámetro de bondad de ajuste lo suficientemente alto para asegurar que efectivamente es un modelo acercado a la realidad.

```