Importamos los datos

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>

ESTIMAMOS EL PRIMER MODELO DE REGRESION

\(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.

ESTIMAMOS EL SEGUNDO MODELO DE REGRESION

\(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

TEST DE RAMSEY

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

Multicolinealidad

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.

Autocorrelacion

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-Watson

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

Ljung BOx

\(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

Heterocedasticidad

para ver si hay heterocedasticidad

Test de Breuchi Pagan

\(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

CONCLUSION

En conclusion el modelo esta especificado correctamente no cuenta con problemas de autocorrelacion ni heterocedasticidad