Utilizar Base de datos
## Downloading GitHub repo centromagis/paqueteMODELOS@HEAD
## stringi (1.8.3 -> 1.8.4 ) [CRAN]
## rlang (1.1.1 -> 1.1.4 ) [CRAN]
## glue (1.6.2 -> 1.7.0 ) [CRAN]
## cli (3.6.1 -> 3.6.3 ) [CRAN]
## Rcpp (1.0.11 -> 1.0.13 ) [CRAN]
## digest (0.6.34 -> 0.6.37 ) [CRAN]
## curl (5.2.0 -> 5.2.2 ) [CRAN]
## fastmap (1.1.1 -> 1.2.0 ) [CRAN]
## xfun (0.46 -> 0.47 ) [CRAN]
## matrixStats (1.3.0 -> 1.4.0 ) [CRAN]
## htmltools (0.5.7 -> 0.5.8.1) [CRAN]
## Installing 11 packages: stringi, rlang, glue, cli, Rcpp, digest, curl, fastmap, xfun, matrixStats, htmltools
## Installing packages into 'C:/Users/Usuario/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
##
## There is a binary version available but the source version is later:
## binary source needs_compilation
## matrixStats 1.3.0 1.4.0 TRUE
##
## Binaries will be installed
## package 'stringi' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'stringi'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Usuario\AppData\Local\R\win-library\4.3\00LOCK\stringi\libs\x64\stringi.dll
## a
## C:\Users\Usuario\AppData\Local\R\win-library\4.3\stringi\libs\x64\stringi.dll:
## Permission denied
## Warning: restored 'stringi'
## package 'rlang' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'rlang'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Usuario\AppData\Local\R\win-library\4.3\00LOCK\rlang\libs\x64\rlang.dll
## a C:\Users\Usuario\AppData\Local\R\win-library\4.3\rlang\libs\x64\rlang.dll:
## Permission denied
## Warning: restored 'rlang'
## package 'glue' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'glue'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Usuario\AppData\Local\R\win-library\4.3\00LOCK\glue\libs\x64\glue.dll
## a C:\Users\Usuario\AppData\Local\R\win-library\4.3\glue\libs\x64\glue.dll:
## Permission denied
## Warning: restored 'glue'
## package 'cli' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'cli'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Usuario\AppData\Local\R\win-library\4.3\00LOCK\cli\libs\x64\cli.dll a
## C:\Users\Usuario\AppData\Local\R\win-library\4.3\cli\libs\x64\cli.dll:
## Permission denied
## Warning: restored 'cli'
## package 'Rcpp' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'Rcpp'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Usuario\AppData\Local\R\win-library\4.3\00LOCK\Rcpp\libs\x64\Rcpp.dll
## a C:\Users\Usuario\AppData\Local\R\win-library\4.3\Rcpp\libs\x64\Rcpp.dll:
## Permission denied
## Warning: restored 'Rcpp'
## package 'digest' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'digest'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Usuario\AppData\Local\R\win-library\4.3\00LOCK\digest\libs\x64\digest.dll
## a C:\Users\Usuario\AppData\Local\R\win-library\4.3\digest\libs\x64\digest.dll:
## Permission denied
## Warning: restored 'digest'
## package 'curl' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'curl'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Usuario\AppData\Local\R\win-library\4.3\00LOCK\curl\libs\x64\curl.dll
## a C:\Users\Usuario\AppData\Local\R\win-library\4.3\curl\libs\x64\curl.dll:
## Permission denied
## Warning: restored 'curl'
## package 'fastmap' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'fastmap'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Usuario\AppData\Local\R\win-library\4.3\00LOCK\fastmap\libs\x64\fastmap.dll
## a
## C:\Users\Usuario\AppData\Local\R\win-library\4.3\fastmap\libs\x64\fastmap.dll:
## Permission denied
## Warning: restored 'fastmap'
## package 'xfun' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'xfun'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Usuario\AppData\Local\R\win-library\4.3\00LOCK\xfun\libs\x64\xfun.dll
## a C:\Users\Usuario\AppData\Local\R\win-library\4.3\xfun\libs\x64\xfun.dll:
## Permission denied
## Warning: restored 'xfun'
## package 'matrixStats' successfully unpacked and MD5 sums checked
## package 'htmltools' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'htmltools'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Usuario\AppData\Local\R\win-library\4.3\00LOCK\htmltools\libs\x64\htmltools.dll
## a
## C:\Users\Usuario\AppData\Local\R\win-library\4.3\htmltools\libs\x64\htmltools.dll:
## Permission denied
## Warning: restored 'htmltools'
##
## The downloaded binary packages are in
## C:\Users\Usuario\AppData\Local\Temp\RtmpeEIMq8\downloaded_packages
## ── R CMD build ─────────────────────────────────────────────────────────────────
##
✔ checking for file 'C:\Users\Usuario\AppData\Local\Temp\RtmpeEIMq8\remotes47207acf7523\Centromagis-paqueteMODELOS-78ce06f/DESCRIPTION'
##
─ preparing 'paqueteMODELOS': (2.8s)
## checking DESCRIPTION meta-information ...
✔ checking DESCRIPTION meta-information
##
─ checking for LF line-endings in source and make files and shell scripts
##
─ checking for empty or unneeded directories
##
─ building 'paqueteMODELOS_0.1.0.tar.gz'
##
##
## Installing package into 'C:/Users/Usuario/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## Loading required package: boot
## Loading required package: broom
## Warning: package 'broom' was built under R version 4.3.3
## Loading required package: GGally
## Warning: package 'GGally' was built under R version 4.3.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.3.3
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
## Loading required package: gridExtra
## Warning: package 'gridExtra' was built under R version 4.3.2
## Loading required package: knitr
## Warning: package 'knitr' was built under R version 4.3.3
## Loading required package: summarytools
## Warning: package 'summarytools' was built under R version 4.3.2
## Warning: package 'bbmle' was built under R version 4.3.3
data("vivienda")
str(vivienda)
## spc_tbl_ [8,322 × 13] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ id : num [1:8322] 1147 1169 1350 5992 1212 ...
## $ zona : chr [1:8322] "Zona Oriente" "Zona Oriente" "Zona Oriente" "Zona Sur" ...
## $ piso : chr [1:8322] NA NA NA "02" ...
## $ estrato : num [1:8322] 3 3 3 4 5 5 4 5 5 5 ...
## $ preciom : num [1:8322] 250 320 350 400 260 240 220 310 320 780 ...
## $ areaconst : num [1:8322] 70 120 220 280 90 87 52 137 150 380 ...
## $ parqueaderos: num [1:8322] 1 1 2 3 1 1 2 2 2 2 ...
## $ banios : num [1:8322] 3 2 2 5 2 3 2 3 4 3 ...
## $ habitaciones: num [1:8322] 6 3 4 3 3 3 3 4 6 3 ...
## $ tipo : chr [1:8322] "Casa" "Casa" "Casa" "Casa" ...
## $ barrio : chr [1:8322] "20 de julio" "20 de julio" "20 de julio" "3 de julio" ...
## $ longitud : num [1:8322] -76.5 -76.5 -76.5 -76.5 -76.5 ...
## $ latitud : num [1:8322] 3.43 3.43 3.44 3.44 3.46 ...
## - attr(*, "spec")=List of 3
## ..$ cols :List of 13
## .. ..$ id : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ zona : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ piso : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ estrato : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ preciom : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ areaconst : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ parqueaderos: list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ banios : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ habitaciones: list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ tipo : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ barrio : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ longitud : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ latitud : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## ..$ default: list()
## .. ..- attr(*, "class")= chr [1:2] "collector_guess" "collector"
## ..$ delim : chr ";"
## ..- attr(*, "class")= chr "col_spec"
## - attr(*, "problems")=<externalptr>
Modelo de Regresion Multiple
modelofinal<-lm(vivienda2$preciom~vivienda2$areaconst+vivienda2$zona+vivienda2$estrato)
summary(modelofinal)
##
## Call:
## lm(formula = vivienda2$preciom ~ vivienda2$areaconst + vivienda2$zona +
## vivienda2$estrato)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.090e+09 -4.506e+07 2.676e+06 3.799e+07 9.520e+08
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 206172253 27903323 7.389 1.72e-13 ***
## vivienda2$areaconst 174378637 2400114 72.654 < 2e-16 ***
## vivienda2$zonaZona Norte 43338524 28113921 1.542 0.123
## vivienda2$zonaZona Oeste 112377462 28469092 3.947 8.01e-05 ***
## vivienda2$zonaZona Oriente -14061773 32768827 -0.429 0.668
## vivienda2$zonaZona Sur 35841316 28075937 1.277 0.202
## vivienda2$estrato4 48012600 7034549 6.825 9.80e-12 ***
## vivienda2$estrato5 87436146 6864964 12.737 < 2e-16 ***
## vivienda2$estrato6 256806901 8312584 30.894 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.36e+08 on 5091 degrees of freedom
## Multiple R-squared: 0.7794, Adjusted R-squared: 0.779
## F-statistic: 2248 on 8 and 5091 DF, p-value: < 2.2e-16
se puede observar que las variables zona norte, oriente y sur, no
son significativas para el modelo, lo que quiere decir que los betas
para estas variables son ceros. Con el estadistico F y su p-valor
podemos inferir que hay almenos una variable significativa. El R
cuadraro de este modelo es del 77.9%, lo que significa que los
predictores pueden explicar el 77.9% de la variable dependiente.
Se realiza grafico de Q-Q Plot donde se puede observar que los
residuales no tienen un comportamiento normal
qqnorm(modelofinal$residuals)
qqline(modelofinal$residuals,col="red")

library(nortest)
ad.test(modelofinal$residuals)
##
## Anderson-Darling normality test
##
## data: modelofinal$residuals
## A = 257.96, p-value < 2.2e-16
se realiza la prueba de Anderson Darling, donde se puede corroborar
que no hay suficientes evidencias para rechazar la hipotesis alternativa
de que los residuales tienen una distrubución normal.
Para validar que la varianza es constante, se realiza un gráfico con
los valores ajustados y los residuales, donde observando la gráfica, se
podría llegar a confirmar que la varianza no es constante,debido a que
se puede observar como un embudo, esto quiere decir que la varianza no
es constante,pero para poder corroborar esta afirmación realizaremos la
prueba de breusch-pagan.
plot(modelofinal$fitted.values,modelofinal$residuals)

library(lmtest)
## Warning: package 'lmtest' was built under R version 4.3.2
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.3.2
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
bptest(modelofinal)
##
## studentized Breusch-Pagan test
##
## data: modelofinal
## BP = 1251.6, df = 8, p-value < 2.2e-16
se realiza la prueba de breusch-pagan, donde se puede corroborar que
no hay suficientes evidencias para rechazar la hipotesis alternativa de
que la varianza no es constante.
Para este caso el supuesto de independencia no se realizará
validación debido a que los datos no están tomados en el tiempo, por lo
cual se asumirá que los datos son independientes. Aunque si se realiza
la prueba de durbin-watson, se puede obtener que los datos no son
independientes.
dwtest(modelofinal)
##
## Durbin-Watson test
##
## data: modelofinal
## DW = 1.7707, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
para poder realizar una mejora o que se pueda cumplir cada unos de
los supuestos, se puede realizaruna transformación a la variable de area
construida, ya sea elevandola al cuadrado, sacando el logaritmoo
logaritmo natural, o en su defecto se puede realizar una transformación
de Box-Cox para encontrar el optimo para la transformación de la
variable.
Se particiona la base total en dos: Base de entrenamiento con un
porcentaje del 70% y base de prueba con un porcentaje del 30%.
library(caTools)
## Warning: package 'caTools' was built under R version 4.3.3
set.seed(80)
#specify split
split = sample.split(vivienda2$preciom, SplitRatio=0.7)
#create training set
df_train = subset(vivienda2, split==TRUE)
#create test set
df_test = subset(vivienda2, split==FALSE)
Se realiza el modelo de regresión con la base de entrenamiento,
obteniendo:
modeloregresion<-lm(preciom~areaconst+zona+estrato,data=df_train)
summary(modeloregresion)
##
## Call:
## lm(formula = preciom ~ areaconst + zona + estrato, data = df_train)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.050e+09 -4.538e+07 1.164e+06 3.733e+07 9.520e+08
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 204004874 35141468 5.805 6.98e-09 ***
## areaconst 171001713 2918510 58.592 < 2e-16 ***
## zonaZona Norte 43131708 35359852 1.220 0.22262
## zonaZona Oeste 110736743 35786301 3.094 0.00199 **
## zonaZona Oriente -9918734 40479302 -0.245 0.80645
## zonaZona Sur 32557782 35314077 0.922 0.35662
## estrato4 52404868 8588244 6.102 1.16e-09 ***
## estrato5 92737737 8386103 11.059 < 2e-16 ***
## estrato6 267839792 10128257 26.445 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 139800000 on 3608 degrees of freedom
## Multiple R-squared: 0.7709, Adjusted R-squared: 0.7704
## F-statistic: 1518 on 8 and 3608 DF, p-value: < 2.2e-16
El R cuadraro de este modelo es del 77.04%,lo que significa que los
predictores pueden explicar el 77.04% de la variable dependiente.
prediccionesPrueba<-predict(modeloregresion, newdata=df_test)
plot(prediccionesPrueba,type="l",col="red")

calcular el error cuadrático medio
MSE<-mean((modeloregresion$residuals)^2)
MSE
## [1] 1.949111e+16
segun el valor MSE se puede interpretar que el modelo tiene un
ajuste pobre, los valores predichos estan lejos de los valores
reales.
Error medio absoluto
library(Metrics)
## Warning: package 'Metrics' was built under R version 4.3.3
mae(df_train$preciom,predict(modeloregresion))
## [1] 78774393
Un MAE de 78,774,393 indica que, en promedio, las predicciones del
modelo se desvían de los valores observados por aproximadamente
78,774,393 unidades. Esto sugiere que el modelo tiene una precisión baja
si las unidades de medida son grandes.