Instalación de librerías

library(devtools)
## Warning: package 'devtools' was built under R version 4.3.1
## Loading required package: usethis
## Warning: package 'usethis' was built under R version 4.3.1
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.3.1
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.3.1
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(MASS)

Importación de Datos

install.packages("devtools") 
## Warning: package 'devtools' is in use and will not be installed
devtools::install_github("dgonxalex80/paqueteMETODOS") 
## Skipping install of 'paqueteMETODOS' from a github remote, the SHA1 (9696ffdc) has not changed since last install.
##   Use `force = TRUE` to force installation
library(paqueteMETODOS)
## Loading required package: cubature
## Warning: package 'cubature' was built under R version 4.3.1
## Loading required package: GGally
## Warning: package 'GGally' was built under R version 4.3.1
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.3.1
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
## Loading required package: summarytools
## Warning: package 'summarytools' was built under R version 4.3.1
## Loading required package: psych
## Warning: package 'psych' was built under R version 4.3.1
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
## Loading required package: tidyverse
## Warning: package 'tidyverse' was built under R version 4.3.1
## Warning: package 'tidyr' was built under R version 4.3.1
## Warning: package 'readr' was built under R version 4.3.1
## Warning: package 'purrr' was built under R version 4.3.1
## Warning: package 'forcats' was built under R version 4.3.1
## Warning: package 'lubridate' was built under R version 4.3.1
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ lubridate 1.9.2     ✔ tibble    3.2.1
## ✔ purrr     1.0.1     ✔ tidyr     1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ psych::%+%()    masks ggplot2::%+%()
## ✖ psych::alpha()  masks ggplot2::alpha()
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ✖ dplyr::select() masks MASS::select()
## ✖ tibble::view()  masks summarytools::view()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
data(vivienda4)

1. Análisis exploratorio de las variables precio de vivienda (millones de pesos COP) y área de la vivienda (metros cuadrados)

summarytools::descr(vivienda4)
## Non-numerical variable(s) ignored: zona, estrato, tipo
## Descriptive Statistics  
## vivienda4  
## N: 1706  
## 
##                     areaconst   preciom
## ----------------- ----------- ---------
##              Mean       87.63    225.37
##           Std.Dev       36.35     85.89
##               Min       40.00     78.00
##                Q1       60.00    160.00
##            Median       75.00    210.00
##                Q3       98.00    265.00
##               Max      200.00    760.00
##               MAD       22.24     75.61
##               IQR       38.00    105.00
##                CV        0.41      0.38
##          Skewness        1.53      1.49
##       SE.Skewness        0.06      0.06
##          Kurtosis        1.68      3.57
##           N.Valid     1706.00   1706.00
##         Pct.Valid      100.00    100.00

Revisión Datos faltantes

faltantes <- colSums(is.na(vivienda4))
faltantes
##      zona   estrato   preciom areaconst      tipo 
##         0         0         0         0         0

No existen datos faltantes en este dataset.

Precio de viviendas (millones de pesos COP)

summarytools::descr(vivienda4$preciom)
## Descriptive Statistics  
## vivienda4$preciom  
## N: 1706  
## 
##                     preciom
## ----------------- ---------
##              Mean    225.37
##           Std.Dev     85.89
##               Min     78.00
##                Q1    160.00
##            Median    210.00
##                Q3    265.00
##               Max    760.00
##               MAD     75.61
##               IQR    105.00
##                CV      0.38
##          Skewness      1.49
##       SE.Skewness      0.06
##          Kurtosis      3.57
##           N.Valid   1706.00
##         Pct.Valid    100.00
shapiro.test(vivienda4$preciom)
## 
##  Shapiro-Wilk normality test
## 
## data:  vivienda4$preciom
## W = 0.8896, p-value < 2.2e-16
boxplot(vivienda4$preciom,  xlab = "Precio viviendas", ylab = "Valor en millones", 
        las=1)

hist(vivienda4$preciom,freq = F)
lines(density(vivienda4$preciom))

El precio promedio de las viviendas de estrato 4 es $225.37 millones. El valor mínimo de es $78 millones y el valor máximo de $760 millones. El Q1 corresponde a $160 millones y el Q3 a $265 millones, lo que resulta en un rango intercuartil de $105 millones, es decir, el 50% de las viviendas se encuentran en ese rango de precio. Este conjunto de datos tiene un Skewness positivo con la media siendo superior a la mediana, lo cual indica que los datos tienen una distribución sesgada hacia la derecha, es decir, los precios de las viviendas tienden hacia el lado inferior, o en otras palabras, no existe una distribución normal en la que la mitad de las viviendas tengan valores por encima de la media y la otra mitad la tenga por debajo de la media. El coeficiente de Kurtosis con un valor superior a 3 indica que, comparado a una distribución normal, los datos tienen una distribución con influencia hacia los extremos o con valores que no están agrupados alrededor de la media. Esto significa que existe una alta probabilidad de obtener valores atípicos en su distribución, lo cual es posible apreciar en la gráfica.

Generación de conjuntos de datos según el tipo vivvienda: Apartamento y Casa

Se generan dos conjuntos de datos considerando el tipo de vivienda, esto con el fin de realizar un análisis más detallado entendiendo que cada tipo de vivienda tiene características diferentes y deben ser analizados de manera independiente.

vivienda_apto = subset(vivienda4, vivienda4$tipo=="Apartamento")
vivienda_casa = subset(vivienda4, vivienda4$tipo=="Casa")

Precio de vivienda tipo Casa

summarytools::descr(vivienda_casa$preciom)
## Descriptive Statistics  
## vivienda_casa$preciom  
## N: 343  
## 
##                     preciom
## ----------------- ---------
##              Mean    316.52
##           Std.Dev     96.79
##               Min    125.00
##                Q1    255.00
##            Median    300.00
##                Q3    360.00
##               Max    760.00
##               MAD     74.13
##               IQR    105.00
##                CV      0.31
##          Skewness      1.10
##       SE.Skewness      0.13
##          Kurtosis      2.43
##           N.Valid    343.00
##         Pct.Valid    100.00
shapiro.test(vivienda_casa$preciom)
## 
##  Shapiro-Wilk normality test
## 
## data:  vivienda_casa$preciom
## W = 0.94116, p-value = 1.993e-10
boxplot(vivienda_casa$preciom,  xlab = "Precio Casas", ylab = "Valor en millones", 
        las=1)

hist(vivienda_casa$preciom,freq = F)
lines(density(vivienda_casa$preciom))

Para las viviendas tipo “Casa” de estrato 4 se tiene un precio promedio de $316.52 millones y una desviación estándar de $96.79 millones. El valor mínimo de es $125 millones y el valor máximo de $760 millones. El Q1 corresponde a $255 millones y el Q3 a $360 millones, lo que resulta en un rango intercuartil de $105 millones, es decir, el 50% de las casas se encuentran en ese rango de precio. Este conjunto de datos tiene un Skewness positivo con la media siendo superior a la mediana, lo cual indica que los datos tienen una distribución sesgada hacia la derecha, es decir, los precios de las casas tienden hacia el lado inferior. El coeficiente de Kurtosis con un valor inferior a 3 indica que la mayoría de los precios están presentes cercanos a la media y que los datos tienen una distribución con poca presencia de valores atípicos.

Precio de vivienda tipo Apartamento

summarytools::descr(vivienda_apto$preciom)
## Descriptive Statistics  
## vivienda_apto$preciom  
## N: 1363  
## 
##                     preciom
## ----------------- ---------
##              Mean    202.44
##           Std.Dev     65.29
##               Min     78.00
##                Q1    153.00
##            Median    185.00
##                Q3    240.00
##               Max    645.00
##               MAD     59.30
##               IQR     86.50
##                CV      0.32
##          Skewness      1.44
##       SE.Skewness      0.07
##          Kurtosis      3.83
##           N.Valid   1363.00
##         Pct.Valid    100.00
shapiro.test(vivienda_apto$preciom)
## 
##  Shapiro-Wilk normality test
## 
## data:  vivienda_apto$preciom
## W = 0.89881, p-value < 2.2e-16
boxplot(vivienda_casa$preciom,  xlab = "Precio Apartamentos", ylab = "Valor en millones", 
        las=1)

hist(vivienda_apto$preciom,freq = F)
lines(density(vivienda_apto$preciom))

Para las viviendas tipo “Apartamento” de estrato 4 se tiene un precio promedio de $202.04 millones y una desviación estándar de $62.59 millones. El valor mínimo de es $78 millones y el valor máximo de $645 millones. El Q1 corresponde a $153 millones y el Q3 a $240 millones, lo que resulta en un rango intercuartil de $86.5 millones, es decir, el 50% de los apartamentos se encuentran en ese rango de precio. Este conjunto de datos tiene un Skewness positivo con la media siendo superior a la mediana, lo cual indica que los datos tienen una distribución sesgada hacia la derecha, es decir, los precios de los apartamentos tienden hacia el lado inferior. El coeficiente de Kurtosis con un valor superior a 3 indica que, comparado a una distribución normal, los datos tienen una distribución con influencia hacia los extremos o con valores que no están agrupados alrededor de la media. Esto significa que existe una alta probabilidad de obtener valores atípicos en su distribución, lo cual es posible apreciar en la gráfica.

Área de viviendas (metros cuadrados)

summarytools::descr(vivienda4$areaconst)
## Descriptive Statistics  
## vivienda4$areaconst  
## N: 1706  
## 
##                     areaconst
## ----------------- -----------
##              Mean       87.63
##           Std.Dev       36.35
##               Min       40.00
##                Q1       60.00
##            Median       75.00
##                Q3       98.00
##               Max      200.00
##               MAD       22.24
##               IQR       38.00
##                CV        0.41
##          Skewness        1.53
##       SE.Skewness        0.06
##          Kurtosis        1.68
##           N.Valid     1706.00
##         Pct.Valid      100.00
shapiro.test(vivienda4$areaconst)
## 
##  Shapiro-Wilk normality test
## 
## data:  vivienda4$areaconst
## W = 0.8168, p-value < 2.2e-16
boxplot(vivienda4$areaconst,  xlab = "Área construida", ylab = "metros cuadrados", 
        las=1)

hist(vivienda4$areaconst,freq = F)
lines(density(vivienda4$areaconst))

El área construida promedio de las viviendas de estrato 4 es 87.63 metros cuadrados (m2) y la desviación estándar de 36.35m2. El valor mínimo es 40 m2 y el valor máximo es 200 m2. El Q1 corresponde a 60 m2 y el Q3 a 98 m2, lo que resulta en un rango intercuartil de 38 m2, es decir, el 50% de las viviendas se encuentran en ese rango de área. Este conjunto de datos tiene un Skewness positivo con la media siendo superior a la mediana, lo cual indica que los datos tienen una distribución sesgada hacia la derecha, es decir, las áreas de las viviendas tienden hacia el lado inferior, o en otras palabras, no existe una distribución normal en la que la mitad de las viviendas tengan valores por encima de la media y la otra mitad la tenga por debajo de la media. El coeficiente de Kurtosis con un valor inferior a 3 indica que la mayoría de las áreas están presentes cercanas a la media y que los datos tienen una distribución con poca presencia de valores extremos.

Área de vivienda tipo Casa

summarytools::descr(vivienda_casa$areaconst)
## Descriptive Statistics  
## vivienda_casa$areaconst  
## N: 343  
## 
##                     areaconst
## ----------------- -----------
##              Mean      135.92
##           Std.Dev       40.39
##               Min       54.00
##                Q1      100.00
##            Median      130.00
##                Q3      170.00
##               Max      200.00
##               MAD       47.44
##               IQR       70.00
##                CV        0.30
##          Skewness        0.05
##       SE.Skewness        0.13
##          Kurtosis       -1.16
##           N.Valid      343.00
##         Pct.Valid      100.00
shapiro.test(vivienda_casa$areaconst)
## 
##  Shapiro-Wilk normality test
## 
## data:  vivienda_casa$areaconst
## W = 0.95342, p-value = 5.898e-09
boxplot(vivienda_casa$areaconst,  xlab = "Área construida Casas", ylab = "metros cuadrados", 
        las=1)

hist(vivienda_casa$areaconst,freq = F)
lines(density(vivienda_casa$areaconst))

El área construida promedio de las casas de estrato 4 es 135.92 m2 y la desviación estándar de 40.39m2. El valor mínimo es 54 m2 y el valor máximo es 200 m2. El Q1 corresponde a 100 m2 y el Q3 a 170 m2, lo que resulta en un rango intercuartil de 70 m2, es decir, el 50% de las casas se encuentran en ese rango de área. Este conjunto de datos tiene un Skewness cercano a cero con la media siendo levemente superior a la mediana, lo cual indica que los datos tienen una distribución que se puede considerar normal, es decir, las áreas de las viviendas tienden a tener la mitad de las casas con valores por encima de la media y la otra mitad con valores por debajo de la media. El coeficiente de Kurtosis con un valor inferior a 0 indica una distribución aplanada sin valores extremos o atípicos.

Área de vivienda tipo Apartamento

summarytools::descr(vivienda_apto$areaconst)
## Descriptive Statistics  
## vivienda_apto$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
shapiro.test(vivienda_apto$areaconst)
## 
##  Shapiro-Wilk normality test
## 
## data:  vivienda_apto$areaconst
## W = 0.82347, p-value < 2.2e-16
boxplot(vivienda_apto$areaconst,  xlab = "Área construida Apartamentos", ylab = "metros cuadrados", 
        las=1)

hist(vivienda_apto$areaconst,freq = F)
lines(density(vivienda_apto$areaconst))

El área construida promedio de los apartamentos de estrato 4 es de 75.48 m2 y la desviación estándar de 22.56m2. El valor mínimo es 40 m2 y el valor máximo es 200 m2. El Q1 corresponde a 60 m2 y el Q3 a 84 m2, lo que resulta en un rango intercuartil de 724 m2, es decir, el 50% de los apartamentos se encuentran en ese rango de área. Este conjunto de datos tiene un Skewness positivo con la media siendo superior a la mediana, lo cual indica que los datos tienen una distribución sesgada hacia la derecha, es decir, las áreas de los apartamentos tienden hacia el lado inferior. El coeficiente de Kurtosis con un valor muy superior a 3 indica que, comparado a una distribución normal, los datos tienen una distribución con influencia hacia los extremos o con valores que no están agrupados alrededor de la media. Esto significa que existe una alta probabilidad de obtener valores atípicos en su distribución, lo cual es posible apreciar en la gráfica.

2. Análisis exploratorio bivariado de datos de Precio de Viviendas en función del Área construida

Relación entre Precio y Área construida de viviendas

plot(vivienda4$areaconst,vivienda4$preciom,  
     xlab = "Área (m2)", 
     ylab = "Precio Viviendas (millones COP)",
     col="#447270",
     las=1)
grid()

cor(vivienda4$areaconst,vivienda4$preciom)
## [1] 0.7630166
cor.test(vivienda4$areaconst,vivienda4$preciom)
## 
##  Pearson's product-moment correlation
## 
## data:  vivienda4$areaconst and vivienda4$preciom
## t = 48.728, df = 1704, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.7424432 0.7821521
## sample estimates:
##       cor 
## 0.7630166

El coeficiente de correlación de Pearson obtenido para estas dos variables es de 0.76, lo cual indica una asociación lineal positiva entre moderada y fuerte La asociación positiva indica que a mayor área, mayor será el precio de la vivienda.

Relación entre Precio y Área construida de Casas

plot(vivienda_casa$areaconst,vivienda_casa$preciom,  
     xlab = "Área (m2)", 
     ylab = "Precio Casas (millones COP)",
     col="#447270",
     las=1)
grid()

cor.test(vivienda_casa$areaconst,vivienda_casa$preciom)
## 
##  Pearson's product-moment correlation
## 
## data:  vivienda_casa$areaconst and vivienda_casa$preciom
## t = 10.701, df = 341, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.4176778 0.5766731
## sample estimates:
##       cor 
## 0.5013964

El coeficiente de correlación de Pearson obtenido para estas dos variables es de 0.50, lo cual indica una asociación lineal positiva moderada. La asociación positiva indica que a mayor área, mayor será el precio de la casa.

Relación entre Precio y Área construida de Apartamentos

plot(vivienda_apto$areaconst,vivienda_apto$preciom,  
     xlab = "Área (m2)", 
     ylab = "Precio Apartamentos (millones COP)",
     col="#447270",
     las=1)
grid()

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

El coeficiente de correlación de Pearson obtenido para estas dos variables es de 0.74, lo cual indica una asociación lineal positiva entre moderada y fuerte. La asociación positiva indica que a mayor área, mayor será el precio del apartamento.

3. Modelo de Regresión Lineal

El modelo de regresión lineal tiene la siguiete ecuación de referencia:
y = β0 + β1 x + ε donde, x es la variable independiente conocida, en este caso el área construida en m2 y la variable dependiente, en este caso el precio de la vivienda β0 es el intercepto en el eje y β1 es la pendiente ε variable aleatori desconocida

Modelo de Regresión Lineal Simple para precio y área de viviendas

modRLS_Pre_Are = lm(preciom ~ areaconst, data = vivienda4)
summary(modRLS_Pre_Are)
## 
## Call:
## lm(formula = preciom ~ areaconst, data = vivienda4)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -195.86  -31.95   -8.95   27.87  431.17 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   67.381      3.510   19.20   <2e-16 ***
## areaconst      1.803      0.037   48.73   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 55.53 on 1704 degrees of freedom
## Multiple R-squared:  0.5822, Adjusted R-squared:  0.5819 
## F-statistic:  2374 on 1 and 1704 DF,  p-value: < 2.2e-16

El precio para una vivienda con área de “0m2” o intercepto con el eje y es de 67.38m2, valor para beta β0. El valor p de β0 es 2e-16 < 0.05 –> rechazo Ho: β0=0 El valor de beta β1 = 1.803 que es equivalente a la pendiente, que se interpreta al aumento en el precio por unidad de área construida. El R-cuadrado o coeficiente de determinación del modelo es de 0.58, lo cual indica que el 58% de la variación del precio se explica por la variación del área construida.

Modelo de Regresión Lineal Simple para precio y área de casas

modRLS_Pre_Are_c = lm(preciom ~ areaconst, data = vivienda_casa)
summary(modRLS_Pre_Are_c)
## 
## Call:
## lm(formula = preciom ~ areaconst, data = vivienda_casa)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -158.71  -52.01  -17.93   40.25  414.54 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 153.2252    15.9174   9.626   <2e-16 ***
## areaconst     1.2015     0.1123  10.701   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 83.87 on 341 degrees of freedom
## Multiple R-squared:  0.2514, Adjusted R-squared:  0.2492 
## F-statistic: 114.5 on 1 and 341 DF,  p-value: < 2.2e-16

El precio para una casa con área de “0m2” o intercepto con el eje y es de 153.22m2, valor para beta β0. El valor p de β0 es 2e-16 < 0.05 –> rechazo Ho: β0=0 El valor de beta β1 = 1.2 que es equivalente a la pendiente, que se interpreta al aumento en el precio por unidad de área construida. El R-cuadrado o coeficiente de determinación del modelo es de 0.24, lo cual indica que el 24% de la variación del precio se explica por la variación del área construida.

Modelo de Regresión Lineal Simple para precio y área de apartamentos

modRLS_Pre_Are_a = lm(preciom ~ areaconst, data = vivienda_apto)
summary(modRLS_Pre_Are_a)
## 
## Call:
## lm(formula = preciom ~ areaconst, data = vivienda_apto)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -225.404  -23.902   -4.754   25.763  209.021 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 39.04679    4.09977   9.524   <2e-16 ***
## areaconst    2.16473    0.05204  41.595   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 43.34 on 1361 degrees of freedom
## Multiple R-squared:  0.5597, Adjusted R-squared:  0.5594 
## F-statistic:  1730 on 1 and 1361 DF,  p-value: < 2.2e-16

El precio para un apartamento con área de “0m2” o intercepto con el eje y es de 39.04m2, valor para beta β0. El valor p de β0 es 2e-16 < 0.05 –> rechazo Ho: β0=0 El valor de beta β1 = 2.16 que es equivalente a la pendiente, que se interpreta al aumento en el precio por unidad de área construida. El R-cuadrado o coeficiente de determinación del modelo es de 0.55, lo cual indica que el 55% de la variación del precio se explica por la variación del área construida.

4. Intervalo de confianza (95%) para el coeficiente β1

Intervalos de confianza de betas para modelo Regresión Lineal entre precio y área de viviendas

confint(modRLS_Pre_Are)
##                 2.5 %    97.5 %
## (Intercept) 60.496208 74.265055
## areaconst    1.730404  1.875547
confint(object = modRLS_Pre_Are, parm="areaconst", level = 0.95)
##              2.5 %   97.5 %
## areaconst 1.730404 1.875547
t.test(modRLS_Pre_Are$residuals)
## 
##  One Sample t-test
## 
## data:  modRLS_Pre_Are$residuals
## t = -5.0997e-15, df = 1705, p-value = 1
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  -2.636165  2.636165
## sample estimates:
##    mean of x 
## -6.85424e-15

Intervalos de confianza de betas para modelo Regresión Lineal entre precio y área de casas

confint(modRLS_Pre_Are_c)
##                  2.5 %     97.5 %
## (Intercept) 121.916592 184.533755
## areaconst     0.980623   1.422293
confint(object = modRLS_Pre_Are_c, parm="areaconst", level = 0.95)
##              2.5 %   97.5 %
## areaconst 0.980623 1.422293
t.test(modRLS_Pre_Are_c$residuals)
## 
##  One Sample t-test
## 
## data:  modRLS_Pre_Are_c$residuals
## t = -3.1346e-15, df = 342, p-value = 1
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  -8.893851  8.893851
## sample estimates:
##     mean of x 
## -1.417395e-14

Intervalos de confianza de betas para modelo Regresión Lineal entre precio y área de apartamentos

confint(modRLS_Pre_Are_a)
##                2.5 %    97.5 %
## (Intercept) 31.00423 47.089340
## areaconst    2.06264  2.266826
confint(object = modRLS_Pre_Are_a, parm="areaconst", level = 0.95)
##             2.5 %   97.5 %
## areaconst 2.06264 2.266826
t.test(modRLS_Pre_Are_a$residuals)
## 
##  One Sample t-test
## 
## data:  modRLS_Pre_Are_a$residuals
## t = 2.4851e-16, df = 1362, p-value = 1
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  -2.301997  2.301997
## sample estimates:
##    mean of x 
## 2.916219e-16

En estos los casos el coeficiente no fue igual a 0 dado el valor t obtenido en comparación al p-value.

5. Indicador de bondad R2

Para el modelo de regresión Lineal Simple entre viviendas y área: El R-cuadrado o coeficiente de determinación del modelo es de 0.58, lo cual indica que el 58% de la variación del precio se explica por la variación del área construida, equivale a una relación fuerte.

Para el modelo de regresión Lineal Simple entre casas y área: El R-cuadrado o coeficiente de determinación del modelo es de 0.24, lo cual indica que el 24% de la variación del precio se explica por la variación del área construida, equivale a una relación entre moderada y débil.

Para el modelo de regresión Lineal Simple entre apartamentos y área: El R-cuadrado o coeficiente de determinación del modelo es de 0.55, lo cual indica que el 55% de la variación del precio se explica por la variación del área construida, equivale a una relación fuerte.

6. Uso de los modelos de Regresión Lineal Simple (RLS)

¿Cuál sería el precio promedio estimado para un apartamento de 110 metros cuadrados?

Si se aplica el modelo de RLS de viviendas -> modRLS_Pre_Are

predict(modRLS_Pre_Are, data.frame(areaconst=110), interval = "confidence", level = 0.95)
##        fit      lwr      upr
## 1 265.7079 262.6113 268.8046
predict(modRLS_Pre_Are, data.frame(areaconst=110), interval = "prediction", level = 0.95)
##        fit      lwr      upr
## 1 265.7079 156.7484 374.6675

Usando el modelo de RLS de viviendas se estima con una confianza del 95% que un apartamento de 110 m2 tendría un valor entre 262.6 y 268.8 millones, con un valor estimado de 265.7 millones.

Si se aplica el modelo de RLS de apartamentos -> modRLS_Pre_Are_a

predict(modRLS_Pre_Are_a, data.frame(areaconst=110), interval = "confidence", level = 0.95)
##        fit      lwr      upr
## 1 277.1674 272.9573 281.3775
predict(modRLS_Pre_Are_a, data.frame(areaconst=110), interval = "prediction", level = 0.95)
##        fit      lwr      upr
## 1 277.1674 192.0449 362.2899

Usando el modelo de RLS de apartamentos se estima con una confianza del 95% que un apartamento de 110 m2 tendría un valor entre 272.9 y 281.3 millones, con un valor estimado de 277.1 millones.

Una oferta por 200 millones para un apartamento con ese metraje se considera que es una oferta muy atractiva por su valor.

Como consideraciones adicionales se tendría que tener en cuenta que los modelos RLS se obtuvieron sin considerar la zona, lo cual significa que el valor promedio de los apartamentos puede variar también según su ubicación y la oferta podría ser menos atractiva si el promedio de la zona es inferior.

7. Validación de los supuestos de los modelos

Verificación gráfica de los supuestos sobre los errores

Para modelo de viviendas y área construida

hist(modRLS_Pre_Are$residuals)

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

Para modelo de apartamentos y área construida

hist(modRLS_Pre_Are_a$residuals)

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

Pruebas de hipótesis

Para modelo de viviendas

shapiro.test(modRLS_Pre_Are$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modRLS_Pre_Are$residuals
## W = 0.92671, p-value < 2.2e-16
bptest(modRLS_Pre_Are)
## 
##  studentized Breusch-Pagan test
## 
## data:  modRLS_Pre_Are
## BP = 152.8, df = 1, p-value < 2.2e-16
dwtest(modRLS_Pre_Are)
## 
##  Durbin-Watson test
## 
## data:  modRLS_Pre_Are
## DW = 1.6713, p-value = 5.124e-12
## alternative hypothesis: true autocorrelation is greater than 0

Acorde a los resultados de p-value del test de Shapiro-Wilk, se rechaza la hipótesis nula y se concluye que los errores no siguen una distribución normal.

Según el resultado de p-value del test Breusch-Pagan, la varianza del error no es constante a través de la linea de regresión para la variable independiente.

Los resultados del test de Durbin-Watson indican que hay autocorrelación positiva en los residuales del modelo, es decir, no son independientes unos de otros y existe un patrón en el error en observaciones diferentes.

Para modelo de casas

shapiro.test(modRLS_Pre_Are_c$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modRLS_Pre_Are_c$residuals
## W = 0.91197, p-value = 2.872e-13
bptest(modRLS_Pre_Are_c)
## 
##  studentized Breusch-Pagan test
## 
## data:  modRLS_Pre_Are_c
## BP = 1.8968, df = 1, p-value = 0.1684
dwtest(modRLS_Pre_Are_c)
## 
##  Durbin-Watson test
## 
## data:  modRLS_Pre_Are_c
## DW = 1.7073, p-value = 0.003161
## alternative hypothesis: true autocorrelation is greater than 0

Para el modelo de RLS basado en los datos de casas las pruebas de hipótesis dan resultados similares respecto a no seguir una distribución normal y la existencia de autocorrelación positiva. Respecto a la Homoscedasticidad, se puede asumir que la varianza es constante a través de la línea de regresión.

Para modelo de apartamentos

shapiro.test(modRLS_Pre_Are_a$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modRLS_Pre_Are_a$residuals
## W = 0.96486, p-value < 2.2e-16
bptest(modRLS_Pre_Are_a)
## 
##  studentized Breusch-Pagan test
## 
## data:  modRLS_Pre_Are_a
## BP = 292.99, df = 1, p-value < 2.2e-16
dwtest(modRLS_Pre_Are_a)
## 
##  Durbin-Watson test
## 
## data:  modRLS_Pre_Are_a
## DW = 1.443, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0

Los resultados son similares al modelo de viviendas.

Se sugiere intentar una transformación de variables del tipo Box-Cox.

8. Transformación de variables y estimación de Nuevos Modelos

Modelos de RLS de viviendas transformados

Se aplica transformación de variables para el modelo de RLS de viviendas (modRLS_Pre_Are) de los tipos: Lin-Log, Log-Lin y Log-Log. También se aplica el método de transformación Box-Cox.

Transformaciones Lin-Log, Log-Lin y Log-Log

summary(modRLS_Pre_Are)
## 
## Call:
## lm(formula = preciom ~ areaconst, data = vivienda4)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -195.86  -31.95   -8.95   27.87  431.17 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   67.381      3.510   19.20   <2e-16 ***
## areaconst      1.803      0.037   48.73   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 55.53 on 1704 degrees of freedom
## Multiple R-squared:  0.5822, Adjusted R-squared:  0.5819 
## F-statistic:  2374 on 1 and 1704 DF,  p-value: < 2.2e-16
modRLS_Pre_Are_LinLog = lm(preciom ~ log(areaconst), data = vivienda4)  
summary(modRLS_Pre_Are_LinLog)
## 
## Call:
## lm(formula = preciom ~ log(areaconst), data = vivienda4)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -192.72  -27.27   -3.56   23.58  419.52 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -610.083     16.085  -37.93   <2e-16 ***
## log(areaconst)  189.708      3.641   52.11   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 53.35 on 1704 degrees of freedom
## Multiple R-squared:  0.6144, Adjusted R-squared:  0.6142 
## F-statistic:  2715 on 1 and 1704 DF,  p-value: < 2.2e-16
modRLS_Pre_Are_LogLin = lm(log(preciom) ~ areaconst, data = vivienda4)      
summary(modRLS_Pre_Are_LogLin)
## 
## Call:
## lm(formula = log(preciom) ~ areaconst, data = vivienda4)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.80097 -0.16347 -0.02737  0.16610  1.14818 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 4.7238296  0.0143492  329.21   <2e-16 ***
## areaconst   0.0072020  0.0001513   47.61   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.227 on 1704 degrees of freedom
## Multiple R-squared:  0.5709, Adjusted R-squared:  0.5706 
## F-statistic:  2267 on 1 and 1704 DF,  p-value: < 2.2e-16
modRLS_Pre_Are_LogLog = lm(log(preciom) ~ log(areaconst), data = vivienda4)  
summary(modRLS_Pre_Are_LogLog)
## 
## Call:
## lm(formula = log(preciom) ~ log(areaconst), data = vivienda4)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.85459 -0.13422 -0.00746  0.13797  1.10104 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     1.91891    0.06281   30.55   <2e-16 ***
## log(areaconst)  0.78022    0.01422   54.88   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2083 on 1704 degrees of freedom
## Multiple R-squared:  0.6387, Adjusted R-squared:  0.6385 
## F-statistic:  3012 on 1 and 1704 DF,  p-value: < 2.2e-16

La transformación que dio un mejor resultado de R2 fue la Log-Log

Transformación Box-Cox para modelo de viviendas

bc = boxcox(lm(preciom ~ areaconst, data = vivienda4))

# lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] -0.1010101
nuevo_preciom = ((vivienda4$preciom ^ lambda) - 1 )/ lambda

modRLS_Pre_Are_boxcox = lm(nuevo_preciom ~ areaconst, data = vivienda4)
summary(modRLS_Pre_Are_boxcox)
## 
## Call:
## lm(formula = nuevo_preciom ~ areaconst, data = vivienda4)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.46721 -0.09421 -0.01425  0.09909  0.63617 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 3.769e+00  8.347e-03  451.57   <2e-16 ***
## areaconst   4.146e-03  8.799e-05   47.12   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.132 on 1704 degrees of freedom
## Multiple R-squared:  0.5658, Adjusted R-squared:  0.5655 
## F-statistic:  2220 on 1 and 1704 DF,  p-value: < 2.2e-16

De todas las transformaciones aplicadas al modelo de viviendas la de mejor resultado fue la del tipo Log-Log. log(Yi)=β0+β1log(Xi)+εi

Modelos de RLS de apartamentos transformados

Se aplica transformación de variables para el modelo de RLS de apartamentos (modRLS_Pre_Are_a) de los tipos: Lin-Log, Log-Lin y Log-Log. También se aplica el método de transformación Box-Cox.

Transformaciones Lin-Log, Log-Lin y Log-Log

summary(modRLS_Pre_Are_a)
## 
## Call:
## lm(formula = preciom ~ areaconst, data = vivienda_apto)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -225.404  -23.902   -4.754   25.763  209.021 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 39.04679    4.09977   9.524   <2e-16 ***
## areaconst    2.16473    0.05204  41.595   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 43.34 on 1361 degrees of freedom
## Multiple R-squared:  0.5597, Adjusted R-squared:  0.5594 
## F-statistic:  1730 on 1 and 1361 DF,  p-value: < 2.2e-16
modRLS_Pre_Are_a_LinLog = lm(preciom ~ log(areaconst), data = vivienda_apto)  
summary(modRLS_Pre_Are_a_LinLog)
## 
## Call:
## lm(formula = preciom ~ log(areaconst), data = vivienda_apto)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -196.252  -21.338   -1.579   22.096  261.436 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -635.532     19.092  -33.29   <2e-16 ***
## log(areaconst)  195.419      4.445   43.97   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 41.98 on 1361 degrees of freedom
## Multiple R-squared:  0.5868, Adjusted R-squared:  0.5865 
## F-statistic:  1933 on 1 and 1361 DF,  p-value: < 2.2e-16
modRLS_Pre_Are_a_LogLin = lm(log(preciom) ~ areaconst, data = vivienda_apto)      
summary(modRLS_Pre_Are_a_LogLin)
## 
## Call:
## lm(formula = log(preciom) ~ areaconst, data = vivienda_apto)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.98857 -0.13188 -0.01249  0.15595  0.66387 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 4.5512586  0.0194001  234.60   <2e-16 ***
## areaconst   0.0094530  0.0002463   38.38   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2051 on 1361 degrees of freedom
## Multiple R-squared:  0.5198, Adjusted R-squared:  0.5195 
## F-statistic:  1473 on 1 and 1361 DF,  p-value: < 2.2e-16
modRLS_Pre_Are_a_LogLog = lm(log(preciom) ~ log(areaconst), data = vivienda_apto)  
summary(modRLS_Pre_Are_a_LogLog)
## 
## Call:
## lm(formula = log(preciom) ~ log(areaconst), data = vivienda_apto)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.8890 -0.1119  0.0028  0.1343  0.7538 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     1.48373    0.08703   17.05   <2e-16 ***
## log(areaconst)  0.88175    0.02026   43.52   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1914 on 1361 degrees of freedom
## Multiple R-squared:  0.5819, Adjusted R-squared:  0.5816 
## F-statistic:  1894 on 1 and 1361 DF,  p-value: < 2.2e-16

Transformación Box-Cox para modelo de apartamentos

bc_apto = boxcox(lm(preciom ~ areaconst, data = vivienda_apto))

# lambda
lambda_apto <- bc_apto$x[which.max(bc_apto$y)]
lambda_apto
## [1] -0.06060606
nuevo_preciom_apto = ((vivienda_apto$preciom ^ lambda_apto) - 1 )/ lambda_apto

modRLS_Pre_Are_a_boxcox = lm(nuevo_preciom_apto ~ areaconst, data = vivienda_apto)
summary(modRLS_Pre_Are_a_boxcox)
## 
## Call:
## lm(formula = nuevo_preciom_apto ~ areaconst, data = vivienda_apto)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.71317 -0.09492 -0.00849  0.11447  0.47869 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 3.990726   0.014097  283.08   <2e-16 ***
## areaconst   0.006821   0.000179   38.12   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.149 on 1361 degrees of freedom
## Multiple R-squared:  0.5163, Adjusted R-squared:  0.5159 
## F-statistic:  1453 on 1 and 1361 DF,  p-value: < 2.2e-16

Para los modelos transformados de apartamentos el que tuvo mejor indicador de R2, con una leve mejoría en comparación al modelo inicial, fue el Lin-Log.

9. Comparación de los supuestos

Para modelo de viviendas y área construida con transformación Log-Log

hist(modRLS_Pre_Are_LogLog$residuals)

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

Pruebas de hipótesis para modelo de viviendas y área construida con transformación Log-Log

shapiro.test(modRLS_Pre_Are_LogLog$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modRLS_Pre_Are_LogLog$residuals
## W = 0.9934, p-value = 6.631e-07
bptest(modRLS_Pre_Are_LogLog)
## 
##  studentized Breusch-Pagan test
## 
## data:  modRLS_Pre_Are_LogLog
## BP = 65.105, df = 1, p-value = 7.101e-16
dwtest(modRLS_Pre_Are_LogLog)
## 
##  Durbin-Watson test
## 
## data:  modRLS_Pre_Are_LogLog
## DW = 1.5104, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0

Pruebas de hipótesis para modelo de viviendas y área construida con transformación Box-Cox

shapiro.test(modRLS_Pre_Are_boxcox$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modRLS_Pre_Are_boxcox$residuals
## W = 0.99385, p-value = 1.577e-06
bptest(modRLS_Pre_Are_boxcox)
## 
##  studentized Breusch-Pagan test
## 
## data:  modRLS_Pre_Are_boxcox
## BP = 39.473, df = 1, p-value = 3.326e-10
dwtest(modRLS_Pre_Are_boxcox)
## 
##  Durbin-Watson test
## 
## data:  modRLS_Pre_Are_boxcox
## DW = 1.4875, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0

En ninguno de los casos se cumplen lo supuestos sobre los errores.

10.Aplicación del modelo transformado y comparación con resultado inicial

Se aplica el modelo tranformado para responder a la siguiente pregunta: ¿Cuál sería el precio promedio estimado para un apartamento de 110 metros cuadrados?

predict(modRLS_Pre_Are_LogLog, data.frame(areaconst=110), interval = "confidence", level = 0.95)
##        fit      lwr      upr
## 1 5.586329 5.573436 5.599222
predict(modRLS_Pre_Are_LogLog, data.frame(areaconst=110), interval = "prediction", level = 0.95)
##        fit      lwr      upr
## 1 5.586329 5.177556 5.995102
exp(predict(modRLS_Pre_Are_LogLog, data.frame(areaconst=110), interval = "confidence", level = 0.95))
##        fit      lwr      upr
## 1 266.7546 263.3374 270.2162
exp(predict(modRLS_Pre_Are_LogLog, data.frame(areaconst=110), interval = "prediction", level = 0.95))
##        fit      lwr      upr
## 1 266.7546 177.2492 401.4576

Usando el modelo de RLS de viviendas transformado se estima con una confianza del 95% que un apartamento de 110 m2 tendría un valor entre 263.3 y 270.2 millones, con un valor estimado de 266.7 millones.