Estadástica para el análisis político 2 - POL304


Ejecución presupuestal del programa Pensión 65 durante el gobierno de Ollanta Humala, año 2013


  1. Índice

1.Apertura y limpieza de la Base de datos

Nuestra información está compuesta por 4 bases de datos:

1.1.Data ejecución presupuestal

La data EJECUCION contiene los datos de la ejecución presupuestal del programa P65 por provincia y la proporcion de conflicto social, fuente MIDIS y Capital Humano y Social (CHS).

Abrimos la base de datos:

link1= "https://www.dropbox.com/s/y42wckcyr05k584/2013.xlsx?dl=1"
library(openxlsx)
EJECUCION=read.xlsx(link1)

Limpiamos la data

str(EJECUCION)
## 'data.frame':    195 obs. of  4 variables:
##  $ Provincia                     : chr  "Chachapoyas" "Bagua" "Bongará" "Condorcanqui" ...
##  $ provinciaUbigeo               : chr  "010100" "010200" "010300" "010400" ...
##  $ ejecución.presupuestal.anual  : num  1755317 1741817 757527 237256 2828111 ...
##  $ nivel.de.conflictividad.social: chr  "bajo" "bajo" "bajo" "bajo" ...

Cambiamos los nombres de la variable

colnames(EJECUCION) = c("nombreProvincia","ubigeoProvincia", "presupuesto", "conflictoSocial")

Damos formato a las variables: “conflicto social” y “presupuesto” como numérica

EJECUCION$conflictoSocial= factor(EJECUCION$conflictoSocial,
                        labels=c("alto"=3, "bajo"=1,"muy alto"=4,"regular"=2))
theLabels = c("bajo", "regular", "alto", "muy alto")
newValues=c(1:4)
EJECUCION$conflictoSocial=factor(EJECUCION$conflictoSocial,levels = newValues,labels = theLabels,ordered = TRUE)

table(EJECUCION$conflictoSocial)
## 
##     bajo  regular     alto muy alto 
##      141       27       24        3

1.2.Data Índice de Desarrollo Humano

La data IDH contiene información sobre el índice de desarrollo humano por provincia, fuente PNUD.

Abrimos la data:

link2="https://www.dropbox.com/s/vhrmtt6y3xuyk1k/idhPeru.xlsx?dl=1"
library(openxlsx)
IDH=read.xlsx(link2, sheet = 1, startRow = 5, skipEmptyRows = T, skipEmptyCols = T)

Limpiamos la data IDH

head(IDH)
##       X1       X2     Distrito habitantes ranking       IDH ranking
## 1 000000 PERÚ  a/         <NA>   30135875      NA 0.5058382      NA
## 2 010000 AMAZONAS         <NA>     417508      19 0.3845648      19
## 3 010100     <NA>  Chachapoyas      54783     114 0.4343753      60
## 4 010101        1 Chachapoyas       27737     192 0.5467212     136
## 5 010102        2 Asuncion            296    1825 0.1683225    1747
## 6 010103        3    Balsas          1590    1462 0.2633761    1214
##       años ranking          % ranking     años ranking N.S..mes ranking
## 1 74.31045      NA 67.8731952      NA 8.995900      NA 696.9370      NA
## 2 73.98588      10 53.6528783      19 6.661000      20 435.6736      18
## 3 73.95475      80 45.4878254     100 7.799699      64 599.8076      45
## 4 73.38709     918 62.7192982     476 9.968829     159 866.5725     103
## 5 73.28082     931  0.7514946    1823 6.079101    1068 341.9903     846
## 6 71.96708    1128 14.4828735    1707 5.282190    1362 340.2772     854

Eliminamos filas y columnas innecesarias

IDH = IDH[-c(2057:2062),] 
IDH=IDH[-c(1),]
columnas=c(seq(5,15,2))
IDH <- IDH[,-columnas]
provincias=IDH[is.na(IDH$X2),]
row.names(provincias)=NULL
provincias = provincias[-c(129),]
provincias=provincias[,-c(2)]
provincias=provincias[,-c(1)]

Nos interesa quedarnos solo con el número de habitantes y los ingresos por provincia. Procedemos a eliminar lo demás:

provincias=provincias[,-c(3:6)]

Cambiamos el nombre de las variables

colnames(provincias) = c("nombreProvincia", "poblacion", "ingresos")

Vemos y cambiamos formato: “poblacion” e “ingresos” como numérica

str(provincias)
## 'data.frame':    195 obs. of  3 variables:
##  $ nombreProvincia: chr  "Chachapoyas" "Bagua" "Bongará" "Condorcanqui" ...
##  $ poblacion      : num  54783 77438 32317 51802 52185 ...
##  $ ingresos       : num  600 468 456 180 328 ...

1.3.Data Índice de Densidad del Estado

La data IDE contiene datos sobre el índice de densidad del Estado por provincia, fuente PNUD.

Abrimos la data:

link3="https://www.dropbox.com/s/qwnus62lxpca6sd/densidad%20Peru.xlsx?dl=1"
library(openxlsx)
IDE=read.xlsx(link3, sheet = 1, startRow = 5, skipEmptyRows = T, skipEmptyCols = T)

Limpiamos la data

IDE=IDE[,-c(1)]
columnas=c(seq(1,3,4))
IDE <- IDE[,-columnas]
IDE=IDE[,-c(2,3,4,5,7,9,11,13,15)]

Eliminamos la variable educación pues solo comprende a la población que tiene entre 12 a 16 años

IDE=IDE[,-c(4)]

Además, Identificación tampoco es necesaria pues Pensión 65 tiene como requisito tener DNI

IDE=IDE[,-c(2)]

Filas innecesarias

IDE = IDE[-c(222:225),] 
IDE = IDE[-c(1,2,3,11,32,40,49,61,76,90,98,110,116,126,139,143,154,162,166,170,174,183,197,208,213,217),] 
row.names(IDE)=NULL
colnames(IDE) = c("nombreProvincia", "salud", "saneamiento", "electrificacion") 

Venos formato: “salud”, “saneamiento”, “electrificacion” como numérica

str(IDE)
## 'data.frame':    195 obs. of  4 variables:
##  $ nombreProvincia: chr  "Chachapoyas" "Bagua" "Bongará" "Condorcanqui" ...
##  $ salud          : chr  "25.450023719049433" "14.609120874914693" "9.0102065354508269" "8.5569592849723382" ...
##  $ saneamiento    : chr  "70.345402142059839" "64.479036686809536" "54.834081786102814" "37.714508854591834" ...
##  $ electrificacion: chr  "83.971186828270632" "67.91461510721939" "72.169261203916292" "39.489081334171054" ...
IDE[,(2:4)]= lapply(IDE[,c(2:4)],as.numeric)

1.4.Data Votación electoral 2011

La data VOTOS contiene los resultados de las elecciones de primera vuelta, fuente ONPE.

Abrimos la base de datos:

link4="https://www.dropbox.com/s/bayugwbg9khqs5f/votos-por-provincia.xlsx?dl=1"
library(openxlsx)
VOTOS=read.xlsx(link4, skipEmptyRows = T, skipEmptyCols = T)

Limpiamos la data

Eliminamos las columnas que no nos interesan

VOTOS=VOTOS[,-c(1,4,5,6,7)]

Cambiamos el nombre de las variables

colnames(VOTOS) = c("nombreProvincia", "ganaHumala")

Damos formato: “ganahumala” como categórica nominal

VOTOS$ganaHumala= factor(VOTOS$ganaHumala, labels=c("0", "1"))
str(VOTOS)
## 'data.frame':    195 obs. of  2 variables:
##  $ nombreProvincia: chr  "Chachapoyas" "Bagua" "Bongará" "Condorcanqui" ...
##  $ ganaHumala     : Factor w/ 2 levels "0","1": 2 2 1 2 1 1 2 1 1 1 ...

2.Aplicación del merge

Alistamos las datas para el merge

row.names(provincias)=provincias$nombreProvincia
row.names(EJECUCION)=EJECUCION$nombreProvincia
row.names(IDE)=IDE$nombreProvincia
row.names(VOTOS)=VOTOS$nombreProvincia

Como tenemos 4 bases de datos, divideremos el merge en 2

DATA1= merge(provincias, VOTOS, by.x = "nombreProvincia", by.y = "nombreProvincia", all.x = T, all.y = T) 
DATA2= merge(EJECUCION, IDE, by.x = "nombreProvincia", by.y = "nombreProvincia", all.x = T, all.y = T) 
row.names(DATA1)=DATA1$nombreProvincia
row.names(DATA2)=DATA2$nombreProvincia
DATAFINAL = merge(DATA1, DATA2, by.x= "nombreProvincia", by.y = "nombreProvincia", all.x = T, all.y = T) 
row.names(DATAFINAL)=NULL

3.Descripción de datos

Observamos nuestra data: nombres y estructura

names(DATAFINAL)
##  [1] "nombreProvincia" "poblacion"       "ingresos"       
##  [4] "ganaHumala"      "ubigeoProvincia" "presupuesto"    
##  [7] "conflictoSocial" "salud"           "saneamiento"    
## [10] "electrificacion"
str(DATAFINAL)
## 'data.frame':    195 obs. of  10 variables:
##  $ nombreProvincia: chr  "Abancay" "Acobamba" "Acomayo" "Aija" ...
##  $ poblacion      : num  105694 73243 28318 7974 117163 ...
##  $ ingresos       : num  533 200 235 270 343 ...
##  $ ganaHumala     : Factor w/ 2 levels "0","1": 2 2 2 1 2 2 2 2 2 2 ...
##  $ ubigeoProvincia: chr  "030100" "090200" "080200" "020200" ...
##  $ presupuesto    : num  4711936 3219375 1877821 809030 1391802 ...
##  $ conflictoSocial: Ord.factor w/ 4 levels "bajo"<"regular"<..: 1 1 1 1 2 1 1 1 1 1 ...
##  $ salud          : num  16.93 2.63 10.45 8.59 10.81 ...
##  $ saneamiento    : num  63 31.2 48.2 47.8 44.5 ...
##  $ electrificacion: num  90.5 76.7 70.6 79.1 66 ...

Analisamos nuestras variables

summary(DATAFINAL)
##  nombreProvincia      poblacion          ingresos      ganaHumala
##  Length:195         Min.   :   4251   Min.   : 108.4   0: 76     
##  Class :character   1st Qu.:  32188   1st Qu.: 268.7   1:119     
##  Mode  :character   Median :  63039   Median : 360.3             
##                     Mean   : 154543   Mean   : 442.6             
##                     3rd Qu.: 121804   3rd Qu.: 588.9             
##                     Max.   :8481415   Max.   :1231.5             
##  ubigeoProvincia     presupuesto      conflictoSocial     salud       
##  Length:195         Min.   :   7000   bajo    :141    Min.   : 2.598  
##  Class :character   1st Qu.: 609522   regular : 27    1st Qu.: 6.485  
##  Mode  :character   Median :1422804   alto    : 24    Median :10.380  
##                     Mean   :2140972   muy alto:  3    Mean   :11.919  
##                     3rd Qu.:3064994                   3rd Qu.:14.744  
##                     Max.   :9911893                   Max.   :44.741  
##   saneamiento      electrificacion
##  Min.   : 0.2351   Min.   :33.83  
##  1st Qu.:40.9610   1st Qu.:61.31  
##  Median :54.2229   Median :74.29  
##  Mean   :56.2641   Mean   :72.11  
##  3rd Qu.:72.4629   3rd Qu.:85.02  
##  Max.   :99.5000   Max.   :99.50
  1. población:
library(Hmisc)
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
## Loading required package: ggplot2
## 
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
## 
##     format.pval, units
describe(DATAFINAL$poblacion)
## DATAFINAL$poblacion 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##      195        0      195        1   154543   207196    10861    18796 
##      .25      .50      .75      .90      .95 
##    32189    63039   121805   244713   386194 
##                                                                           
## Value            0  100000  200000  300000  400000  500000  600000  700000
## Frequency       69      90      17       7       4       1       1       1
## Proportion   0.354   0.462   0.087   0.036   0.021   0.005   0.005   0.005
##                                           
## Value       800000  900000 1000000 8500000
## Frequency        1       2       1       1
## Proportion   0.005   0.010   0.005   0.005
  1. ingresos:conocemos los datos minimos maximos, media y valores atipicos
describe(DATAFINAL$ingresos)
## DATAFINAL$ingresos 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##      195        0      195        1    442.6    246.9    180.3    202.5 
##      .25      .50      .75      .90      .95 
##    268.7    360.3    588.9    735.8    848.6 
## 
## lowest :  108.4057  137.9753  141.2021  158.9788  159.0627
## highest: 1049.2347 1113.6551 1121.1274 1160.0816 1231.4625
ggplot(DATAFINAL, aes(x = 1, y = ingresos)) + geom_boxplot() +coord_flip()

library(DescTools)
## 
## Attaching package: 'DescTools'
## The following objects are masked from 'package:Hmisc':
## 
##     %nin%, Label, Mean, Quantile
Outlier(DATAFINAL$ingresos)
## [1] 1160.082 1231.463 1121.127 1113.655
  1. votos ganahumala:
table(DATAFINAL$ganaHumala)
## 
##   0   1 
##  76 119

porcentaje de votos a Humala

prop.table(table(DATAFINAL$ganaHumala))*100
## 
##        0        1 
## 38.97436 61.02564
  1. presupuesto:
describe(DATAFINAL$presupuesto)
## DATAFINAL$presupuesto 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##      195        0      195        1  2140972  2131805   107877   274108 
##      .25      .50      .75      .90      .95 
##   609522  1422804  3064995  4724836  5999012 
## 
## lowest :    7000   12500   19500   22750   47250
## highest: 8929604 9328370 9328869 9343871 9911893
ggplot(DATAFINAL, aes(x = 1, y = presupuesto)) + geom_boxplot() +coord_flip()

Outlier(DATAFINAL$presupuesto)
## [1] 9911893 9328370 8929604 8874102 8517088 8447834 9343871 9328869

5.conflicto social:

table(DATAFINAL$conflictoSocial)
## 
##     bajo  regular     alto muy alto 
##      141       27       24        3
prop.table(table(DATAFINAL$conflictoSocial))*100
## 
##      bajo   regular      alto  muy alto 
## 72.307692 13.846154 12.307692  1.538462
  1. salud:
describe(DATAFINAL$salud)
## DATAFINAL$salud 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##      195        0      195        1    11.92    7.602    4.397    4.742 
##      .25      .50      .75      .90      .95 
##    6.485   10.380   14.744   21.332   26.580 
## 
## lowest :  2.597952  2.628194  2.639998  2.906336  3.004035
## highest: 30.514721 32.918591 38.365694 40.494404 44.741326
ggplot(DATAFINAL, aes(x = 1, y = salud)) + geom_boxplot() +coord_flip()

Outlier(DATAFINAL$salud)
## [1] 40.49440 29.01788 30.51472 30.02324 30.07987 38.36569 44.74133 27.49451
## [9] 32.91859

7.saneamiento:

describe(DATAFINAL$saneamiento)
## DATAFINAL$saneamiento 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##      195        0      195        1    56.26    23.54    25.46    30.79 
##      .25      .50      .75      .90      .95 
##    40.96    54.22    72.46    84.86    90.61 
## 
## lowest :  0.235054 13.242539 13.243004 13.789955 20.877189
## highest: 95.876591 96.994360 97.560417 98.061398 99.500000
ggplot(DATAFINAL, aes(x = 1, y = saneamiento)) + geom_boxplot() +coord_flip()

  1. electrificación:
describe(DATAFINAL$electrificacion)
## DATAFINAL$electrificacion 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##      195        0      191        1    72.11    17.93    43.60    49.70 
##      .25      .50      .75      .90      .95 
##    61.31    74.29    85.02    91.09    95.66 
## 
## lowest : 33.83035 36.61951 37.25510 39.48908 41.17864
## highest: 96.28169 97.89514 98.74966 99.25293 99.50000
ggplot(DATAFINAL,aes(x=electrificacion)) + geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Outlier(DATAFINAL$electrificacion)
## numeric(0)

4.Análisis de Componentes Principales

Nos interesa crear un índice para cada provincia con el fin de medir el nivel de provincia de cada una. Para eso usaremos PCA y 4 variables que formarán ese índice: salud (médicos por cada 10000 habitantes ), saneamiento (agua y desague), electrificación e ingreso familiar per cápita.

Primero creamos un subconjunto:

final_sub=DATAFINAL[c(1,3,8:10)]
row.names(final_sub) = final_sub$nombreProvincia
final_sub = final_sub[-c(1)]

Estandarizamos

final_sub.scaled<- scale(final_sub)
head(final_sub.scaled)
##                 ingresos      salud saneamiento electrificacion
## Abancay        0.3979407  0.6851546   0.3279999      1.17399256
## Acobamba      -1.0719351 -1.2699136  -1.2216243      0.29412970
## Acomayo       -0.9164606 -0.2002420  -0.3906907     -0.09842107
## Aija          -0.7618502 -0.4544478  -0.4128562      0.44738586
## Alto Amazonas -0.4410133 -0.1509988  -0.5731849     -0.39007140
## Ambo          -0.4385961 -0.1005666  -1.4937070     -0.60164065

Creamos la matriz de correlación, nos muestra como es la intensidad de la relación

library(psych)
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:DescTools':
## 
##     AUC, ICC, SD
## The following object is masked from 'package:Hmisc':
## 
##     describe
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
cor_final_sub = cor(final_sub)
cor_final_sub
##                  ingresos     salud saneamiento electrificacion
## ingresos        1.0000000 0.6925405   0.6434928       0.6763090
## salud           0.6925405 1.0000000   0.6289127       0.5257923
## saneamiento     0.6434928 0.6289127   1.0000000       0.6512019
## electrificacion 0.6763090 0.5257923   0.6512019       1.0000000

Vemos si es adecuado realizar, intervalo de 0-1

KMO(cor_final_sub)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = cor_final_sub)
## Overall MSA =  0.79
## MSA for each item = 
##        ingresos           salud     saneamiento electrificacion 
##            0.77            0.79            0.82            0.79

es adecuado realizar PCA, cuanto más cerca de 1 mejor

Buscamos constrartarla hipótesis de la matriz de identidad, si es así no sería pertinente realizar PCA

cortest.bartlett(cor_final_sub, n=nrow(final_sub))
## $chisq
## [1] 398.0596
## 
## $p.value
## [1] 7.304959e-83
## 
## $df
## [1] 6

es adecuado y rechazamos la hipotesis de matriz de identidad, el pvalue es menor a 0.05

Vemos en cuantos grupos es adecuado juntar las variables

eigenf= eigen(cor_final_sub)
eigenf$values
## [1] 2.9108013 0.4775161 0.3624997 0.2491830
plot(eigenf$values,type="l",xaxp=c(0,12,12),xlab="Factores",ylab="Autovalores")
abline(1,0)
title("Scree-plot")

dos grupos, sin embargo juntaremos solo en un grupo para realizar el índice

Realizamos nuestro índice

resultadoPr=principal(cor_final_sub,1,rotate="varimax", scores=T)
print(resultadoPr,digits=3, cut=0.40)
## Principal Components Analysis
## Call: principal(r = cor_final_sub, nfactors = 1, rotate = "varimax", 
##     scores = T)
## Standardized loadings (pattern matrix) based upon correlation matrix
##                   PC1    h2    u2 com
## ingresos        0.886 0.785 0.215   1
## salud           0.833 0.694 0.306   1
## saneamiento     0.857 0.735 0.265   1
## electrificacion 0.835 0.697 0.303   1
## 
##                  PC1
## SS loadings    2.911
## Proportion Var 0.728
## 
## Mean item complexity =  1
## Test of the hypothesis that 1 component is sufficient.
## 
## The root mean square of the residuals (RMSR) is  0.1 
## 
## Fit based upon off diagonal values = 0.976

Obtenemos los scores

regresFactors=factor.scores(final_sub,resultadoPr)$scores

Ya se creó un índice. A cada provincia le toca un puntaje, los más pobres pueden incluso llegar a tener puntaje negativo. Con ello podemos usar esta variable “nivel de pobreza” para ver su relación con la ejecución presupuestal más adelante.

Adjuntamos a la data final

DATAFINAL=merge(DATAFINAL,regresFactors,
                 by.x = "nombreProvincia", by.y = 0)
names(DATAFINAL) = c("provincia", "poblacion", "ingresos", "ganaHumala", "ubigeo", "ejecucion", "conflictosocial", "salud", "saneamiento", "electrificacion", "niveldepobreza")
head(DATAFINAL)
##       provincia poblacion ingresos ganaHumala ubigeo ejecucion
## 1       Abancay    105694 532.8766          1 030100   4711936
## 2      Acobamba     73243 199.5093          1 090200   3219375
## 3       Acomayo     28318 234.7709          1 080200   1877821
## 4          Aija      7974 269.8365          0 020200    809030
## 5 Alto Amazonas    117163 342.6022          1 160200   1391802
## 6          Ambo     57957 343.1504          1 100200   3530889
##   conflictosocial     salud saneamiento electrificacion niveldepobreza
## 1            bajo 16.931097    63.00113        90.50638      0.7505458
## 2            bajo  2.628194    31.17210        76.72076     -0.9650791
## 3            bajo 10.453706    48.23934        70.57030     -0.4795586
## 4            bajo  8.593985    47.78407        79.12196     -0.3552079
## 5         regular 10.813959    44.49094        66.00075     -0.4581307
## 6            bajo 11.182912    25.58357        62.68590     -0.7747077

5.Escalamiento multidimensional

5.1.Mapa de similitudes

Podemos ver gráficamente cómo se asemejan las provincias a “nivel de pobreza”:

provMap=DATAFINAL[,c(1,11)]
row.names(provMap) = provMap$provincia
provMap=provMap[-c(1)]
provMap_s=scale(provMap)
summary(provMap_s)
##  niveldepobreza   
##  Min.   :-1.4706  
##  1st Qu.:-0.7897  
##  Median :-0.1688  
##  Mean   : 0.0000  
##  3rd Qu.: 0.6034  
##  Max.   : 2.9422
provMap_d=dist(provMap_s)
provMap_r <- cmdscale(provMap_d,eig=TRUE, k=2) 
provMap_r$GOF 
## [1] 1 1

Creamos nuestro mapa

titulo="Mapa de Similitudes entre provincias del Peru basado en pobreza"
x <- provMap_r$points[,1]
y <- provMap_r$points[,2]
plot(x, y, main=titulo)

Nombramos

plot(x, y, xlab="Dimension 1", ylab="Dimension 2", main=titulo, type="n") 
columnForLabels=dimnames(provMap_r[[1]])[[1]] 
text(x, y,labels = columnForLabels , cex = 0.5) 

6.Análisis de regresión

Trabajamos Regresión lineal para ver cuales son las variables que afectan el desarrollo de la ejecución presupuestal en el año 2013 a nivel provincial.Nuestra variable dependiente es numérica:“ejecucion” del presupuesto asignado a cada provincia en el programa Pension 65.Esta variable será modelada por relación individual y en conjunto ente ejecucion<> conflictosocial, ejecucion<>voto, ejecucion<>niveldepobreza, ejecucion<>poblacion. Luego se probará en conjunto tomando a la variables “poblacion” como la variable de control.

modelo0=lm(ejecucion ~ poblacion,data=DATAFINAL)
summary(modelo0)
## 
## Call:
## lm(formula = ejecucion ~ poblacion, data = DATAFINAL)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2052775 -1493453  -694985   933922  7765296 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2.046e+06  1.518e+05  13.479   <2e-16 ***
## poblacion   6.168e-01  2.384e-01   2.587   0.0104 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2056000 on 193 degrees of freedom
## Multiple R-squared:  0.03352,    Adjusted R-squared:  0.02851 
## F-statistic: 6.694 on 1 and 193 DF,  p-value: 0.01041
cor.test(DATAFINAL$ejecucion, DATAFINAL$poblacion, method = "pearson")
## 
##  Pearson's product-moment correlation
## 
## data:  DATAFINAL$ejecucion and DATAFINAL$poblacion
## t = 2.5872, df = 193, p-value = 0.01041
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.04369676 0.31548137
## sample estimates:
##      cor 
## 0.183085
plot(ejecucion ~ poblacion, data=DATAFINAL)
abline(lm(DATAFINAL$ejecucion~ DATAFINAL$poblacion), col="green")

Observando estos resultados, encontramos que la variable población por sí sola tiene una relación débil con la ejecución presupuestal provincial.

PRIMERA HIPÓSTESIS: la ejecución presupuestal depende del nivel de desarrollo de la provincia. Buscamos probar si la ejecucipon se realiza por terminos técnicos hacia los más necesitados (ejecucion<>nivel de pobreza).

Correlación de Pearson

cor.test(DATAFINAL$ejecucion, DATAFINAL$niveldepobreza, method = "pearson")
## 
##  Pearson's product-moment correlation
## 
## data:  DATAFINAL$ejecucion and DATAFINAL$niveldepobreza
## t = -2.1648, df = 193, p-value = 0.03163
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.28824265 -0.01375131
## sample estimates:
##        cor 
## -0.1539662

Hay relación entre la ejecucion y el nivel de pobreza. Sin embargo, la relación es débil y el signo es negativo (-0.15). Cuánto más bajo sea el puntaje de pobreza (puntajes más bajos significan provincias más pobres), mayor será el presupuesto.

Veamos la regresión

modelo1=lm(ejecucion ~ niveldepobreza ,data=DATAFINAL)
summary(modelo1)
## 
## Call:
## lm(formula = ejecucion ~ niveldepobreza, data = DATAFINAL)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2504997 -1378650  -673815   686593  7870550 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     2140972     147968  14.469   <2e-16 ***
## niveldepobreza  -321143     148349  -2.165   0.0316 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2066000 on 193 degrees of freedom
## Multiple R-squared:  0.02371,    Adjusted R-squared:  0.01865 
## F-statistic: 4.686 on 1 and 193 DF,  p-value: 0.03163

Se comprueba lo visto en la correlación de Pearson. Hay asociación, pero si vemos el R cuadrado ajustado, se observa que su valor es de 0.01. Esto significa que el modelo de regresión no es bueno, ya que conocer el nivel de pobreza solo ayuda a entender la ejecución presupuestal en un 1%. Además, existe un mal ajuste de la recta y los puntos.

Hay que verlo gráficamente:

plot(ejecucion ~ niveldepobreza, data=DATAFINAL)
abline(lm(DATAFINAL$ejecucion~ DATAFINAL$niveldepobreza), col="blue")

Hay que añadir población como variable de control para ver cómo afecta a las variables:

modelo1.1 = lm(ejecucion ~ niveldepobreza + poblacion, data=DATAFINAL)
summary(modelo1.1)
## 
## Call:
## lm(formula = ejecucion ~ niveldepobreza + poblacion, data = DATAFINAL)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2677111 -1298619  -546886   625957  7918166 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     2.005e+06  1.486e+05  13.491  < 2e-16 ***
## niveldepobreza -5.006e+05  1.525e+05  -3.283  0.00122 ** 
## poblacion       8.824e-01  2.463e-01   3.583  0.00043 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2006000 on 192 degrees of freedom
## Multiple R-squared:  0.0849, Adjusted R-squared:  0.07537 
## F-statistic: 8.907 on 2 and 192 DF,  p-value: 2e-04

Se observa que sí hay relación entre ejecucion y el nivel de pobreza con la población por provincia añadida. No obstante, el R cuadrado sigue siendo bastante bajo (7%). Hay un diferencia de 6% con el modelo que no tenía la variable población, por lo que, al menos, es un buen comienzo.

SEGUNDA HIPÓTESIS: la ejecución presupuestal depende de los votos a Humala en la primera vuelta electoral. buscamos probar si la ejecucion tiene un sesgo populista-clientelar (ejecucion<>ganaHumala).

modelo2 = lm(ejecucion ~ ganaHumala, data=DATAFINAL)
summary(modelo2)
## 
## Call:
## lm(formula = ejecucion ~ ganaHumala, data = DATAFINAL)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2422872 -1338104  -658077   681749  7482021 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1688616     236228   7.148 1.76e-11 ***
## ganaHumala1   741256     302395   2.451   0.0151 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2059000 on 193 degrees of freedom
## Multiple R-squared:  0.03019,    Adjusted R-squared:  0.02517 
## F-statistic: 6.009 on 1 and 193 DF,  p-value: 0.01512

La hipótesis 2 también muestra una relación significativa de acuerdo al pvalue, sin embargo, el rcuadrado muestra una representatividad bastante baja. Los modelos que nos da la regresión no son apropiados para analizar una relación lineal.

Lo vemos graficamente

plot(ejecucion ~ ganaHumala, data=DATAFINAL)
abline(lm(DATAFINAL$ejecucion ~ DATAFINAL$ganaHumala), col="red")

Añadimos la variable de control

modelo2.1 = lm(ejecucion ~ ganaHumala + poblacion, data=DATAFINAL)
summary(modelo2.1)
## 
## Call:
## lm(formula = ejecucion ~ ganaHumala + poblacion, data = DATAFINAL)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2365780 -1324557  -637101   725196  7443446 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 1.533e+06  2.381e+05   6.439 9.41e-10 ***
## ganaHumala1 8.243e+05  2.982e+05   2.764  0.00626 ** 
## poblacion   6.797e-01  2.355e-01   2.886  0.00435 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2021000 on 192 degrees of freedom
## Multiple R-squared:  0.07051,    Adjusted R-squared:  0.06083 
## F-statistic: 7.283 on 2 and 192 DF,  p-value: 0.0008941

Seguimos viendo que la variable de control población mejora el R cuadrado y por tanto el modelo, pero sigue siendo insuficiente.

TERCERA HIPÓTESIS: la ejecución presupuestal depende del nivel de conflictividad social de las provincias (ejecucion<> conflictosocial).

Nuestra variable “conflicto social” en numérica para facilitar la regresión

str(DATAFINAL)
## 'data.frame':    195 obs. of  11 variables:
##  $ provincia      : chr  "Abancay" "Acobamba" "Acomayo" "Aija" ...
##  $ poblacion      : num  105694 73243 28318 7974 117163 ...
##  $ ingresos       : num  533 200 235 270 343 ...
##  $ ganaHumala     : Factor w/ 2 levels "0","1": 2 2 2 1 2 2 2 2 2 2 ...
##  $ ubigeo         : chr  "030100" "090200" "080200" "020200" ...
##  $ ejecucion      : num  4711936 3219375 1877821 809030 1391802 ...
##  $ conflictosocial: Ord.factor w/ 4 levels "bajo"<"regular"<..: 1 1 1 1 2 1 1 1 1 1 ...
##  $ salud          : num  16.93 2.63 10.45 8.59 10.81 ...
##  $ saneamiento    : num  63 31.2 48.2 47.8 44.5 ...
##  $ electrificacion: num  90.5 76.7 70.6 79.1 66 ...
##  $ niveldepobreza : num  0.751 -0.965 -0.48 -0.355 -0.458 ...
DATAFINAL[c(7)]=lapply(DATAFINAL[c(7)], as.numeric)
modelo3 = lm(ejecucion ~ conflictosocial, data=DATAFINAL)
summary(modelo3)
## 
## Call:
## lm(formula = ejecucion ~ conflictosocial, data = DATAFINAL)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3861631 -1237823  -427330   908513  8245180 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       565754     290791   1.946   0.0532 .  
## conflictosocial  1100959     179283   6.141 4.59e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1913000 on 193 degrees of freedom
## Multiple R-squared:  0.1635, Adjusted R-squared:  0.1591 
## F-statistic: 37.71 on 1 and 193 DF,  p-value: 4.586e-09

Hay relación entre conflictividad social y ejecucion. El R cuadrado y el modelo está un poco mejor en este caso (10%), pero aún es insuficiente.

Veamos un gráfico:

plot(ejecucion ~ conflictosocial, data=DATAFINAL)
abline(lm(DATAFINAL$ejecucion ~ DATAFINAL$conflictosocial), col="red")

Añadimos la variable de control

modelo3.1= lm(ejecucion ~ conflictosocial + poblacion, data=DATAFINAL)
summary(modelo3.1)
## 
## Call:
## lm(formula = ejecucion ~ conflictosocial + poblacion, data = DATAFINAL)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3870045 -1211766  -463155   927046  8234567 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     4.935e+05  2.876e+05   1.716  0.08777 .  
## conflictosocial 1.089e+06  1.766e+05   6.165 4.07e-09 ***
## poblacion       5.815e-01  2.185e-01   2.662  0.00843 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1883000 on 192 degrees of freedom
## Multiple R-squared:  0.1932, Adjusted R-squared:  0.1848 
## F-statistic: 22.99 on 2 and 192 DF,  p-value: 1.118e-09

Con población, el modelo mejora y el R cuadrado llega al 18%.

HIPÓTESIS GENERAL: la ejecución presupuestal depende de los terminos tecnicos medidos por el desarrollo de la provincia, el nivel de conflicto y en cierta medida de los votos.

modelototal = lm(ejecucion ~ conflictosocial + ganaHumala + niveldepobreza, data=DATAFINAL)
summary(modelototal)
## 
## Call:
## lm(formula = ejecucion ~ conflictosocial + ganaHumala + niveldepobreza, 
##     data = DATAFINAL)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3930006 -1111315  -445391   661781  8257738 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       303618     308284   0.985   0.3259    
## conflictosocial  1134253     180293   6.291  2.1e-09 ***
## ganaHumala1       351490     279863   1.256   0.2107    
## niveldepobreza   -435822     135297  -3.221   0.0015 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1863000 on 191 degrees of freedom
## Multiple R-squared:  0.2149, Adjusted R-squared:  0.2026 
## F-statistic: 17.43 on 3 and 191 DF,  p-value: 4.835e-10

Probamos la hipótesis con la variable de control

modelocontrol = lm(ejecucion ~ conflictosocial + ganaHumala + niveldepobreza + poblacion, data=DATAFINAL)
summary(modelocontrol)
## 
## Call:
## lm(formula = ejecucion ~ conflictosocial + ganaHumala + niveldepobreza + 
##     poblacion, data = DATAFINAL)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -4067085  -986679  -301409   614670  8268929 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      9.296e+04  2.990e+05   0.311   0.7562    
## conflictosocial  1.135e+06  1.725e+05   6.581 4.42e-10 ***
## ganaHumala1      4.540e+05  2.689e+05   1.689   0.0929 .  
## niveldepobreza  -6.269e+05  1.368e+05  -4.581 8.36e-06 ***
## poblacion        9.472e-01  2.197e-01   4.310 2.62e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1782000 on 190 degrees of freedom
## Multiple R-squared:  0.2848, Adjusted R-squared:  0.2698 
## F-statistic: 18.92 on 4 and 190 DF,  p-value: 4.147e-13

El modelo general muestra una relación significativa. El R cuadrado observado en este modelo es el mayor, llegando a explicar la ejecución presupuestal en un 26%. Podríamos aceptar el modelo. Pero primero, volvamos a hacer la regresión sin la variable “ganaHumala”, pues se observa que no presenta relación significativa (0.09)

modelo4 = lm(ejecucion  ~ niveldepobreza  + conflictosocial + poblacion, data=DATAFINAL)
summary(modelo4)
## 
## Call:
## lm(formula = ejecucion ~ niveldepobreza + conflictosocial + poblacion, 
##     data = DATAFINAL)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3993560 -1036054  -369603   729299  8474554 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      2.882e+05  2.771e+05   1.040      0.3    
## niveldepobreza  -6.340e+05  1.374e+05  -4.612 7.28e-06 ***
## conflictosocial  1.196e+06  1.696e+05   7.055 3.09e-11 ***
## poblacion        9.143e-01  2.199e-01   4.157 4.86e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1791000 on 191 degrees of freedom
## Multiple R-squared:  0.2741, Adjusted R-squared:  0.2627 
## F-statistic: 24.04 on 3 and 191 DF,  p-value: 3.046e-13

Armemos la ecuación usando los datos del modelo general:

Ejecución presupuestal = 288200 - 634000(nivel de pobreza)+ 1196000(nivel de conflictividad social) + 0.9143(poblacion) + término de error

Este es un modelo que explica la ejecución presupuestal provincial en un 26%.

NOTA: Hay una relación negativa entre la ejecucion de presupuesto y el nivel de pobreza porque las puntuaciones del nivel de pobreza van desde -1 hasta 3, siendo -1 una provincia con un nivel de pobreza alto, y 3 una provincia con nivel de pobreza bajo. A más pobreza, más puntaje negativo y más ejecución, lo que explica el signo negativo de la ecuación.

Conclusión 1: Se observa que, de manera individual, la ejecución presupuestal tiene relación con el voto a Humala en primera vuelta, el nivel de conflicto social y la de pobreza a nivel provincial. Sin embargo, al ver los R cuadrado de los modelos de regresión, son bastante bajos. Ello significa que los modelos de regresión de las 3 primeras hipótesis no son adecuados para ver las relaciones entre la dependiente y las independientes.

Conclusión 2: con el modelo general se puede observar un modelo más apropiado, aunque aún lejos de ser ideal. La ecuación armada nos brinda un modelo para poder determinar la ejecución presupuestal por provincia.

Conclusiones generales: en términos generales, ninguna de las variables expresadas aquí muestra una relación fuerte con la variable independiente, a pesar de que exista dicha significancia. El modelo planteado aquí buscaba analizar otras alternativas que podrían explicar el presupuesto usado en cada provincia aparte de la calificación que emplea el programa Pensión 65 mediante el SISFOH.

Resulta interesante observar que el índice creado a partir de variables que son indicadores de pobreza (y que mostraron una correlación fuerte entre sí) no tenga una relación al menos de mediana intensidad con la ejecución presupuestal. Nos deja la interrogante de qué tan efectivo han sido las técnicas empleadas por el Ministerio de Desarrollo e Inclusión Social al momento de repartir y ejecutar el presupuesto.