Estadística para el Análisis Político | Lección 7

Marylia Cruz

Creador del indicador aditivo de la tolerancia de la corrupción

Como ya sabemos, lo primero a realizar es cambiar el directorio y abrir la base de datos.

setwd("/Volumes/Macintosh HD - Datos/12 PUCP-Docencia/2023/POL278/Lecture6_files")
library(rio)
data=import("Base de datos para Proética 2019_4.sav")
head(names(data))
[1] "SbjNum" "nivel"  "nivel2" "Dg1"    "Dg1x"   "DG02"  

Resolución / Dar formato a las variables

Se debe reemplazar el valor 6 por NA. Para ello generamos una nueva variables con el comando mutate.

library(dplyr)
data=data%>%
  dplyr::rename("impuestos"=P41_1)%>%
  mutate(impuestos=na_if(impuestos, 6))%>%
  dplyr::rename("piratas"=P41_2)%>%
  mutate(piratas=na_if(piratas, 6))%>%
  dplyr::rename("propina"=P41_3)%>%
  mutate(propina=na_if(propina, 6))%>%
  dplyr::rename("simpatizantes"=P41_4)%>%
  mutate(simpatizantes=na_if(simpatizantes, 6))%>%
  dplyr::rename("nofactura"=P41_5)%>%
  mutate(nofactura=na_if(nofactura, 6))%>%
  dplyr::rename("funcionario"=P41_6)%>%
  mutate(funcionario=na_if(funcionario, 6))%>%
  dplyr::rename("favorsexual"=P41_7)%>%
  mutate(favorsexual=na_if(favorsexual, 6))%>%
  dplyr::rename("contrato"=P41_8)%>%
  mutate(contrato=na_if(contrato, 6))%>%
  dplyr::rename("jueces"=P41_9)%>%
  mutate(jueces=na_if(jueces, 6))%>%
  dplyr::rename("leyes"=P41_10)%>%
  mutate(leyes=na_if(leyes, 6))%>%
  dplyr::rename("callado"=P41_11)%>%
  mutate(callado=na_if(callado, 6))

Resolución / Realizamos la suma

library(dplyr)
data$suma=(data$impuestos+data$piratas+data$propina+data$simpatizantes+data$nofactura+data$funcionario+data$favorsexual+data$contrato+data$jueces+data$leyes+data$callado)
summary(data$suma)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
  11.00   18.00   22.00   21.48   23.00   54.00      91 

De acuerdo a lo anterior, apreciamos que el valor mínimo es 11. Entonces, restamos a la suma, el valor mínimo.

data$indicadorprevio=data$suma-11
summary(data$indicadorprevio)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
   0.00    7.00   11.00   10.48   12.00   43.00      91 

Divido entre el nuevo máximo, es decir, 43.

data$indicador=(data$indicadorprevio/43)
summary(data$indicador)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
 0.0000  0.1628  0.2558  0.2437  0.2791  1.0000      91 

Resolución / Creación de indicador

Dado que los valores están de 0 a 1, los multiplico por 100, si deseo que indicador sea de 0 a 100, o los multiplico por 10, si deseo que el indicador sea de 0 a 10.

data$indicador0a10=data$indicador*10
summary(data$indicador0a10)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
  0.000   1.628   2.558   2.436   2.791  10.000      91 

Repaso de prueba T

¿El indicador de tolerancia a la corrupción varía de acuerdo al lugar de residencia de los encuestados (Lima o el interior del país)?

  1. Formateamos la variable lugar de residencia (zonab)
data$zonab=as.factor(data$zonab)
data$zonab=factor(data$zonab,
                levels = levels(data$zonab),
                labels = c("Lima","Interior"),
                ordered = F)

Verifico

table(data$zonab)

    Lima Interior 
     578     1279 

Repaso / Tabla de diferencias de medias a nivel descriptivo

¿El indicador de tolerancia a la corrupción varía de acuerdo al sexo de los encuestados?

library(psych)
describeBy(data$indicador0a10,group=data$zonab)

 Descriptive statistics by group 
group: Lima
   vars   n mean   sd median trimmed  mad min  max range skew kurtosis   se
X1    1 551  2.3 1.32   2.56    2.27 0.69   0 9.53  9.53 1.05     4.77 0.06
------------------------------------------------------------ 
group: Interior
   vars    n mean   sd median trimmed  mad min max range skew kurtosis   se
X1    1 1215  2.5 1.46   2.56    2.37 1.03   0  10    10 0.98     1.73 0.04

Repaso de prueba T / Tabla de diferencias de medias a nivel descriptivo

library(lsr)
tabla=data%>%
  group_by(zonab) %>%
  summarise(Desviacion = sd(indicador0a10, na.rm=T),
          Media = mean(indicador0a10, na.rm=T),
            min = ciMean(indicador0a10,conf = 0.95, na.rm=T)[1],
            max = ciMean(indicador0a10,conf = 0.95, na.rm=T)[2],
            n=length(indicador0a10)
            )
tabla
# A tibble: 2 × 6
  zonab    Desviacion Media   min   max     n
  <fct>         <dbl> <dbl> <dbl> <dbl> <int>
1 Lima           1.32  2.30  2.19  2.41   578
2 Interior       1.46  2.50  2.42  2.58  1279

Repaso de prueba T / Diferencias de medias a nivel inferencial

t.test(indicador0a10 ~ zonab, data = data)

    Welch Two Sample t-test

data:  indicador0a10 by zonab
t = -2.8336, df = 1165, p-value = 0.004681
alternative hypothesis: true difference in means between group Lima and group Interior is not equal to 0
95 percent confidence interval:
 -0.33712342 -0.06127454
sample estimates:
    mean in group Lima mean in group Interior 
              2.299413               2.498612 

Al 95% de nivel de confianza, se puede considerar que existe una diferencia SIGNIFICATIVA en el indicador de tolerancia a la corrupción entre los encuestados que residen en Lima y en el interior del país. Quienes viven al interior del país suelen tener una tolerancia a la corrupción más alta de quienes residen en Lima Metropolitana.

Repaso de prueba T / Gráfico

library(ggplot2)
ggplot(tabla, aes(x= zonab, y =Media)) +
  geom_errorbar(aes(ymin=min, ymax=max), width = 0.2)+
   geom_text(aes(label=paste(round(Media, 2))), size=4)+
  xlab("Lugar de residencia") + ylab("Tolerancia a la corrupción")+
 ylim(1, 3)

Motivación

¿Qué sucede si deseo comparar una variable numérica pero con una variable categórica de más de dos grupos?

Por ejemplo: El nivel de tolerancia a la corrupción con el Nivel Socioeconómico .

¿Con qué otras variables categóricas podemos comparar al indicador de tolerancia a la corrupción?

Motivación 1

Motivación 2

Mapa general

Anova

  • ANOVA son las siglas de Analysis of Variance.

  • Hay varios subtipos de ANOVA. Nos centraremos en ANOVA de un factor porque a la variable independiente se le conoce como factor.

  • Usamos esta técnica cuando queremos saber si las medias de una variable son diferentes entre los niveles o grupos de otra variable.

  • ANOVA de un factor compara las medias de la variable dependiente entre los grupos o categorías de la variable independiente.

Anova / Hipótesis

  • Hipótesis Nula: Las medias son iguales

  • Hipótesis Alternativa:Al menos una media es diferente

Anova / ¿?

¿Cuál es la diferencia entre Prueba T y Prueba Anova?

Anova / 1

Anova / 2

Anova / 3

Anova / 4

Anova / 5

Anova / 6

Anova / 7

Anova / 6

Anova / 7

Anova / Ejercicio 1 en R

Evalúa el indice de tolerancia a la corrupción según el grupo de edad

  • Primero de da el formato a la variable grupo de edad.
data$grupodeedad=as.factor(data$Dg1x)
data$grupodeedad=factor(data$grupodeedad,
                  levels = levels(data$grupodeedad),
                labels = c("18a24","25a39","mas40"),
                ordered = F)
  • Realiza la prueba Anova
anova=aov(indicador0a10~ grupodeedad, data=data)
summary(anova)
              Df Sum Sq Mean Sq F value Pr(>F)
grupodeedad    2      0  0.1071   0.053  0.949
Residuals   1763   3575  2.0276               
91 observations deleted due to missingness

Anova / Ejercicio 2 en R

  • Hipótesis nula= las medias son iguales

Dado que el p-valor es 0.949, entonces a un 95% de nivel de confianza se considera no se rechaza la Hipótesis nula de igualdad de medias.

  • Se puede realizar el gráfico.

Anova / Ejercicio 3 en R

Evalúa el indice de tolerancia a la corrupción según la macrozona

data$macrozona=as.factor(data$macrozona)
data$macrozona=factor(data$macrozona,
                      levels=levels(data$macrozona),
                      labels=c("Lima","Norte","Centro","Sur","Selva"),
                      ordered=F)

Anova / Ejercicio 3 en R

anova1=aov(indicador0a10~ macrozona, data=data)
summary(anova1)
              Df Sum Sq Mean Sq F value  Pr(>F)    
macrozona      4    127   31.66   16.17 5.2e-13 ***
Residuals   1761   3448    1.96                    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
91 observations deleted due to missingness

#Al 95% de nivel de confianza, se percibe evidencia que hay diferencia significativa entre los promedios del índice de corrupción según macrozona

Anova / Ejercicio 3 en R

TukeyHSD(anova1)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = indicador0a10 ~ macrozona, data = data)

$macrozona
                    diff         lwr         upr     p adj
Norte-Lima    0.14273283 -0.10700524  0.39247091 0.5230348
Centro-Lima   0.57508908  0.27134175  0.87883641 0.0000026
Sur-Lima     -0.17307769 -0.42989729  0.08374190 0.3506656
Selva-Lima    0.55696049  0.25022077  0.86370020 0.0000077
Centro-Norte  0.43235625  0.11355014  0.75116236 0.0020452
Sur-Norte    -0.31581053 -0.59027583 -0.04134522 0.0147049
Selva-Norte   0.41422765  0.09256922  0.73588609 0.0040934
Sur-Centro   -0.74816677 -1.07255009 -0.42378346 0.0000000
Selva-Centro -0.01812859 -0.38331003  0.34705285 0.9999241
Selva-Sur     0.73003818  0.40285115  1.05722520 0.0000000

Anova / Ejercicio 3 en R

Se puede apreciar que hay una diferencia entre los promedios (…)

tabla4=data%>%
  dplyr::group_by(macrozona) %>%
  dplyr::summarise(Desviacion = sd(indicador0a10, na.rm=T),
          Media = mean(indicador0a10, na.rm=T),
            min = ciMean(indicador0a10,conf = 0.95, na.rm=T)[1],
            max = ciMean(indicador0a10,conf = 0.95, na.rm=T)[2],
            n=length(indicador0a10)
            )
tabla4
# A tibble: 5 × 6
  macrozona Desviacion Media   min   max     n
  <fct>          <dbl> <dbl> <dbl> <dbl> <int>
1 Lima            1.32  2.30  2.19  2.41   578
2 Norte           1.33  2.44  2.31  2.57   417
3 Centro          1.67  2.87  2.65  3.10   233
4 Sur             1.25  2.13  2.00  2.25   405
5 Selva           1.64  2.86  2.64  3.08   224

Anova / Ejercicio 3 en R

ggplot(tabla4,aes(x=macrozona,y=Media))+geom_errorbar(aes(ymin=min,ymax=max))+xlab("Macrozona")+ylab("Tolerancia a la corrupción")+ylim(1,4)