Despues de abrir todas las libreria necesarias, seteamos el wd a una carpeta en el escritrio con nuestro nombre

setwd("C:/Users/Adriana/Desktop/ADRIANA - R SESSIONS -")
getwd()
## [1] "C:/Users/Adriana/Desktop/ADRIANA - R SESSIONS -"

ANTES QUE NADA, iniciamos todas las librerias a utilizar:

library(rio)
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
library(taylor)
library(ggplot2)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ lubridate 1.9.2     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.0
## ✔ readr     2.1.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(kableExtra)
## 
## Attaching package: 'kableExtra'
## 
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library(scales)
## 
## Attaching package: 'scales'
## 
## The following object is masked from 'package:purrr':
## 
##     discard
## 
## The following object is masked from 'package:readr':
## 
##     col_factor
library(labelled)
library(haven)

AHORA, abrimos la base de datos con la que trabajaremos:

PRIMER DATABASE:

data1=import("2006-2020 CES age and approval survey replication data.dta")
library(labelled)
var_label(data1)
## $ocaseid
## [1] "Case Identifier"
## 
## $caseid
## [1] "Respondent identification number"
## 
## $year
## [1] "Year of CCES"
## 
## $weight
## [1] "Survey weight"
## 
## $fipsy
## [1] "congressional district by year"
## 
## $stfipsy
## [1] "state FIPS code by year"
## 
## $mcapp
## [1] "Rescaled approval of house incumbent"
## 
## $mcage
## [1] "Age of member of Congress"
## 
## $mcdem
## [1] "Representative is Democrat:1 Republican:0"
## 
## $ownmc
## [1] "Shares the same PID as MC:1 Independent or opposing party:0"
## 
## $dwnom
## [1] "DW-Nominate, House ideology score"
## 
## $leff
## [1] "Legislative effectiveness score"
## 
## $mctenure
## [1] "Tenure in office for member of Congress, in years"
## 
## $brep
## [1] "Black representative:1 Not black:0"
## 
## $lrep
## [1] "Latino representative:1 Not Latino:0"
## 
## $arep
## [1] "Asian-American representative:1 Not Asian-American:0"
## 
## $frep
## [1] "Female representative:1 Male:0"
## 
## $pid
## [1] "R's partisanship: 0-Strong Democrat 6-Strong Republican"
## 
## $ideo5
## [1] "R's ideological identification (5 pt scale): 0-very liberal 4-very conservative"
## 
## $ideo7
## [1] "R's ideology (7 pt scale): 0-very liberal 6-very conservative"
## 
## $age
## [1] "Respondent's age"
## 
## $ager
## [1] "Respondent age, rescaled (divided by 100)"
## 
## $educ
## [1] "R's education: 0-no HS 1-postgrad"
## 
## $female
## [1] "R's gender: 1-female 0-male"
## 
## $black
## [1] "R identifies as black:1 does not:0"
## 
## $latino
## [1] "R identifies as Latino:1 does not:0"
## 
## $asian
## [1] "R identifies as Asian:1 does not:0"

SEGUNDA DATABASE:

data2 = read_dta("2020 CES age experiment replication data.dta")
var_label(data2)
## $caseid
## [1] "Case ID"
## 
## $teamweight
## [1] "Team Weight"
## 
## $team_vvweight
## [1] "Team Validated Voter Weight"
## 
## $CUJ337_treat
## [1] "CUJ337_treat"
## 
## $CUJ337
## [1] "Candidate experiment: Candidate favorability"
## 
## $CUJ338
## [1] "Candidate experiment: Quality of representation"
## 
## $CUJ339_1
## [1] "Candidate experiment: Traits of state legislator - Trustworthy"
## 
## $CUJ339_2
## [1] "Candidate experiment: Traits of state legislator - Knowledgeable about the issue"
## 
## $CUJ339_3
## [1] "Candidate experiment: Traits of state legislator - Well-qualified to serve in th"
## 
## $CUJ339_4
## [1] "Candidate experiment: Traits of state legislator - Conservative"
## 
## $CUJ339_5
## [1] "Candidate experiment: Traits of state legislator - Liberal"
## 
## $CUJ339_6
## [1] "Candidate experiment: Traits of state legislator - Inexperienced"
## 
## $CUJ339_7
## [1] "Candidate experiment: Traits of state legislator - Stands up for what he believe"
## 
## $CUJ339_8
## [1] "Candidate experiment: Traits of state legislator - Out of touch with ordinary pe"
## 
## $CUJ339_9
## [1] "Candidate experiment: Traits of state legislator - Cares about people like you"
## 
## $agetreat
## [1] "Age of state legislator experiment: 1-50 years, 2-23 years, 3-77 years"
## 
## $youngsl
## [1] "Younger state legislator (23 years old)"
## 
## $oldsl
## [1] "Older state legislator (23 years old)"
## 
## $consl
## [1] "Control group - state legislator (50 years old)"
## 
## $aelvote
## [1] "Age experiment: Likelihood of voting for state legislator. 100-very likely 0-ver"
## 
## $aeqrep
## [1] "Age experiment: Quality of representation to constituents from state legislator."
## 
## $aetrust
## [1] "Age experiment: Selects 'trustworthy' as describing state legislator"
## 
## $aeknow
## [1] "Age experiment: Selects 'Knowledgeable about the issues' as describing state leg"
## 
## $aequal
## [1] "Age experiment: Selects 'Well-qualified to serve in the state legislature' as de"
## 
## $aecon
## [1] "Age experiment: Selects 'Conservative' as describing state legislator"
## 
## $aelib
## [1] "Age experiment: Selects 'Liberal' as describing state legislator"
## 
## $aeinex
## [1] "Age experiment: Selects 'Inexperienced' as describing state legislator"
## 
## $aestand
## [1] "Age experiment: Selects 'Stands up for what he believes in' as describing state"
## 
## $aeoot
## [1] "Age experiment: Selects 'Out of touch with ordinary people' as describing state"
## 
## $aecare
## [1] "Age experiment: Selects 'Cares about people like you' as describing state legisl"
## 
## $age
## [1] "Respondent's age"
## 
## $female
## [1] "R's gender: 1-female 0-male"
## 
## $nonwhite
## [1] "R's race: 1-nonwhite 0-white"
## 
## $latino
## [1] "R identifies as Latino:1 does not:0"
## 
## $black
## [1] "R identifies as black:1 does not:0"
## 
## $asian
## [1] "R identifies as Asian-American:1 does not:0"
## 
## $educ
## [1] "R's education: 0-no HS 1-postgrad (as of 2018)"
## 
## $hincome
## [1] "Household income, self-reported"
## 
## $generat
## [1] "R's generational cohort: 1-gen Z, 2-millenn., 3-gen X, 4-boomers, 5-silent"
## 
## $vvote
## [1] "Validated general election vote:1 Did not vote:0"
## 
## $ideo5
## [1] "R's ideological identification (5 pt scale): 0-very liberal 4-very conservative"
## 
## $ideo7
## [1] "R's ideology (7 pt scale): 0-very liberal 6-very conservative"

#INICIAMOS CON DATA2: “2020 CES age experiment replication data.dta”

#Variable CUJ337: Posibilidad de votar a dicho candidato para legislador estatal

library(dplyr)
data2$CUJ337=as.numeric(data2$CUJ337)

Un poco de analisis exploratorio:

summary(data2$CUJ337, na.rm=T)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    0.00   49.00   51.00   53.89   67.00  100.00       1

Como es una variable numérica, elaboramos una tabla detallada con todos los datos pertinentes para luego graficar:

data2%>%
  summarize(Mediana = median(CUJ337, na.rm=T),
            Media = mean(CUJ337, na.rm=T),
            IQR= IQR(CUJ337, na.rm=T),
            Minimo=min(CUJ337, na.rm = T),
            Maximo=max(CUJ337, na.rm=T),
            Desviación_estandar= sd(CUJ337, na.rm=T),
            Q1= quantile(CUJ337, probs = 0.25, na.rm= T),
            Q3= quantile(CUJ337, probs = 0.75, na.rm= T))
## # A tibble: 1 × 8
##   Mediana Media   IQR Minimo Maximo Desviación_estandar    Q1    Q3
##     <dbl> <dbl> <dbl>  <dbl>  <dbl>               <dbl> <dbl> <dbl>
## 1      51  53.9    18      0    100                21.3    49    67

BOXPLOT:

data2%>%
  ggplot(aes(x="", y = CUJ337, na.rm=T))+
  stat_boxplot(geom = "errorbar", width = 0.2)+
  geom_boxplot(fill = "#BAD2D7", outlier.colour = "#5D696B", alpha = 0.9)+
  labs(title="                    Posibilidad de voto al candidato para legislador estatal", x="Encuestados", y= "Posibilidad de voto (0-100)")+
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
    facet_wrap(~"Variable CUJ337")+
  scale_fill_brewer(palette="Dark2")
## Warning: Removed 1 rows containing non-finite values (`stat_boxplot()`).
## Removed 1 rows containing non-finite values (`stat_boxplot()`).

Interpretacion:

Variable CUJ338: Calidad de representacion distrital

data2$CUJ338=as.numeric(data2$CUJ338)

Un poco de analisis exploratorio:

summary(data2$CUJ338, na.rm=T)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    0.00   48.00   51.00   54.29   67.00  100.00       4

Como es una variable numérica, elaboramos una tabla detallada con todos los datos pertinentes para luego graficar:

data2%>%
  summarise(
    Mediana = median(data2$CUJ338, na.rm=T),
    Media = mean(data2$CUJ338, na.rm=T),
    Minimo= min(data2$CUJ338, na.rm=T),
    Maximo=max(data2$CUJ337, na.rm=T),
    IQR= IQR(data2$CUJ338, na.rm=T),
    Desviación= sd(data2$CUJ338, na.rm=T),
    Q1= quantile(data2$CUJ338, probs = 0.25, na.rm= T),
    Q3= quantile(data2$CUJ338, probs = 0.75, na.rm= T)
  )
## # A tibble: 1 × 8
##   Mediana Media Minimo Maximo   IQR Desviación    Q1    Q3
##     <dbl> <dbl>  <dbl>  <dbl> <dbl>      <dbl> <dbl> <dbl>
## 1      51  54.3      0    100    19       20.4    48    67

BOXPLOT:

data2%>%
  ggplot(aes(x="", y = CUJ338, na.rm=T))+
  stat_boxplot(geom = "errorbar", width = 0.2)+
  geom_boxplot(fill = "#BE9FBF", outlier.colour = "#4C3F4C", alpha = 0.9)+
  labs(title="                                Calidad de representacion a nivel distrital", x="Encuestados", y= "Calidad de representacion (1-100)")+
   theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
    facet_wrap(~"Variable CUJ338")+
  scale_fill_brewer(palette="Dark2")
## Warning: Removed 4 rows containing non-finite values (`stat_boxplot()`).
## Removed 4 rows containing non-finite values (`stat_boxplot()`).

#Variables CUJ339 (1-9); Caracteristicas del candidato

INDEX1: “Percieved competence - Capacidad percibida”

data2$CUJ339_3=as.factor(data2$CUJ339_3)
data2$CUJ339_3=factor(data2$CUJ339_3, levels = c(1:2), labels = c("Seleccionado", "No seleccionado"))

Como se trata de una variable nominal dicotomica, elaboramos una tabla de frecuencias

library(dplyr)
TablaCUJ339_3=data2 %>% 
  group_by(Bien_calificado=CUJ339_3)%>%
  summarize(Frecuencia=n(), Porcentaje=(Frecuencia/10))
TablaCUJ339_3
## # A tibble: 2 × 3
##   Bien_calificado Frecuencia Porcentaje
##   <fct>                <int>      <dbl>
## 1 Seleccionado           151       15.1
## 2 No seleccionado        849       84.9
TablaCUJ339_3%>%
  ggplot(aes(x = Bien_calificado, y = Frecuencia, fill=Bien_calificado)) +          
  geom_bar(width = 0.9, stat="identity", position = position_dodge())+
  ylim(c(0,1000))+ 
  labs(title="                                            Caracteristicas de candidato: \n              Indice de capacidad - Bien calificado para servir como legislador estatal",x="Respuestas de los encuestados", y = "Frecuencia") +  #17 
  labs(fill = "")+
  geom_text(aes(label=paste0(Frecuencia," ", "", "(", Porcentaje, "%",")")),    #18
            vjust=-0.9, 
            color="black", 
            hjust=0.5,
            position = position_dodge(0.9),  
            angle=0, 
            size=2.75
            ) +  
  scale_fill_discrete(name = "Respuestas", labels = c("Seleccionado", "No seleccionado")) +   #19
  
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
  
  facet_wrap(~"Variable Indice de capacidad - Bien calificado para servir como legislador estatal (CUJ339_3)") 

Interpretación: Como podemos ver, tanto en la tabla como el gráfico

data2$CUJ339_2=as.factor(data2$CUJ339_2)
data2$CUJ339_2=factor(data2$CUJ339_2, levels = c(1:2), labels = c("Seleccionado", "No Seleccionado"))

Como se trata de una variable nominal dicotomica, elaboramos una tabla de frecuencias

library(dplyr)
TablaCUJ339_2=data2 %>% 
  group_by(Conocedor_de_problematicas=CUJ339_2)%>%
  summarize(Frecuencia=n(), Porcentaje=(Frecuencia/10))
TablaCUJ339_2
## # A tibble: 2 × 3
##   Conocedor_de_problematicas Frecuencia Porcentaje
##   <fct>                           <int>      <dbl>
## 1 Seleccionado                      198       19.8
## 2 No Seleccionado                   802       80.2

Grafico de barras:

TablaCUJ339_2%>%
  ggplot(aes(x = Conocedor_de_problematicas, y = Frecuencia, fill=Conocedor_de_problematicas)) +          
  geom_bar(width = 0.9, stat="identity", position = position_dodge())+
  ylim(c(0,1000))+ 
  labs(title="                            Caracteristicas de candidato: \n         Indice de capacidad - Conocedor de problematicas",x="Respuestas de los encuestados", y = "Frecuencia") +  #17 
  labs(fill = "")+
  geom_text(aes(label=paste0(Frecuencia," ", "", "(", Porcentaje, "%",")")),    #18
            vjust=-0.9, 
            color="black", 
            hjust=0.5,
            position = position_dodge(0.9),  
            angle=0, 
            size=2.75
            ) +  
  scale_fill_discrete(name = "Respuestas", labels = c("Seleccionado", "No seleccionado")) +   #19
  
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
  
  facet_wrap(~"Variable Indice de capacidad - Conocedor de problematicas (CUJ339_2)") 

Interpretación:

data2$CUJ339_6=as.factor(data2$CUJ339_6)
data2$CUJ339_6=factor(data2$CUJ339_6, levels = c(1:2), labels = c("Seleccionado", "No seleccionado"))

Como se trata de una variable nominal dicotomica, elaboramos una tabla de frecuencias

library(dplyr)
TablaCUJ339_6=data2 %>% 
  group_by(Sin_experiencia=CUJ339_6)%>%
  summarize(Frecuencia=n(), Porcentaje=(Frecuencia/10))
TablaCUJ339_6
## # A tibble: 2 × 3
##   Sin_experiencia Frecuencia Porcentaje
##   <fct>                <int>      <dbl>
## 1 Seleccionado           311       31.1
## 2 No seleccionado        689       68.9

Grafico de barras:

TablaCUJ339_6 %>%
  ggplot(aes(x = Sin_experiencia, y=Frecuencia,fill=Sin_experiencia))+
  geom_bar(width = 0.4, stat="identity", position = position_dodge())+
  ylim(c(0,1000))+
  labs(title="                          Caracteristicas del candidato: \n                   Indice de capacidad - Sin experiencia",x="Respuestas de los encuestados",x="Respuestas de los encuestados", y = "Frecuencia \n (Porcentajes)") +
  geom_text(aes(label=paste0(Frecuencia," ", "", "(", Porcentaje, "%",")")),    #18
            vjust=-0.9, 
            color="black", 
            hjust=0.5,
            position = position_dodge(0.9),  
            angle=0, 
            size=2.75
            ) +  
    scale_fill_discrete(name = "Respuestas", labels = c("Seleccionado", "No seleccionado")) +   #19
  
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
  
  facet_wrap(~"Variable dicotómica Sin experiencia (CUJ339_6)")

Interpretación:

INDICE2: percieved responsiveness (receptividad percibida)

data2$CUJ339_9=as.factor(data2$CUJ339_9)
data2$CUJ339_9=factor(data2$CUJ339_9, levels = c(1:2), labels = c("Seleccionsdo", "No Seleccionado"))

Como se trata de una variable nominal dicotomica, elaboramos una tabla de frecuencias

library(dplyr)
TablaCUJ339_9=data2 %>% 
  group_by(Le_importa_la_gente_como_tu=CUJ339_2)%>%
  summarize(Frecuencia=n(), Porcentaje=(Frecuencia/10))
TablaCUJ339_9
## # A tibble: 2 × 3
##   Le_importa_la_gente_como_tu Frecuencia Porcentaje
##   <fct>                            <int>      <dbl>
## 1 Seleccionado                       198       19.8
## 2 No Seleccionado                    802       80.2

Grafico de barras:

TablaCUJ339_9 %>%
  ggplot(aes(x = Le_importa_la_gente_como_tu, y=Frecuencia,fill=Le_importa_la_gente_como_tu))+
  geom_bar(width = 0.4, stat="identity", position = position_dodge())+
  ylim(c(0,1000))+
  labs(title="                         Caracteristicas del candidato: \n       Indice de receptividad - Le importa la gente como tu",x="Respuestas de los encuestados",x="Respuestas de los encuestados", y = "Frecuencia \n (Porcentajes)") +
  geom_text(aes(label=paste0(Frecuencia," ", "", "(", Porcentaje, "%",")")),    #18
            vjust=-0.9, 
            color="black", 
            hjust=0.5,
            position = position_dodge(0.9),  
            angle=0, 
            size=2.75
            ) +  
    scale_fill_discrete(name = "Respuestas", labels = c("Seleccionado", "No seleccionado")) +   #19
  
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
  
  facet_wrap(~"Variable dicotómica Le importa le gente como tu (CUJ339_9)")

Interpretación:

data2$CUJ339_8=as.factor(data2$CUJ339_8)
data2$CUJ339_8=factor(data2$CUJ339_8, levels = c(1:2), labels = c("Seleccionado", "No Seleccionado"))

Como se trata de una variable nominal dicotomica, elaboramos una tabla de frecuencias

library(dplyr)
TablaCUJ339_8=data2 %>% 
  group_by(Alejado_de_la_gente_corriente=CUJ339_8)%>%
  summarize(Frecuencia=n(), Porcentaje=(Frecuencia/10))
TablaCUJ339_8
## # A tibble: 2 × 3
##   Alejado_de_la_gente_corriente Frecuencia Porcentaje
##   <fct>                              <int>      <dbl>
## 1 Seleccionado                          84        8.4
## 2 No Seleccionado                      916       91.6

Gráfico de barras:

TablaCUJ339_8 %>%
  ggplot(aes(x = Alejado_de_la_gente_corriente, y=Frecuencia,fill=Alejado_de_la_gente_corriente))+
  geom_bar(width = 0.4, stat="identity", position = position_dodge())+
  ylim(c(0,1000))+
  labs(title="                          Caracteristicas del candidato: \n         Indice de receptividad - Alejado de la gente corriente",x="Respuestas de los encuestados", y = "Frecuencia \n (Porcentajes)") +
  geom_text(aes(label=paste0(Frecuencia," ", "", "(", Porcentaje, "%",")")),    #18
            vjust=-0.9, 
            color="black", 
            hjust=0.5,
            position = position_dodge(0.9),  
            angle=0, 
            size=2.75
            ) +  
    scale_fill_discrete(name = "Respuestas", labels = c("Seleccionado", "No seleccionado")) +   #19
  
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
  
  facet_wrap(~"Variable dicotómica Alejado de la gente corriente (CUJ339_8)")

Interpretación:

Si es confiable y/o lucha por lo que cree:

data2$CUJ339_1=as.factor(data2$CUJ339_1)
data2$CUJ339_1=factor(data2$CUJ339_1, levels = c(1:2), labels = c("Seleccionado", "No seleccionado"))

Como se trata de una variable nominal dicotomica, elaboramos una tabla de frecuencias

library(dplyr)
TablaCUJ339_1=data2 %>% 
    group_by(Confiable=CUJ339_1)%>%
  summarize(Frecuencia=n(), Porcentaje=(Frecuencia/10))
TablaCUJ339_1
## # A tibble: 2 × 3
##   Confiable       Frecuencia Porcentaje
##   <fct>                <int>      <dbl>
## 1 Seleccionado           115       11.5
## 2 No seleccionado        885       88.5

Grafico de barras:

TablaCUJ339_1 %>%
  ggplot(aes(x = Confiable, y=Frecuencia,fill=Confiable))+
  geom_bar(width = 0.4, stat="identity", position = position_dodge())+
  ylim(c(0,1000))+
  labs(title="         Caracteristicas del candidato: confiable",x="Respuestas de los encuestados", y = "Frecuencia \n (Porcentajes)") +
  geom_text(aes(label=paste0(Frecuencia," ", "", "(", Porcentaje, "%",")")),    #18
            vjust=-0.9, 
            color="black", 
            hjust=0.5,
            position = position_dodge(0.9),  
            angle=0, 
            size=2.75
            ) +  
    scale_fill_discrete(name = "Respuestas", labels = c("Seleccionado", "No seleccionado")) +   #19
  
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
  
  facet_wrap(~"Variable dicotómica Confiable (CUJ339_1)")

Interpretación:

-Lucha por lo que cree

data2$CUJ339_7=as.factor(data2$CUJ339_7)
data2$CUJ339_7=factor(data2$CUJ339_7, levels = c(1:2), labels = c("Seleccionado", "No Seleccionado"))

Como se trata de una variable nominal dicotomica, elaboramos una tabla de frecuencias

library(dplyr)
TablaCUJ339_7=data2 %>% 
  group_by(Lucha_por_lo_que_cree=CUJ339_7)%>%
  summarize(Frecuencia=n(), Porcentaje=(Frecuencia/10))
TablaCUJ339_7
## # A tibble: 2 × 3
##   Lucha_por_lo_que_cree Frecuencia Porcentaje
##   <fct>                      <int>      <dbl>
## 1 Seleccionado                 386       38.6
## 2 No Seleccionado              614       61.4

Grafico de barras:

TablaCUJ339_7 %>%
  ggplot(aes(x = Lucha_por_lo_que_cree, y=Frecuencia,fill=Lucha_por_lo_que_cree))+
  geom_bar(width = 0.4, stat="identity", position = position_dodge())+
  ylim(c(0,1000))+
  labs(title="         Caracteristicas del candidato: Lucha por lo que cree",x="Respuestas de los encuestados", y = "Frecuencia \n (Porcentajes)") +
  geom_text(aes(label=paste0(Frecuencia," ", "", "(", Porcentaje, "%",")")),    #18
            vjust=-0.9, 
            color="black", 
            hjust=0.5,
            position = position_dodge(0.9),  
            angle=0, 
            size=2.75
            ) +  
    scale_fill_discrete(name = "Respuestas", labels = c("Seleccionado", "No seleccionado")) +   #19
  
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
  
  facet_wrap(~"Variable dicotómica Lucha por lo que cree (CUJ339_7)")

Interpretación:

PERCEPCIONES IDEOLOGICA:

data2$CUJ339_5=as.factor(data2$CUJ339_5)
data2$CUJ339_5=factor(data2$CUJ339_5, levels = c(1:2), labels = c("Seleccionado", "No seleccionado"))

Como se trata de una variable nominal dicotomica, elaboramos una tabla de frecuencias

library(dplyr)
TablaCUJ339_5=data2 %>% 
  group_by(Liberal=CUJ339_5)%>%
  summarize(Frecuencia=n(), Porcentaje=(Frecuencia/10))
TablaCUJ339_5
## # A tibble: 2 × 3
##   Liberal         Frecuencia Porcentaje
##   <fct>                <int>      <dbl>
## 1 Seleccionado            75        7.5
## 2 No seleccionado        925       92.5

Grafico de barras:

TablaCUJ339_5 %>%
  ggplot(aes(x = Liberal, y=Frecuencia,fill=Liberal))+
  geom_bar(width = 0.4, stat="identity", position = position_dodge())+
  ylim(c(0,1000))+
  labs(title="                   Caracteristicas del candidato: Liberal",x="Respuestas de los encuestados", y = "Frecuencia \n (Porcentajes)") +
  geom_text(aes(label=paste0(Frecuencia," ", "", "(", Porcentaje, "%",")")),    #18
            vjust=-0.9, 
            color="black", 
            hjust=0.5,
            position = position_dodge(0.9),  
            angle=0, 
            size=2.75
            ) +  
    scale_fill_discrete(name = "Respuestas", labels = c("Seleccionado", "No seleccionado")) +   #19
  
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
  
  facet_wrap(~"Variable dicotómica Liberal (CUJ339_5)")

Interpretación: - Conservador

data2$CUJ339_4=as.factor(data2$CUJ339_4)
data2$CUJ339_4=factor(data2$CUJ339_4, levels = c(1:2), labels = c("Seleccionado", "No Seleccionado"))

Como se trata de una variable nominal dicotomica, elaboramos una tabla de frecuencias

library(dplyr)
TablaCUJ339_4=data2 %>% 
  group_by(Conservador=CUJ339_4)%>%
  summarize(Frecuencia=n(), Porcentaje=(Frecuencia/10))
TablaCUJ339_4
## # A tibble: 2 × 3
##   Conservador     Frecuencia Porcentaje
##   <fct>                <int>      <dbl>
## 1 Seleccionado           131       13.1
## 2 No Seleccionado        869       86.9

Grafico de barras:

TablaCUJ339_4 %>%
  ggplot(aes(x = Conservador, y=Frecuencia,fill=Conservador))+
  geom_bar(width = 0.4, stat="identity", position = position_dodge())+
  ylim(c(0,1000))+
  labs(title="             Caracteristicas del candidato: Conservador",x="Respuestas de los encuestados", y = "Frecuencia \n (Porcentajes)") +
  geom_text(aes(label=paste0(Frecuencia," ", "", "(", Porcentaje, "%",")")),    #18
            vjust=-0.9, 
            color="black", 
            hjust=0.5,
            position = position_dodge(0.9),  
            angle=0, 
            size=2.75
            ) +  
    scale_fill_discrete(name = "Respuestas", labels = c("Seleccionado", "No seleccionado")) +   #19
  
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
  
  facet_wrap(~"Variable dicotómica Conservador (CUJ339_4)")

Interpretación:

#AHORA DATA1: “2006-2020 CES age and approval survey replication data.dta”

EDAD: #VARIABLE mcage: Edad del miembro del congreso

library(dplyr)
data1$mcage=as.numeric(data1$mcage)

Un poco de analisis exploratorio:

summary(data1$mcage, na.rm=T)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   29.00   51.00   59.00   58.34   66.00   91.00     659

Como es una variable numérica, elaboramos una tabla detallada con todos los datos pertinentes para luego graficar:

data1%>%
  summarize(Mediana = median(mcage, na.rm=T),
            Media = mean(mcage, na.rm=T),
            IQR= IQR(mcage, na.rm=T),
            Minimo=min(mcapp, na.rm = T),
            Maximo=max(mcage, na.rm=T),
            Desviación_estandar= sd(mcage, na.rm=T),
            Q1= quantile(mcage, probs = 0.25, na.rm= T),
            Q3= quantile(mcage, probs = 0.75, na.rm= T))
##   Mediana    Media IQR Minimo Maximo Desviación_estandar Q1 Q3
## 1      59 58.33702  15      0     91            10.67327 51 66

BOXPLOT:

data1%>%
  ggplot(aes(x="", y = mcage, na.rm=T))+
  stat_boxplot(geom = "errorbar", width = 0.2)+
  geom_boxplot(fill = "#FFD966", outlier.colour = "#FFC61A", alpha = 0.9)+
  labs(title="                            ¿Cuál es la edad del miembro del congreso?", x="Encuestados", y= "Edad")+
  scale_fill_brewer(palette="Dark2")
## Warning: Removed 659 rows containing non-finite values (`stat_boxplot()`).
## Removed 659 rows containing non-finite values (`stat_boxplot()`).

INTERPRETACION:

INCLINACION POLÍTICA: #VARIABLE mcdem: Democrata o republicano

data1$mcdem=as.factor(data1$mcdem)
data1$mcdem=factor(data1$mcdem, levels = c(0:1), labels = c("Republicano", "Democrata"))

Como se trata de una variable nominal dicotomica, elaboramos una tabla de frecuencias

library(dplyr)
Tablamcdem=data1 %>% 
  group_by(R_o_D=mcdem)%>%
  summarize(Frecuencia=n(), Porcentaje=(Frecuencia/420958)*100)%>%
   dplyr::mutate_if(is.numeric, round, 3)
Tablamcdem
## # A tibble: 3 × 3
##   R_o_D       Frecuencia Porcentaje
##   <fct>            <dbl>      <dbl>
## 1 Republicano     224779     53.4  
## 2 Democrata       195911     46.5  
## 3 <NA>               268      0.064

Grafico de barras:

Tablamcdem %>%
  ggplot(aes(x = R_o_D, y=Frecuencia,fill=R_o_D))+
  geom_bar(width = 0.4, stat="identity", position = position_dodge())+
  ylim(c(0,230000))+
  labs(title="            ¿El representante es republicano o democrata?", x="Respuestas de los encuestados", y= "Frecuencia \n (Porcentajes)") +
  geom_text(aes(label=paste0(Frecuencia," ", "", "(", Porcentaje, "%",")")),    #18
            vjust=-0.9, 
            color="black", 
            hjust=0.5,
            position = position_dodge(0.9),  
            angle=0, 
            size=2.75
            ) +  
    scale_fill_discrete(name = "Respuestas", labels = c("Republicano", "Democrata")) +   #19
  
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
  
  facet_wrap(~"Variable Inclinación política (mcdem)")

RACE/ETHNICITY: #VARIABLE brep: ascendencia afroamericana o no

data1$brep=as.factor(data1$brep)
data1$brep=factor(data1$brep, levels = c(0:1), labels = c("No black", "Black"))

Como se trata de una variable nominal dicotomica, elaboramos una tabla de frecuencias

library(dplyr)
Tablabrep=data1 %>% 
  group_by(Black_or_not=brep)%>%
  summarize(Frecuencia=n(),Porcentaje=(Frecuencia/420958)*100)%>%
   dplyr::mutate_if(is.numeric, round, 3)
Tablabrep
## # A tibble: 3 × 3
##   Black_or_not Frecuencia Porcentaje
##   <fct>             <dbl>      <dbl>
## 1 No black         381162      90.5 
## 2 Black             39794       9.45
## 3 <NA>                  2       0

Grafico de barras:

Tablabrep %>%
  ggplot(aes(x = Black_or_not, y=Frecuencia,fill=Black_or_not))+
  geom_bar(width = 0.4, stat="identity", position = position_dodge())+
  ylim(c(0,410000))+
  labs(title="            ¿El representante es de ascendencia afroamericana o no?",x="Respuestas de los encuestados", y= "Frecuencia \n (Porcentajes)") +
  geom_text(aes(label=paste0(Frecuencia," ", "", "(", Porcentaje, "%",")")),    #18
            vjust=-0.9, 
            color="black", 
            hjust=0.5,
            position = position_dodge(0.9),  
            angle=0, 
            size=2.75
            ) +  
    scale_fill_discrete(name = "Respuestas", labels = c("No afroamericano", "Afroamericano")) +   #19
  
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
  
  facet_wrap(~"Variable Ascendencia afroamericana (brep)")

#VARIABLE lrep: ascendencia latina o no

data1$lrep=as.factor(data1$lrep)
data1$lrep=factor(data1$lrep, levels = c(0:1), labels = c("No latino", "Latino"))

Como se trata de una variable nominal dicotomica, elaboramos una tabla de frecuencias

library(dplyr)
Tablalrep=data1 %>% 
  group_by(Latino_or_not=lrep)%>%
  summarize(Frecuencia=n(),Porcentaje=(Frecuencia/420958)*100)%>%
   dplyr::mutate_if(is.numeric, round, 3)
Tablalrep
## # A tibble: 3 × 3
##   Latino_or_not Frecuencia Porcentaje
##   <fct>              <dbl>      <dbl>
## 1 No latino         399806      95.0 
## 2 Latino             21150       5.02
## 3 <NA>                   2       0

Grafico de barras:

Tablalrep %>%
  ggplot(aes(x = Latino_or_not, y=Frecuencia,fill=Latino_or_not))+
  geom_bar(width = 0.4, stat="identity", position = position_dodge())+
  ylim(c(0,410000))+
  labs(title="              ¿El representante es de ascendencia latina o no?",x="Respuestas de los encuestados", y= "Frecuencia \n (Porcentajes)") +
  geom_text(aes(label=paste0(Frecuencia," ", "", "(", Porcentaje, "%",")")),    #18
            vjust=-0.9, 
            color="black", 
            hjust=0.5,
            position = position_dodge(0.9),  
            angle=0, 
            size=2.75
            ) +  
    scale_fill_discrete(name = "Respuestas", labels = c("No latino", "Latino")) +   #19
  
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
  
  facet_wrap(~"Variable Ascendencia latina (lrep)")

#VARIABLE arep: ascendencia asiatica o no

data1$arep=as.factor(data1$arep)
data1$arep=factor(data1$arep, levels = c(0:1), labels = c("No asian", "Asian"))

Como se trata de una variable nominal dicotomica, elaboramos una tabla de frecuencias

library(dplyr)
Tablaarep=data1 %>% 
  group_by(Asian_or_not=arep)%>%
  summarize(Frecuencia=n(),Porcentaje=(Frecuencia/420958)*100)%>%
   dplyr::mutate_if(is.numeric, round, 3)
Tablaarep
## # A tibble: 3 × 3
##   Asian_or_not Frecuencia Porcentaje
##   <fct>             <dbl>      <dbl>
## 1 No asian         412513      98.0 
## 2 Asian              8443       2.01
## 3 <NA>                  2       0

Grafico de barras:

Tablaarep %>%
  ggplot(aes(x = Asian_or_not, y=Frecuencia,fill=Asian_or_not))+
  geom_bar(width = 0.4, stat="identity", position = position_dodge())+
  ylim(c(0,420000))+
  labs(title="                ¿El representante es de ascendencia asiática?",x="Respuestas de los encuestados", y= "Frecuencia \n (Porcentajes)") +
  geom_text(aes(label=paste0(Frecuencia," ", "", "(", Porcentaje, "%",")")),    #18
            vjust=-0.9, 
            color="black", 
            hjust=0.5,
            position = position_dodge(0.9),  
            angle=0, 
            size=2.75
            ) +  
    scale_fill_discrete(name = "Respuestas", labels = c("No asian", "Asian")) +   #19
  
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
  
  facet_wrap(~"Variable Ascendencia asiatica-americana (arep)")

SEX: #VARIABLE frep: mujer u hombre

data1$frep=as.factor(data1$frep)
data1$frep=factor(data1$frep, levels = c(0:1), labels = c("Hombre", "Mujer"))

Como se trata de una variable nominal dicotomica, elaboramos una tabla de frecuencias

library(dplyr)
Tablafrep=data1 %>% 
  group_by(Hombre_o_Mujer=frep)%>%
  summarize(Frecuencia=n(),Porcentaje=(Frecuencia/420958)*100)%>%
   dplyr::mutate_if(is.numeric, round, 3)
Tablafrep
## # A tibble: 3 × 3
##   Hombre_o_Mujer Frecuencia Porcentaje
##   <fct>               <dbl>      <dbl>
## 1 Hombre             343984       81.7
## 2 Mujer               76972       18.3
## 3 <NA>                    2        0

Grafico de barras:

Tablafrep %>%
  ggplot(aes(x = Hombre_o_Mujer, y=Frecuencia,fill=Hombre_o_Mujer))+
  geom_bar(width = 0.4, stat="identity", position = position_dodge())+
  ylim(c(0,350000))+
  labs(title="                     ¿El/La representante es hombre o mujer?",x="Respuestas de los encuestados", y= "Frecuencia \n (Porcentajes)") +
  geom_text(aes(label=paste0(Frecuencia," ", "", "(", Porcentaje, "%",")")),    #18
            vjust=-0.9, 
            color="black", 
            hjust=0.5,
            position = position_dodge(0.9),  
            angle=0, 
            size=2.75
            ) +  
    scale_fill_discrete(name = "Sexo", labels = c("Hombre", "Mujer")) +   #19
  
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
  
  facet_wrap(~"Variable Sexo (frep)")

IDEOLOGY SPECTRUM: #VARIABLE ideo7: ideología política, liberal a conservador

data1$ideo7=as.factor(data1$ideo7)
data1$ideo7=factor(data1$ideo7, levels = c(0:6), labels = c("Very liberal", "Moderately liberal", "Slightly liberal", "In the middle", "Slightly conservative", "Moderately conservative", "Very conservative"), ordered = T)

Como se trata de una variable nominal, elaboramos una tabla de frecuencias

library(dplyr)
Tablaideo7=data1 %>% 
  group_by(Ideological_posture=ideo7)%>%
  summarize(Frecuencia=n(),Porcentaje=(Frecuencia/420958)*100)%>%
   dplyr::mutate_if(is.numeric, round, 3)
Tablaideo7
## # A tibble: 8 × 3
##   Ideological_posture     Frecuencia Porcentaje
##   <ord>                        <dbl>      <dbl>
## 1 Very liberal                 33713       8.01
## 2 Moderately liberal           45573      10.8 
## 3 Slightly liberal             35231       8.37
## 4 In the middle                81835      19.4 
## 5 Slightly conservative        37133       8.82
## 6 Moderately conservative      58079      13.8 
## 7 Very conservative            40534       9.63
## 8 <NA>                         88860      21.1

Grafico de barras:

Tablaideo7 %>%
  ggplot(aes(x = Ideological_posture, y=Frecuencia,fill=Ideological_posture) ) +          
  geom_bar(width = 0.9, stat="identity", position = position_dodge())+
  ylim(c(0,100000))+
  labs(title="    ¿Cuál es la posición ideológica del representante? \n                           (liberal o conservadora)",x="Respuestas de los encuestados", y = "Frecuencia") +  #17 
  labs(fill = "")+
  geom_text(aes(label=paste0(Frecuencia," ", "", "(", Porcentaje, "%",")")),    #18
            vjust=-0.9, 
            color="black", 
            hjust=0.5,
            position = position_dodge(0.9),  
            angle=0, 
            size=2
            ) +  
  scale_fill_discrete(name = "Postura ideologica", labels = c("Very liberal", "Moderately liberal", "Slightly liberal", "In the middle", "Slightly conservative", "Moderately conservative", "Very conservative")) +   #19
  
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
  
  facet_wrap(~"Variable Postura Ideologica de 7 niveles (ideo7)")    

SOBRE LA GENTE ENCUESTADA:

#VARIABLE age: edad de los encuestados (respondants)

data1$age=as.numeric(data1$age)

Un poco de analisis exploratorio:

summary(data1$age, na.rm=T)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   18.00   35.00   51.00   49.52   62.00  100.00       2

Como es una variable numérica, elaboramos una tabla detallada con todos los datos pertinentes para luego graficar:

data1%>%
  summarise(
    Mediana = median(age, na.rm=T),
    Media = mean(age, na.rm=T),
    Minimo= min(age, na.rm=T),
    Maximo=max(age, na.rm=T),
    IQR= IQR(age, na.rm=T),
    Desviación= sd(age, na.rm=T),
    Q1= quantile(age, probs = 0.25, na.rm= T),
    Q3= quantile(age, probs = 0.75, na.rm= T)
  )
##   Mediana    Media Minimo Maximo IQR Desviación Q1 Q3
## 1      51 49.52401     18    100  27   16.66217 35 62

Boxplot:

data1%>%
  ggplot(aes(x="", y = age, na.rm=T))+
  stat_boxplot(geom = "errorbar", width = 0.2)+
  geom_boxplot(fill = "#FCC95A", outlier.colour = "red", alpha = 0.9)+
  labs(title="                               Percepcion de qué tan bien el candidato \n                           podría representar a sus votantes en distritos", x= "Encuestados", y= "Edad")+
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +     #20
  #theme_bw(base_size = 14) +
    facet_wrap(~"Variable Edad de los respondants (age)")+
  scale_fill_brewer(palette="Dark2")
## Warning: Removed 2 rows containing non-finite values (`stat_boxplot()`).
## Removed 2 rows containing non-finite values (`stat_boxplot()`).

```