library(readxl)
casas_guadalupe <- read_excel("CasasGuada.xlsx")
summary(casas_guadalupe)
## Precio Terreno Construcción Baños
## Min. : 950000 Min. : 71.0 Min. : 67.0 Min. :0.000
## 1st Qu.: 3200000 1st Qu.: 125.0 1st Qu.:150.0 1st Qu.:2.000
## Median : 4581000 Median : 165.0 Median :200.0 Median :2.500
## Mean : 6726929 Mean : 251.0 Mean :262.2 Mean :2.924
## 3rd Qu.: 8190000 3rd Qu.: 315.3 3rd Qu.:337.0 3rd Qu.:3.500
## Max. :39000000 Max. :1125.0 Max. :906.0 Max. :8.000
## Estacionamiento Recamaras Edad Privada
## Min. :0.000 Min. :2.000 Min. : 1.0 Min. :0.00
## 1st Qu.:1.000 1st Qu.:3.000 1st Qu.: 8.0 1st Qu.:0.00
## Median :2.000 Median :3.000 Median :13.0 Median :0.00
## Mean :1.992 Mean :3.432 Mean :17.7 Mean :0.36
## 3rd Qu.:2.000 3rd Qu.:4.000 3rd Qu.:27.0 3rd Qu.:1.00
## Max. :6.000 Max. :6.000 Max. :50.0 Max. :1.00
## Link
## Length:125
## Class :character
## Mode :character
##
##
##
hist(casas_guadalupe$Precio, main="Histograma de Precio", col="lightblue")
hist(casas_guadalupe$Terreno, main="Histograma de Terreno", col="lightgreen")
hist(casas_guadalupe$Construcción, main="Histograma de Construcción", col="lightpink")
hist(casas_guadalupe$Baños, main="Histograma de Baños", col="lightgray")
hist(casas_guadalupe$Estacionamiento, main="Histograma de Estacionamiento", col = "purple")
hist(casas_guadalupe$Recamaras, main="Histograma de Recámaras", col = "tomato")
hist(casas_guadalupe$Edad, main="Histograma de Edad", col = "orange")
modelo_uno <- lm(Precio ~ Terreno + Construcción + Baños + Estacionamiento + Recamaras + Edad + Privada, data = casas_guadalupe)
summary(modelo_uno)
##
## Call:
## lm(formula = Precio ~ Terreno + Construcción + Baños + Estacionamiento +
## Recamaras + Edad + Privada, data = casas_guadalupe)
##
## Residuals:
## Min 1Q Median 3Q Max
## -13163655 -766151 -76538 601298 22592112
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -430488 1262654 -0.341 0.734
## Terreno 12552 2218 5.658 1.11e-07 ***
## Construcción 13710 2974 4.611 1.03e-05 ***
## Baños 430530 284566 1.513 0.133
## Estacionamiento 154130 288703 0.534 0.594
## Recamaras -85100 325184 -0.262 0.794
## Edad -33696 22126 -1.523 0.130
## Privada -737010 625891 -1.178 0.241
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3011000 on 117 degrees of freedom
## Multiple R-squared: 0.7105, Adjusted R-squared: 0.6932
## F-statistic: 41.02 on 7 and 117 DF, p-value: < 2.2e-16
plot(modelo_uno)
Aqui los outliers serían la observación 90, 46, y 12 (Primer gráfico) El gráfico QQ, nos dice que tan dentro están los datos de la normal, para ello tienen que estar dentro de la linea roja. –> En este caso hay 3 observaciones que salen de ello, la observación 90, la 46 y la 12.
En la cuarta gráfica quieres que este todo dentro de las líneas punteadas, lo que estñe fuera son outliers. Observación 46 y 12.
residuales_uno <- residuals(modelo_uno)
hist(residuales_uno)
¿en la gráfica de arriba, describir como se ve la curtosis?
#install.packages(tseries)
library(tseries)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
boxplot(residuales_uno)
#install.packages(moments)
library(moments)
jarque.test(residuales_uno)
##
## Jarque-Bera Normality Test
##
## data: residuales_uno
## JB = 4995.7, p-value < 2.2e-16
## alternative hypothesis: greater
La H0 de jarque-bera es que los errores se distribuyen de forma normal Ha: los errores no se distribuyen de forma normal
En este caso se rechaza H0, los erroes no se distribuyen de forma normal
Ahora vamos a borrar los outliers para ver si mejora la normalidad
casas_guadalupe_limpia <- casas_guadalupe[c(-12, -46, -90, -103), ]
lm.limpio <- lm(Precio ~ Terreno + Construcción + Baños + Estacionamiento + Recamaras + Edad + Privada, data = casas_guadalupe_limpia)
residuales_limpio <- residuals(lm.limpio)
hist(residuales_limpio)
jarque.test(residuales_limpio)
##
## Jarque-Bera Normality Test
##
## data: residuales_limpio
## JB = 19.319, p-value = 6.382e-05
## alternative hypothesis: greater
Con este nuevo modelo, “La eliminación de outliers redujo la desviación de la normalidad, pero los residuos aún presentan evidencia estadística de no seguir una distribución normal.”
Ahora hacemos un modelo donde usamos logaritmos
modelo_log = lm(log(Precio) ~ Terreno + Construcción + Baños + Estacionamiento + Recamaras + Edad + Privada, data = casas_guadalupe_limpia)
residuales_log <- residuals(modelo_log)
hist(residuales_log)
jarque.test(residuales_log)
##
## Jarque-Bera Normality Test
##
## data: residuales_log
## JB = 6.0949, p-value = 0.04748
## alternative hypothesis: greater
Hay que intentar hacer el modelo usando logaritmos sin quitar tantas observaciones, es decir ir atrás
modelo_log2 <- lm(log(Precio) ~ Terreno + Construcción + Baños + Estacionamiento + Recamaras + Edad + Privada, data = casas_guadalupe)
residuales_log2 <- residuals(modelo_log2)
hist(residuales_log2)
jarque.test(residuales_log2)
##
## Jarque-Bera Normality Test
##
## data: residuales_log2
## JB = 12.494, p-value = 0.001936
## alternative hypothesis: greater
APARTIR DE AQUI HACEMOS VARIAS PRUBEAS DE DIFERENTES MODELOS
MODELO COMPLETO CON OUTLIERS, SIN LA VARIABLE DE ESTACIONAMIENTO
modelo_mejorado <- lm(Precio ~ Terreno + Construcción + Baños + Recamaras + Edad + Privada, data = casas_guadalupe)
summary(modelo_mejorado)
##
## Call:
## lm(formula = Precio ~ Terreno + Construcción + Baños + Recamaras +
## Edad + Privada, data = casas_guadalupe)
##
## Residuals:
## Min 1Q Median 3Q Max
## -13364836 -803283 -96365 636620 22548120
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -277410 1225936 -0.226 0.821
## Terreno 12811 2158 5.936 3.00e-08 ***
## Construcción 13934 2935 4.747 5.84e-06 ***
## Baños 456187 279628 1.631 0.105
## Recamaras -89557 324090 -0.276 0.783
## Edad -34522 22005 -1.569 0.119
## Privada -778150 619245 -1.257 0.211
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3002000 on 118 degrees of freedom
## Multiple R-squared: 0.7098, Adjusted R-squared: 0.695
## F-statistic: 48.1 on 6 and 118 DF, p-value: < 2.2e-16
residuales_mejor <- residuals(modelo_mejorado)
hist(residuales_mejor)
jarque.test(residuales_mejor)
##
## Jarque-Bera Normality Test
##
## data: residuales_mejor
## JB = 4928.6, p-value < 2.2e-16
## alternative hypothesis: greater
summary(modelo_mejorado)
##
## Call:
## lm(formula = Precio ~ Terreno + Construcción + Baños + Recamaras +
## Edad + Privada, data = casas_guadalupe)
##
## Residuals:
## Min 1Q Median 3Q Max
## -13364836 -803283 -96365 636620 22548120
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -277410 1225936 -0.226 0.821
## Terreno 12811 2158 5.936 3.00e-08 ***
## Construcción 13934 2935 4.747 5.84e-06 ***
## Baños 456187 279628 1.631 0.105
## Recamaras -89557 324090 -0.276 0.783
## Edad -34522 22005 -1.569 0.119
## Privada -778150 619245 -1.257 0.211
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3002000 on 118 degrees of freedom
## Multiple R-squared: 0.7098, Adjusted R-squared: 0.695
## F-statistic: 48.1 on 6 and 118 DF, p-value: < 2.2e-16
MODELO COMPLETO SIN OUTLIERS Y SIN LA VARIABLE DE ESTACIONAMIENTO –> Mejor R cuadrada (.89) y r cuadrada ajustada (.88) pero sin normalidad
modelo_mejorado2 <- lm(Precio ~ Terreno + Construcción + Baños + Recamaras + Edad + Privada, data = casas_guadalupe_limpia)
summary(modelo_mejorado)
##
## Call:
## lm(formula = Precio ~ Terreno + Construcción + Baños + Recamaras +
## Edad + Privada, data = casas_guadalupe)
##
## Residuals:
## Min 1Q Median 3Q Max
## -13364836 -803283 -96365 636620 22548120
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -277410 1225936 -0.226 0.821
## Terreno 12811 2158 5.936 3.00e-08 ***
## Construcción 13934 2935 4.747 5.84e-06 ***
## Baños 456187 279628 1.631 0.105
## Recamaras -89557 324090 -0.276 0.783
## Edad -34522 22005 -1.569 0.119
## Privada -778150 619245 -1.257 0.211
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3002000 on 118 degrees of freedom
## Multiple R-squared: 0.7098, Adjusted R-squared: 0.695
## F-statistic: 48.1 on 6 and 118 DF, p-value: < 2.2e-16
residuales_mejor2 <- residuals(modelo_mejorado2)
hist(residuales_mejor2)
jarque.test(residuales_mejor2)
##
## Jarque-Bera Normality Test
##
## data: residuales_mejor2
## JB = 23.823, p-value = 6.714e-06
## alternative hypothesis: greater
summary(modelo_mejorado2)
##
## Call:
## lm(formula = Precio ~ Terreno + Construcción + Baños + Recamaras +
## Edad + Privada, data = casas_guadalupe_limpia)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4906351 -676267 -73948 674604 4291886
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -323924 590148 -0.549 0.58416
## Terreno 14360 1582 9.080 3.84e-15 ***
## Construcción 9928 1701 5.836 5.12e-08 ***
## Baños 373520 137712 2.712 0.00772 **
## Recamaras -53399 154869 -0.345 0.73088
## Edad -12555 10785 -1.164 0.24683
## Privada -95182 303762 -0.313 0.75459
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1427000 on 114 degrees of freedom
## Multiple R-squared: 0.892, Adjusted R-squared: 0.8864
## F-statistic: 157 on 6 and 114 DF, p-value: < 2.2e-16
MODELO LOG COMPLETO SIN OUTLIERS (hasta ahorita el más cercano a la normalidad)
modelo_logmejor <- lm(log(Precio) ~ Terreno + Recamaras + Estacionamiento + Construcción + Baños + Edad + Privada, data = casas_guadalupe_limpia)
residuales_logmejor <- residuals(modelo_logmejor)
hist(residuales_logmejor)
jarque.test(residuales_logmejor)
##
## Jarque-Bera Normality Test
##
## data: residuales_logmejor
## JB = 6.0949, p-value = 0.04748
## alternative hypothesis: greater
summary(modelo_logmejor)
##
## Call:
## lm(formula = log(Precio) ~ Terreno + Recamaras + Estacionamiento +
## Construcción + Baños + Edad + Privada, data = casas_guadalupe_limpia)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.94889 -0.17921 0.01295 0.21653 0.51719
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.425e+01 1.215e-01 117.287 < 2e-16 ***
## Terreno 1.841e-03 3.346e-04 5.503 2.36e-07 ***
## Recamaras 5.545e-02 3.122e-02 1.776 0.07840 .
## Estacionamiento 3.666e-02 2.851e-02 1.286 0.20102
## Construcción 1.098e-03 3.429e-04 3.202 0.00177 **
## Baños 7.930e-02 2.833e-02 2.799 0.00602 **
## Edad 1.086e-06 2.189e-03 0.000 0.99961
## Privada -1.364e-02 6.142e-02 -0.222 0.82465
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2877 on 113 degrees of freedom
## Multiple R-squared: 0.801, Adjusted R-squared: 0.7887
## F-statistic: 64.99 on 7 and 113 DF, p-value: < 2.2e-16
MODELO LOG SIN OUTLIERS Y SIN RECÁMARAS–> CON NORMALIDAD y R cuadrada de .79 y r cuadrada ajustada de .78
modelo_logmejor2 <- lm(log(Precio) ~ Terreno + Estacionamiento + Construcción + Baños + Edad + Privada, data = casas_guadalupe_limpia)
residuales_logmejor2 <- residuals(modelo_logmejor2)
hist(residuales_logmejor2)
jarque.test(residuales_logmejor2)
##
## Jarque-Bera Normality Test
##
## data: residuales_logmejor2
## JB = 5.9128, p-value = 0.05201
## alternative hypothesis: greater
summary(modelo_logmejor2)
##
## Call:
## lm(formula = log(Precio) ~ Terreno + Estacionamiento + Construcción +
## Baños + Edad + Privada, data = casas_guadalupe_limpia)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.99899 -0.18024 0.03668 0.19418 0.51099
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.4115522 0.0792647 181.816 < 2e-16 ***
## Terreno 0.0017993 0.0003369 5.341 4.77e-07 ***
## Estacionamiento 0.0360869 0.0287720 1.254 0.212321
## Construcción 0.0011923 0.0003420 3.487 0.000696 ***
## Baños 0.0872077 0.0282373 3.088 0.002528 **
## Edad -0.0005609 0.0021860 -0.257 0.797939
## Privada -0.0172246 0.0619688 -0.278 0.781550
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2904 on 114 degrees of freedom
## Multiple R-squared: 0.7955, Adjusted R-squared: 0.7847
## F-statistic: 73.9 on 6 and 114 DF, p-value: < 2.2e-16
MODELO LOG SIN OUTLIERS, SIN VARIABE ESTACIONAMIENTO —> no es normal
modelo_log3 <- lm(log(Precio) ~ Terreno + Recamaras + Construcción + Baños + Edad + Privada, data = casas_guadalupe_limpia)
residuales_log3 <- residuals(modelo_log3)
hist(residuales_log3)
jarque.test(residuales_log3)
##
## Jarque-Bera Normality Test
##
## data: residuales_log3
## JB = 7.4585, p-value = 0.02401
## alternative hypothesis: greater
summary(modelo_log3)
##
## Call:
## lm(formula = log(Precio) ~ Terreno + Recamaras + Construcción +
## Baños + Edad + Privada, data = casas_guadalupe_limpia)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.95384 -0.19817 0.03155 0.20884 0.52268
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.2785288 0.1193040 119.682 < 2e-16 ***
## Terreno 0.0019717 0.0003197 6.167 1.09e-08 ***
## Recamaras 0.0549957 0.0313082 1.757 0.08167 .
## Construcción 0.0010937 0.0003439 3.180 0.00190 **
## Baños 0.0865460 0.0278399 3.109 0.00237 **
## Edad -0.0003223 0.0021803 -0.148 0.88276
## Privada -0.0198747 0.0614084 -0.324 0.74680
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2886 on 114 degrees of freedom
## Multiple R-squared: 0.7981, Adjusted R-squared: 0.7875
## F-statistic: 75.11 on 6 and 114 DF, p-value: < 2.2e-16
MODELO LOG SIN OUTLIERS, SIN ESTACIONAMIENTO Y SIN RECÁMARAS
log_final <- lm(log(Precio) ~ Terreno + Construcción + Baños + Edad + Privada, data = casas_guadalupe_limpia)
residuales_logfinal <- residuals(log_final)
hist(residuales_logfinal)
jarque.test(residuales_logfinal)
##
## Jarque-Bera Normality Test
##
## data: residuales_logfinal
## JB = 6.9692, p-value = 0.03067
## alternative hypothesis: greater
summary(log_final)
##
## Call:
## lm(formula = log(Precio) ~ Terreno + Construcción + Baños +
## Edad + Privada, data = casas_guadalupe_limpia)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.00346 -0.19790 0.03569 0.20429 0.55729
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.4413072 0.0758195 190.470 < 2e-16 ***
## Terreno 0.0019281 0.0003216 5.995 2.4e-08 ***
## Construcción 0.0011873 0.0003428 3.464 0.000750 ***
## Baños 0.0942773 0.0277379 3.399 0.000931 ***
## Edad -0.0008747 0.0021770 -0.402 0.688585
## Privada -0.0233315 0.0619309 -0.377 0.707066
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2912 on 115 degrees of freedom
## Multiple R-squared: 0.7926, Adjusted R-squared: 0.7836
## F-statistic: 87.92 on 5 and 115 DF, p-value: < 2.2e-16