Índice
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
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 ...
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)
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 ...
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
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
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
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
table(DATAFINAL$ganaHumala)
##
## 0 1
## 76 119
porcentaje de votos a Humala
prop.table(table(DATAFINAL$ganaHumala))*100
##
## 0 1
## 38.97436 61.02564
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
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()
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)
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
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)
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.