Importamos los datos del excel que contiene los ingresos predial y en que gastan las municipalidades
finanzaspredial <- read_excel("E:/betix/7mo semestre/finanzas/finanzaspredial.xlsx")
head(finanzaspredial)
## Warning: `...` is not empty.
##
## We detected these problematic arguments:
## * `needs_dots`
##
## These dots only exist to allow future extensions and should be empty.
## Did you misspecify an argument?
## # A tibble: 6 x 16
## predial PLANEAMIENTO ORDEN COMERCIO AGRO ENERGIA INDUSTRIA TRANSPORTE
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 51022 404445 0 0 122674 1570250 91517 661902
## 2 67327 185395 0 0 108643 1946769 0 1643303
## 3 77558 91173 0 0 0 239974 0 3560
## 4 61013 888857 0 172029 190594 2000 0 707747
## 5 85809 3084111 0 115803 0 0 0 838712
## 6 110510 1729271 73546 0 116340 0 0 1008132
## # ... with 8 more variables: AMBIENTE <dbl>, SANEAMIENTO <dbl>, VIVIENDA <dbl>,
## # SALUD <dbl>, CULTURA <dbl>, EDUCACION <dbl>, PROTECCION <dbl>,
## # PREVISION <dbl>
\(predial =PLANEAMIENTO + ORDEN + COMERCIO + AGRO + + ENERGIA + INDUSTRIA +\\ TRANSPORTE + AMBIENTE + SANEAMIENTO + VIVIENDA + SALUD +\\ CULTURA + EDUCACION + PROTECCION + PREVISION\)
primer_modelo=lm(predial ~ PLANEAMIENTO + ORDEN + COMERCIO + AGRO +
+ ENERGIA + INDUSTRIA + TRANSPORTE
+ AMBIENTE + SANEAMIENTO + VIVIENDA + SALUD + CULTURA
+ EDUCACION + PROTECCION + PREVISION, data = finanzaspredial)
summary(primer_modelo)
##
## Call:
## lm(formula = predial ~ PLANEAMIENTO + ORDEN + COMERCIO + AGRO +
## +ENERGIA + INDUSTRIA + TRANSPORTE + AMBIENTE + SANEAMIENTO +
## VIVIENDA + SALUD + CULTURA + EDUCACION + PROTECCION + PREVISION,
## data = finanzaspredial)
##
## Residuals:
## ALL 10 residuals are 0: no residual degrees of freedom!
##
## Coefficients: (6 not defined because of singularities)
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.599e+04 NA NA NA
## PLANEAMIENTO 4.385e-02 NA NA NA
## ORDEN 5.338e-02 NA NA NA
## COMERCIO -7.415e-01 NA NA NA
## AGRO -6.917e-02 NA NA NA
## ENERGIA 6.930e-03 NA NA NA
## INDUSTRIA -3.703e-02 NA NA NA
## TRANSPORTE 1.054e-02 NA NA NA
## AMBIENTE 6.070e-03 NA NA NA
## SANEAMIENTO 1.268e-02 NA NA NA
## VIVIENDA NA NA NA NA
## SALUD NA NA NA NA
## CULTURA NA NA NA NA
## EDUCACION NA NA NA NA
## PROTECCION NA NA NA NA
## PREVISION NA NA NA NA
##
## Residual standard error: NaN on 0 degrees of freedom
## Multiple R-squared: 1, Adjusted R-squared: NaN
## F-statistic: NaN on 9 and 0 DF, p-value: NA
El modelo presentado sale error(NA) porque al haber matrices que contienen 0s la matriz de singularidad no podria lograr invertirse por la determinante sea 0 o cercana entonces tomamos los datos que se consideran mas rele- vantes o que no contengan 0s.
\(predial=SANEAMIENTO + TRANSPORTE + ENERGIA + PLANEAMIENTO + EDUCACION\)
segundo_modelo=lm(predial~ SANEAMIENTO + TRANSPORTE + ENERGIA + PLANEAMIENTO +
EDUCACION , data = finanzaspredial)
summary(segundo_modelo)
##
## Call:
## lm(formula = predial ~ SANEAMIENTO + TRANSPORTE + ENERGIA + PLANEAMIENTO +
## EDUCACION, data = finanzaspredial)
##
## Residuals:
## 1 2 3 4 5 6 7 8
## -23257.15 17705.31 8657.72 -13119.78 75.07 15582.95 -19585.92 13522.18
## 9 10
## -17795.18 18214.80
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.604e+05 3.921e+04 4.091 0.0150 *
## SANEAMIENTO 3.778e-03 2.719e-03 1.389 0.2370
## TRANSPORTE -8.451e-03 6.109e-03 -1.383 0.2387
## ENERGIA -4.674e-02 1.838e-02 -2.542 0.0638 .
## PLANEAMIENTO -1.964e-02 1.381e-02 -1.422 0.2282
## EDUCACION -4.770e-02 1.329e-02 -3.589 0.0230 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 25290 on 4 degrees of freedom
## Multiple R-squared: 0.8657, Adjusted R-squared: 0.6977
## F-statistic: 5.155 on 5 and 4 DF, p-value: 0.06863
Vemos lo que es una primera aproximacion del modelo pero no podemos aceptarla porque hay cierto problema en la especificacion del modelo primero que no sabemos que al eliminar las variables pudieron generan que haya una mala especificacion o que aun haya variables que estan consideradas sean tan relevantes PARA ESO USAMOS EL TEST DE RESET RAMSEY:
\(H_0\): El modelo tiene una Fomra funcional correcta
\(H_a\): Forma funcional incorrecta
resettest(segundo_modelo)
##
## RESET test
##
## data: segundo_modelo
## RESET = 6.3516, df1 = 2, df2 = 2, p-value = 0.136
El Test de reset muestra que el p-value=0.136>0.05; por lo no se encuentra evidencia suficiente para rechazar la hipotesis nula; por lo que en terminos más simples decimos que el modelo tiene una forma funcional correcta estadisticamente con el test de RAMSEY
pairs(~predial + SANEAMIENTO + TRANSPORTE + ENERGIA + PLANEAMIENTO + EDUCACION,
data = finanzaspredial,
main = "Matriz de dispersiones simple",
col="black")
Detectamos si existe una posible multicolinealidad del modelo
cor(finanzaspredial[c("predial","SANEAMIENTO","TRANSPORTE","ENERGIA",
"PLANEAMIENTO","EDUCACION")], use ="complete")
## predial SANEAMIENTO TRANSPORTE ENERGIA PLANEAMIENTO
## predial 1.0000000 0.5168454 0.2991177 -0.4917171 -0.20415356
## SANEAMIENTO 0.5168454 1.0000000 -0.0500608 -0.3631227 -0.35405004
## TRANSPORTE 0.2991177 -0.0500608 1.0000000 -0.2572277 -0.36037216
## ENERGIA -0.4917171 -0.3631227 -0.2572277 1.0000000 -0.25603436
## PLANEAMIENTO -0.2041536 -0.3540500 -0.3603722 -0.2560344 1.00000000
## EDUCACION -0.4024949 0.3338155 -0.4517933 -0.2016218 -0.00347226
## EDUCACION
## predial -0.40249492
## SANEAMIENTO 0.33381551
## TRANSPORTE -0.45179331
## ENERGIA -0.20162183
## PLANEAMIENTO -0.00347226
## EDUCACION 1.00000000
Para asegurarnos que no hay multicolienlidad perfecta en el modelo usamos la prueva VIF(factor de inflacion de Varianza) es sencillo de interpretar si es =1 no existe multicolineadlidas si esta entre 1 a 5 existe multicolinealidad moderada si esta de 5 + existe multicolinealidad perfecta que deberia de ser solucionada, no se especificara la formula de ninguno de los test.
vif(segundo_modelo)
## SANEAMIENTO TRANSPORTE ENERGIA PLANEAMIENTO EDUCACION
## 2.037659 2.721230 2.588397 2.612693 1.731497
Vemos que ninguna de las variables tienen multicolinealidad perfecta pero si tienen multicolinealidad imperfecta por lo que es normal esperar este tipo de multicolinealidad.
Vemos que es lo que ocurre en el residuo de modelo porque podrian haber problemas de heterocedasticidad y autocorrelacion
residuos=segundo_modelo$residuals
plot(residuos, type = "l")
Graficamos los cuadrados de la varianza para ver graficamente si podria haber autocorrelacion
cuadrado=residuos^2
plot(cuadrado,type="l")
Podemos intuir que no hay autocorrelacion porque los graficos no siguen tendencias pero es mejor verlo con un test porque la baja cantidad de datos no podemos ver claramente la presencia de autocorrelacion
test de durbin whatson para detectar la autocorrelacion
\(H_0\) No existe autocorrelacion
\(H_a\) Existe autocorrelacion
dwtest(segundo_modelo)
##
## Durbin-Watson test
##
## data: segundo_modelo
## DW = 2.8365, p-value = 0.5057
## alternative hypothesis: true autocorrelation is greater than 0
Se concluye que el pvalue>0.05 entonces se concluye que no hay evidencia suficiente para rechazar la hipotesis nula por lo cual estamos en una zona donde no existe autocorrelacion Usamos otro test
\(H_0\): No existe autocorrelacion
Box.test(residuals(segundo_modelo), type = "Ljung-Box")
##
## Box-Ljung test
##
## data: residuals(segundo_modelo)
## X-squared = 4.6216, df = 1, p-value = 0.03157
TAmbien demuestra que no existe autocorrelacion
para ver si hay heterocedasticidad
\(H_0\):Homosedasticidad, forma residual correcta
\(H_a\):Heterocedasticidad
No hay evidencia suficiente para rechazar la hipotesis nula por lo cual hay una homodesaticidad
bptest(segundo_modelo)
##
## studentized Breusch-Pagan test
##
## data: segundo_modelo
## BP = 6.7174, df = 5, p-value = 0.2425
No hay evidencia suficiente para rechazar la hipotesis nula por en conclusion existe homosedasticidad, la forma residual es correcta
En conclusion el modelo esta especificado correctamente no cuenta con problemas de autocorrelacion ni heterocedasticidad