Entrega 3

library(rio)
data=import("https://github.com/ximenapize/EST2/blob/main/data1.xlsx?raw=true")
head(data)
##                PAISES Percepción de Corrupción
## 1         Afghanistan                       19
## 2             Albania                       36
## 3             Algeria                       36
## 4              Angola                       27
## 5 Antigua and Barbuda                       NA
## 6           Argentina                       42
##   Total natural resources rents (% PBI) Public Services
## 1                                   0.7             9.8
## 2                                   1.3             4.4
## 3                                  11.9             5.6
## 4                                   0.0             9.3
## 5                                   0.0             4.4
## 6                                   2.3             4.8

Marco Teórico

HIPÓTESIS 1: La capacidad estatal de brindar servicios públicos de calidad a la población depende de la actividad económica de extracción de recursos naturales, de acuerdo a la teoría de la maldición de los recursos, los países que dependen más de la actividad económica extractora son más proclives a tener aparatos estatales débiles y con poca capacidad de brindar servicios.

HIPÓTESIS 2: La capacidad estatal de brindar servicios básicos para la población responde a los niveles de corrupción del gobierno de turno y del porcentaje de renta por recursos naturales de acuerdo al PBI.

str(data)
## 'data.frame':    179 obs. of  4 variables:
##  $ PAISES                               : chr  "Afghanistan" "Albania" "Algeria" "Angola" ...
##  $ Percepción de Corrupción             : num  19 36 36 27 NA 42 49 77 76 30 ...
##  $ Total natural resources rents (% PBI): num  0.7 1.3 11.9 0 0 2.3 6 9.8 0.1 19 ...
##  $ Public Services                      : num  9.8 4.4 5.6 9.3 4.4 4.8 3.9 2.8 2.3 5.5 ...

Modelo de regresión gaussiana

VARIABLE DEPENDIENTE:

  • Capacidad estatal para brindar servicios básicos a la población (salud, educación, electricidad, agua, seguridad, etc), esta tiene el nombre de “PUBLIC SERVICES” y fue construida por el proyecto “Fragile States Index”. Este indicador está construido en una escala del 1 al 10, donde 1 es el nivel más alto de capacidad estatal de brindar servicios y 10, el nivel más bajo de capacidad estatal.

VARIABLES INDEPENDIENTES:

  • Índice de percepción de corrupción: Fue obtenido de la base de datos del proyecto “Índice de Percepción de la Corrupción 2020” por Transparencia Internacional. La medición de los niveles de corrupción de un país es una actividad complicada debido a la naturaleza ilegal de esta actividad. Hay 2 formas de aproximarnos a este fenómeno en los gobiernos: mediante la percepción de la ciudadanía y mediante la observación directa de casos que llegaron al Poder Judicial de los Estados, auditorías y/o reportes. En este caso, utilizaré la primera forma de medición de los niveles de corrupción.

Esta variable es un indicador que está en una escala del 0 al 100, donde 0 equivale al nivel más alto de percepción de corrupción, y 100 implica el nivel más bajo.

  • Porcentaje de renta obtenida por la extracción de recursos naturales en relación al PBI: Variable obtenida de la base de datos del Banco Mundial.
names(data)
## [1] "PAISES"                               
## [2] "Percepción de Corrupción"             
## [3] "Total natural resources rents (% PBI)"
## [4] "Public Services"
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
data = rename(data, corrupcion = 'Percepción de Corrupción', recursosnaturales = 'Total natural resources rents (% PBI)', capacidad = 'Public Services')
data1 = data[complete.cases(data$corrupcion),]
data2 = data1[complete.cases(data1$recursosnaturales),]
data3=  data2[complete.cases(data2$capacidad),]
library(ggplot2)
base2=ggplot(data=data3, aes(x=recursosnaturales, y=capacidad))
scatter2 = base2 + geom_point()
scatter2

Modelos de regresión

modelo1 = formula(capacidad~recursosnaturales)
modelo2 = formula(capacidad~corrupcion + recursosnaturales)

Primer modelo

library(stargazer)
## 
## Please cite as:
##  Hlavac, Marek (2018). stargazer: Well-Formatted Regression and Summary Statistics Tables.
##  R package version 5.2.2. https://CRAN.R-project.org/package=stargazer
reg1=lm(modelo1,data=data3)
stargazer(reg1,type ="text")
## 
## ===============================================
##                         Dependent variable:    
##                     ---------------------------
##                              capacidad         
## -----------------------------------------------
## recursosnaturales            0.111***          
##                               (0.022)          
##                                                
## Constant                     5.041***          
##                               (0.230)          
##                                                
## -----------------------------------------------
## Observations                    171            
## R2                             0.129           
## Adjusted R2                    0.124           
## Residual Std. Error      2.366 (df = 169)      
## F Statistic           25.038*** (df = 1; 169)  
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01
ggplot(data3, aes(x=recursosnaturales, y=capacidad)) +
geom_point()+
geom_smooth(method=lm)
## `geom_smooth()` using formula 'y ~ x'

ECUACIÓN DEL PRIMER MODELO

Indice de capacidad estatal para brindar servicios básicos = 5.041 + 0.111(Porcentaje de renta de recursos naturales en relación al PBI)

INTERPRETACIÓN:

Para este primer modelo podemos afirmar que la variable de porcentaje de renta de recursos naturales en relación al PBI sí tiene un impacto significativo en la variable de capacidad estatal, ya que el p-valor es menor a 0.05. El efecto es directo, ya que el coeficiente es positivo, eso quiere decir que cuando el porcentaje de renta aumenta, aumenta el índice de capacidad estatal, lo cual significa que los países que dependen más de los recursos naturales tienen Estados menos eficientes a la hora de brindar servicios básicos. Asimismo, cuando el porcentaje aumenta en 1 punto, el índice aumenta en 0.111 unidades. De igual manera, el R cuadrado nos muestra que este modelo tiene una capacidad predictora de 12.4%.

Segundo modelo

reg2=lm(modelo2,data=data2)
stargazer(reg2,type ="text")
## 
## ===============================================
##                         Dependent variable:    
##                     ---------------------------
##                              capacidad         
## -----------------------------------------------
## corrupcion                   -0.107***         
##                               (0.007)          
##                                                
## recursosnaturales              0.012           
##                               (0.015)          
##                                                
## Constant                     10.260***         
##                               (0.348)          
##                                                
## -----------------------------------------------
## Observations                    171            
## R2                             0.667           
## Adjusted R2                    0.663           
## Residual Std. Error      1.468 (df = 168)      
## F Statistic          167.998*** (df = 2; 168)  
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01
summary(reg2)
## 
## Call:
## lm(formula = modelo2, data = data2)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.7425 -1.0344  0.0942  1.1186  3.2526 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       10.260100   0.347602  29.517   <2e-16 ***
## corrupcion        -0.107065   0.006504 -16.461   <2e-16 ***
## recursosnaturales  0.012377   0.014978   0.826     0.41    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.468 on 168 degrees of freedom
## Multiple R-squared:  0.6667, Adjusted R-squared:  0.6627 
## F-statistic:   168 on 2 and 168 DF,  p-value: < 2.2e-16

ECUACIÓN DEL TERCER MODELO

Índice de capacidad estatal de brindar servicios básicos = 10.260 - 0.107065(Índice de percepción de corrupción) + 0.012377(Porcentaje de renta por recursos naturales)

INTERPRETACIÓN

Para este segundo modelo se añadió la variable de corrupción para poder explicar a la variable de índice de capacidad estatal, junto a la variable de porcentaje de renta de recursos naturales en relación al PBI. Sin embargo, los p-valores que nos arroja el modelo nos muestran que solo la variable de índice de corrupción es significativa para explicar la variable dependiente, mientras que la de porcentaje de renta por recursos naturales posee un p-valor mayor a 0.05 por lo que descartamos la posibilidad de que esta sea significativa para el modelo. El efecto del índice de corrupción en el índice de capacidad estatal es indirecto, ya que el signo del coeficiente es negativo. Eso quiere decir que cuando el índice aumenta, o sea, cuando la percepción sobre la corrupción de un país disminuye, el índice de capacidad estatal disminuye, o sea, la capacidad de brindar servicios por parte de un Estado es mejor. El efecto del porcentaje de renta por recursos naturales en el índice de capacidad estatal es directo, como fue descrito en el primer modelo. Asimismo, el R cuadrado de este modelo tiene una mayor capacidad predictora que el anterior, con un 66.3%.

tanova=anova(reg1, reg2)
stargazer(tanova,type ='text', summary = F, title ="Table de Análisis de Varianza")
## 
## Table de Análisis de Varianza
## =============================================
##   Res.Df   RSS   Df Sum of Sq    F    Pr(> F)
## ---------------------------------------------
## 1  169   945.925                             
## 2  168   362.025 1   583.899  270.962    0   
## ---------------------------------------------

INTERPRETACIÓN:

En el análisis de varianza entre los dos modelos, el p-valor resultante es menor a 0.05, por lo que podemos afirmar que ambos modelos sí difieren. Es decir, en el modelo 2 se ha reducido el error al incluir una variable más.

Análisis de conglomerados

Graficando el análisis de cluster con una gráfica de escalamiento multidimensional

##   diana corrupcion recursosnaturales  capacidad    ING_FIS       GINI
## 1     1 -0.8480558        -0.6152955 -0.9657761 -0.3862868 -0.5926575
## 2     2  0.5314518         0.3068248  0.6686617  0.4607732  0.4297677
proyeccion = cmdscale(g.dist, k=2,add =T)
dataClus$dim1 <- proyeccion$points[,1]
dataClus$dim2 <- proyeccion$points[,2]
base= ggplot(dataClus,aes(x=dim1, y=dim2,label=row.names(dataClus)))
base + geom_text(size=2, aes(color=as.factor(diana))) + labs(title ="DIANA")

Análisis factorial

## Parallel analysis suggests that the number of factors =  2  and the number of components =  NA
## 
## Loadings:
##                   MR1    MR2   
## corrupcion         0.771 -0.378
## recursosnaturales -0.514  0.182
## capacidad         -0.669  0.748
## ING_FIS            0.633       
## GINI              -0.105  0.675
## 
##                  MR1   MR2
## SS loadings    1.718 1.195
## Proportion Var 0.344 0.239
## Cumulative Var 0.344 0.583
## 
## Loadings:
##                   MR1    MR2   
## corrupcion         0.771       
## recursosnaturales -0.514       
## capacidad         -0.669  0.748
## ING_FIS            0.633       
## GINI                      0.675
## 
##                  MR1   MR2
## SS loadings    1.718 1.195
## Proportion Var 0.344 0.239
## Cumulative Var 0.344 0.583

Graficamos

fa.diagram(resfa)

Anexos

Diagnósticos de regresión con el segundo modelo

  1. Linealidad
plot(reg2,1)

INTERPRETACIÓN:

Debido a que la línea roja sí se aproxima a la línea punteada, podemos afirmar que la regresión sí es lineal. El modelo se podría emplear para realizar predicciones.

  1. Homocedasticidad
plot(reg2,3)

library(lmtest)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
bptest(reg2)
## 
##  studentized Breusch-Pagan test
## 
## data:  reg2
## BP = 6.4482, df = 2, p-value = 0.03979

INTERPRETACIÓN:

En el gráfico se puede visualizar que la línea roja no tiende a la horizontalidad, por lo que aplicamos el test de Breusch-Pagan para confirmar si el modelo presenta heterocedasticidad. El test nos arroja un valor menor a 0.05, por lo que confirmamos la hipótesis alternativa de que el modelo es heterocedástico, por lo que los errores de predicción no son constantes a lo largo de y; y los mínimos cuadrados no son eficientes en este caso. El error del modelo de regresión si afecta la varianza de la estimación, por lo que los errores de estimación pueden ser más probables, es decir, el modelo no es muy eficiente.

  1. Normalidad de los residuos
plot(reg2,2)

shapiro.test(reg2$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  reg2$residuals
## W = 0.99246, p-value = 0.5169

INTERPRETACIÓN: El gráfico nos muestra que los puntos se acercan a la línea punteada por el medio de esta, pero en los extremos estos están más dispersos. Asimismo, la prueba de Shapiro Wilk para analizar la normalidad en la distribución de los errores nos arroja un p-valor mayor a 0.05, podemos afirmar que estos sí se distribuyen normalmente. Esto hace de nuestro modelo un modelo con fuerza predictora.

  1. No Multicolinealidad
library(DescTools)
## 
## Attaching package: 'DescTools'
## The following objects are masked from 'package:psych':
## 
##     AUC, ICC, SD
## The following object is masked from 'package:BBmisc':
## 
##     %nin%
VIF(reg2)
##        corrupcion recursosnaturales 
##          1.189366          1.189366

INTERPRETACIÓN:

Ninguna de las variables predictoras arroja un valor mayor a 5, por lo que podemos afirmar que no tienen una correlación muy alta y sirven para explicar la variable dependiente sin la necesidad de retirar alguna.

  1. Valores influyentes
plot(reg2,5)

checkReg2=as.data.frame(influence.measures(reg2)$is.inf)
head(checkReg2)
##   dfb.1_ dfb.crrp dfb.rcrs dffit cov.r cook.d   hat
## 1  FALSE    FALSE    FALSE FALSE FALSE  FALSE FALSE
## 2  FALSE    FALSE    FALSE FALSE FALSE  FALSE FALSE
## 3  FALSE    FALSE    FALSE FALSE FALSE  FALSE FALSE
## 4  FALSE    FALSE    FALSE FALSE FALSE  FALSE FALSE
## 6  FALSE    FALSE    FALSE FALSE FALSE  FALSE FALSE
## 7  FALSE    FALSE    FALSE FALSE FALSE  FALSE FALSE
checkReg2[checkReg2$cook.d & checkReg2$hat,]
## [1] dfb.1_   dfb.crrp dfb.rcrs dffit    cov.r    cook.d   hat     
## <0 rows> (or 0-length row.names)
library(rmdformats)

Elección del método para conglomerados

Cálculo de la matriz de correlaciones

library(cluster)
g.dist = daisy(dataClus, metric="gower")
## Warning in daisy(dataClus, metric = "gower"): binary variable(s) 6 treated as
## interval scaled
  • Con el método Pam
library(factoextra)
fviz_nbclust(dataClus, pam,diss=g.dist,method ="gap_stat",k.max =10,verbose =F)

  • Con método “Agnes” para la estrategia jerárquica
fviz_nbclust(dataClus, hcut,diss=g.dist,method ="gap_stat",k.max =10,verbose =F,hc_func ="agnes")

  • Con el método “Diana” para estrategias jerárquicas
fviz_nbclust(dataClus, hcut,diss=g.dist,method ="gap_stat",k.max =10,verbose =F,hc_func ="diana")

  • Se pedirán 2 grupos para clusterizar.
###pam
set.seed(123)
grupos=2
res.pam=pam(g.dist,k = grupos,cluster.only =F)
dataClus$pam=res.pam$cluster
###agnes
res.agnes<- hcut(g.dist, k =grupos,hc_func='agnes',hc_method ="ward.D")
dataClus$agnes=res.agnes$cluster
### diana
res.diana <- hcut(g.dist, k = grupos,hc_func='diana')
dataClus$diana=res.diana$cluster
  • Graficando
fviz_silhouette(res.pam)
##   cluster size ave.sil.width
## 1       1   53          0.66
## 2       2   45          0.57

fviz_silhouette(res.agnes)
##   cluster size ave.sil.width
## 1       1   53          0.66
## 2       2   45          0.57

fviz_silhouette(res.diana)
##   cluster size ave.sil.width
## 1       1   53          0.66
## 2       2   45          0.57

Se opta por elegir la estrategia jerárquica (método jerárquico divisivo) con el método de Diana para poder continuar con el análisis de conglomerados.

Exploración para el análisis factorial

Análisis exploratorio

corMatrix=polycor::hetcor(bdaf2)$correlations
library(ggcorrplot)
## Warning: package 'ggcorrplot' was built under R version 4.1.3
ggcorrplot(corMatrix)

¿Los datos permiten factorizar?

psych::KMO(corMatrix)
## Kaiser-Meyer-Olkin factor adequacy
## Call: psych::KMO(r = corMatrix)
## Overall MSA =  0.66
## MSA for each item = 
##        corrupcion recursosnaturales         capacidad           ING_FIS 
##              0.67              0.76              0.61              0.85 
##              GINI 
##              0.53

¿La matriz de correlaciones es adecuada?

cortest.bartlett(corMatrix,n=nrow(bdaf2))$p.value>0.05
## [1] FALSE

=> La matriz de correlación es una matriz singular.

library(matrixcalc)
is.singular.matrix(corMatrix)
## [1] FALSE
fa.parallel(bdaf2,fm ='ML', fa ='fa',correct =T)

## Parallel analysis suggests that the number of factors =  2  and the number of components =  NA

=> Se sugiere 1 factor.

  • Redimensionar al número menor de factores
library(GPArotation)
resfa <- fa(bdaf2,nfactors =2,cor ='mixed',rotate ="varimax",fm="minres")
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected. Examine the results carefully
print(resfa$loadings)
## 
## Loadings:
##                   MR1    MR2   
## corrupcion         0.771 -0.378
## recursosnaturales -0.514  0.182
## capacidad         -0.669  0.748
## ING_FIS            0.633       
## GINI              -0.105  0.675
## 
##                  MR1   MR2
## SS loadings    1.718 1.195
## Proportion Var 0.344 0.239
## Cumulative Var 0.344 0.583
  • Mejorando el resultado
print(resfa$loadings,cutoff =0.5)
## 
## Loadings:
##                   MR1    MR2   
## corrupcion         0.771       
## recursosnaturales -0.514       
## capacidad         -0.669  0.748
## ING_FIS            0.633       
## GINI                      0.675
## 
##                  MR1   MR2
## SS loadings    1.718 1.195
## Proportion Var 0.344 0.239
## Cumulative Var 0.344 0.583

Evaluando el resultado obtenido

¿Qué variables aportan más al modelo?

sort(resfa$communality)
## recursosnaturales           ING_FIS              GINI        corrupcion 
##         0.2974214         0.4038719         0.4664505         0.7375903 
##         capacidad 
##         1.0071849

¿Qué variables contribuyen a mas de un factor?

sort(resfa$complexity)
##           ING_FIS              GINI recursosnaturales        corrupcion 
##          1.017178          1.048114          1.247642          1.454100 
##         capacidad 
##          1.975220