Preparació de les dades
S’utilitzarà el baròmetre del Centre d’Estudis d’Opinió realitzat entre 13 a 21 de gener de 2021, dies abans de les eleccions catalanes del 14 de febrer. El baròmetre es pot descarregar aquí.
library("haven")
setwd("/Users/rodoncas/G.Drive UPF/Tutorials/Participació/")
df <- read_sav("Microdades anonimitzades -992.sav")
Netegem la base de dades per tal d’analitzar-la amb més facilitat.
library("dplyr")
df <- df %>%
mutate(part = replace(df$P11, df$P11 == 98 | df$P11 == 99, NA),
gestio_pandemia = replace(df$P13_E, df$P13_E == 98 | df$P13_E == 99, NA),
ideol = replace(df$P6, df$P6 == 98 | df$P6 == 99, NA),
catalanisme = replace(df$P7, df$P7 == 98 | df$P7 == 99, NA),
sexe = if_else(df$SEXE==2,0,1))
df$compol <- NA
df$compol[df$P18R_CENS==1] <- "PP"
df$compol[df$P18R_CENS==3] <- "ERC"
df$compol[df$P18R_CENS==4] <- "PSC"
df$compol[df$P18R_CENS==6] <- "Cs"
df$compol[df$P18R_CENS==10] <- "CUP"
df$compol[df$P18R_CENS==21] <- "JxCat"
df$compol[df$P18R_CENS==22] <- "ECP"
df$compol <- as.factor(df$compol)
df$compol <- relevel(df$compol , "PSC")
df$simpatia <- NA
df$simpatia[df$P5==1] <- "PP"
df$simpatia[df$P5==3] <- "ERC"
df$simpatia[df$P5==4] <- "PSC"
df$simpatia[df$P5==6] <- "Cs"
df$simpatia[df$P5==10] <- "CUP"
df$simpatia[df$P5==21] <- "JxCat"
df$simpatia[df$P5==22] <- "ECP"
df$simpatia[df$P5==95] <- "Cap"
df$simpatia <- as.factor(df$simpatia)
df$part <- as.numeric(df$part)
df$part_binaria <- NA
df$part_binaria[df$part>6] <-"Probablement votarà el 14-F"
df$part_binaria[df$part<7] <-"Probablement s'abstindrà el 14-F"
df$part_binaria <- as.factor(df$part_binaria)
df$ingressos <- df$P38
df$ingressos[df$ingressos==98] <- 7
df$ingressos[df$ingressos==99] <- 7
df$ingressos <- factor(df$ingressos,
levels = c(1,2,3,4,5,6,7),
labels = c("No té cap tipus d'ingrés",
"Menys o igual a 300 €",
"De 301 a 600 €",
"De 601 a 900 €",
"De 900 a 1000 €",
"De 1001 a 1200 €",
"Ns/Nc"))
df$size <- NA
df$size[df$HABITAT<4]<- 1
df$size[df$HABITAT==4]<- 2
df$size[df$HABITAT>4]<- 3
df$size <- factor(df$size,
levels=c(1,2,3),
labels=c("Menys de 50mil habitants",
"Entre 50mil i 150mil habitants",
"Més de 150mil habitants"))
df$edat_grups <- factor(df$EDAT_GR,
levels = c(1,2,3,4,5),
labels=c("De 18 a 24 anys",
"De 25 a 34 anys",
"De 35 a 49 anys",
"De 50 a 64 anys",
"Més de 64 anys"))
Resultats
El gràfic següent mostra la distribució de la probabilitat de participar en les eleccions.
library("ggplot2")
library("ggtext")
ggplot(df, aes(x=part)) +
geom_bar(aes(y = (..count..)/sum(..count..))) +
geom_vline(xintercept = mean(df$part, na.rm = T), color="blue",lty = 2) +
ylab("Densitat") +
xlab("Amb quina seguretat anirà a votar?<br>0=Amb tota seguretat no aniré a votar; 10=Amb tota seguretat aniré a votar") +
theme(axis.title.x = element_markdown()) +
scale_y_continuous(labels=scales::percent) +
annotate("text", x = 7.2, y = 0.6, label = "Mitjana")
Quina és la probabilitat declarada de participar entre els votants de cadascun dels partits (record de vot a les eleccions del 2017)?
part2 <- df %>%
group_by(compol, part) %>%
summarise(n = n()) %>%
mutate(freq = n / sum(n)) %>%
na.omit()
ggplot(part2, aes(x=part, y = freq)) +
geom_bar(stat = "identity") +
facet_grid(~compol) +
xlab("Amb quina seguretat anirà a votar?") +
ggtitle("Amb quina seguretat aniran a votar els votants de diferents partits") +
xlab("Amb quina seguretat anirà a votar?<br>0=Amb tota seguretat no aniré a votar; 10=Amb tota seguretat aniré a votar") +
theme(axis.title.x = element_markdown()) +
geom_vline(xintercept = mean(df$part, na.rm = T), color="blue",lty = 2) +
scale_y_continuous(labels=scales::percent)
Quina és la probabilitat declara de participar entre els simpatitzants de cadascun dels partits (record de vot a les eleccions del 2017)?
part3 <- df %>%
group_by(simpatia, part) %>%
summarise(n = n()) %>%
mutate(freq = n / sum(n)) %>%
na.omit()
ggplot(part3, aes(x=part, y = freq)) +
geom_bar(stat = "identity") +
facet_grid(~simpatia) +
xlab("Amb quina seguretat anirà a votar?") +
ggtitle("Amb quina seguretat aniran a votar els simpatitzants de diferents partits") +
xlab("Amb quina seguretat anirà a votar?<br>0=Amb tota seguretat no aniré a votar; 10=Amb tota seguretat aniré a votar") +
theme(axis.title.x = element_markdown()) +
geom_vline(xintercept = mean(df$part, na.rm = T), color="blue",lty = 2) +
scale_y_continuous(labels=scales::percent)
El gràfic i la taula següents mostren la probabilitat de participar per record de vot. Per fer-ho més llegible, s’ha dividit la probabilitat de participar en dos valors: 1) Probablement votarà el 14-F: si la persona respon un valor més alt d’un 7 (aquest inclòs). 0) Tota la resta es considera que probablement s’abstindran.
library("sjPlot")
tab_xtab(var.row = df$part_binaria, var.col = df$compol, title = "Probabilitat de participar per record de vot", show.col.prc = TRUE,
show.obs = F, var.labels =c("Probabilitat de participar el 2021", "Record de vot 2017"))
Probabilitat de participar el 2021 |
Record de vot 2017 | Total | ||||||
---|---|---|---|---|---|---|---|---|
PSC | Cs | CUP | ECP | ERC | JxCat | PP | ||
Probablement s’abstindrà el 14-F |
16.9 % | 23.8 % | 6.4 % | 11.4 % | 12.3 % | 5.5 % | 33.3 % | 12.9 % |
Probablement votarà el 14-F |
83.1 % | 76.2 % | 93.6 % | 88.6 % | 87.7 % | 94.5 % | 66.7 % | 87.1 % |
Total | 100 % | 100 % | 100 % | 100 % | 100 % | 100 % | 100 % | 100 % | χ2=19.462 · df=6 · Cramer’s V=0.166 · Fisher’s p=0.001 |
La taula i el gràfic següents mostren la probabilitat de votar o abstenir-se, en aquest cas en funció de la ideologia de l’enquestat.
tab_xtab(var.row = df$part_binaria, var.col = df$ideol, title = "Probabilitat de participar per ideologia", show.col.prc = TRUE,
show.obs = F, var.labels =c("Probabilitat de participar el 2021", "Ideologia"))
Probabilitat de participar el 2021 |
Ideologia | Total | ||||||
---|---|---|---|---|---|---|---|---|
Extrema esquerra | Esquerra | Centre-esquerra | Centre | Centre-dreta | Dreta | Extrema dreta | ||
Probablement s’abstindrà el 14-F |
12.5 % | 12.5 % | 11.1 % | 19.5 % | 24 % | 21.1 % | 0 % | 14 % |
Probablement votarà el 14-F |
87.5 % | 87.5 % | 88.9 % | 80.5 % | 76 % | 78.9 % | 100 % | 86 % |
Total | 100 % | 100 % | 100 % | 100 % | 100 % | 100 % | 100 % | 100 % | χ2=11.711 · df=6 · Cramer’s V=0.112 · Fisher’s p=0.086 |
La taula i el gràfic següents mostren la probabilitat de votar o abstenir-se en funció del sentiment catalanista de l’enquestat.
tab_xtab(var.row = df$part_binaria, var.col = df$catalanisme, title = "Probabilitat de participar per sentiment catalanista", show.col.prc = TRUE, weight.by = df$PONDERA,
show.obs = F, var.labels =c("Probabilitat de participar el 2021", "Sentiment catalanista"))
Probabilitat de participar el 2021 |
Sentiment catalanista |
Total | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Mínim catalanisme | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Màxim catalanisme | ||
Probablement s’abstindrà el 14-F |
44.8 % | 22.2 % | 13.3 % | 13.6 % | 28.2 % | 26.4 % | 22.1 % | 16.7 % | 12.3 % | 8.7 % | 4.9 % | 17.9 % |
Probablement votarà el 14-F |
55.2 % | 77.8 % | 86.7 % | 86.4 % | 71.8 % | 73.6 % | 77.9 % | 83.3 % | 87.7 % | 91.3 % | 95.1 % | 82.1 % |
Total | 100 % | 100 % | 100 % | 100 % | 100 % | 100 % | 100 % | 100 % | 100 % | 100 % | 100 % | 100 % | χ2=76.247 · df=10 · Cramer’s V=0.271 · Fisher’s p=0.000 |
Model multivariant
S’estudia la probabilitat de participar en les eleccions del 14-F en funció de la ideologia d’una persona, el seu sentiment catalanista, la percepció de la gestió de la pandèmia (0 = No tindré gens en compte l’actuació de cada partit durant la pandèmia de la COVID-19; 10 = Ho tindré molt en compte), el sexe de l’enquestat (1=Home, 0=Dona) i l’edat. Un segon model incorpora el record de vot per veure si hi ha mobilització o desmobilització diferencial en funció del vot efectuat el 2017.
mod <- lm(part ~ ideol + catalanisme + gestio_pandemia + sexe + edat_grups + size, data=df)
mod2 <- lm(part ~ ideol + catalanisme + gestio_pandemia + sexe + edat_grups + size + compol, data=df)
library("jtools")
export_summs(mod,mod2, scale=T)
Model 1 | Model 2 | |
---|---|---|
(Intercept) | 8.03 *** | 8.96 *** |
(0.30) | (0.46) | |
ideol | -0.07 | -0.08 |
(0.09) | (0.11) | |
catalanisme | 0.52 *** | 0.49 *** |
(0.08) | (0.12) | |
gestio_pandemia | 0.25 ** | 0.09 |
(0.08) | (0.09) | |
sexe | -0.15 | -0.30 |
(0.16) | (0.17) | |
edat_grupsDe 25 a 34 anys | 0.47 | -0.03 |
(0.36) | (0.44) | |
edat_grupsDe 35 a 49 anys | 0.90 ** | 0.19 |
(0.31) | (0.41) | |
edat_grupsDe 50 a 64 anys | 1.01 ** | 0.61 |
(0.32) | (0.41) | |
edat_grupsMés de 64 anys | 0.79 * | 0.23 |
(0.32) | (0.42) | |
sizeEntre 50mil i 150mil habitants | -0.04 | -0.30 |
(0.22) | (0.23) | |
sizeMés de 150mil habitants | 0.22 | -0.05 |
(0.18) | (0.19) | |
compolCs | 0.34 | |
(0.41) | ||
compolCUP | -0.14 | |
(0.41) | ||
compolECP | 0.57 | |
(0.32) | ||
compolERC | -0.12 | |
(0.28) | ||
compolJxCat | 0.18 | |
(0.35) | ||
compolPP | -0.25 | |
(0.93) | ||
N | 880 | 629 |
R2 | 0.08 | 0.07 |
All continuous predictors are mean-centered and scaled by 1 standard deviation. *** p < 0.001; ** p < 0.01; * p < 0.05. |
Explorem els valors predits de dues variables significatives.
Relació entre la incidència de la covid i la participació electoral
La Covid-19 ha afectat amb més intensitat aquelles zones que van participar més el 2017?
Obrim la base de dades.
dfvirus <- read.csv("casos_municipi.csv",sep = ";",encoding = "latin1", header=T)
library("stringr")
library("tidyr")
dfvirus$codi_unic <- str_pad(dfvirus$MUNICIPICODI, 5, pad = "0")
dfvirus <- dfvirus %>%
drop_na(codi_unic)
Calculem número de casos per municipi,
dfcasos <- dfvirus %>%
group_by(codi_unic,MUNICIPIDESCRIPCIO) %>%
summarise(casos = sum(NUMCASOS), .groups = 'drop')
Importem base de dades electoral i del padró. Fem la unió entre ambdues.
dfturnout <- read.csv("turnout_17.csv",sep = ",",encoding = "latin1", header=T, na.strings = "..")
dfturnout <- dfturnout %>%
mutate(codi_unic=str_pad(codi, 6, pad = "0"),
part=((votants*100)/electors))
dfturnout$codi_unic <- substr(dfturnout$codi_unic, 1, 5)
dfpadro <- read.csv("padro_20.csv",sep = ",",encoding = "latin1", header=T, na.strings = "..")
dfpadro <- dfpadro %>%
mutate(codi_unic=str_pad(Codi, 6, pad = "0"))
dfpadro$codi_unic <- substr(dfpadro$codi_unic, 1, 5)
library("purrr")
dfcovid <- list(dfcasos, dfturnout, dfpadro) %>%
reduce(left_join, by = "codi_unic")
dfcovid <- dfcovid %>%
mutate(pcasos=(casos*100)/Total)
Aprofitem l’avinentesa per fer uns mapes.
## Reading layer `Municipis' from data source `/Users/rodoncas/G.Drive UPF/Tutorials/Participació/shp/Municipis.shp' using driver `ESRI Shapefile'
## Simple feature collection with 946 features and 6 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: 17720.01 ymin: 4942225 xmax: 370986 ymax: 5290896
## projected CRS: WGS 84 / Pseudo-Mercator
Primer un mapa de la participació el 2017.
library("viridis")
map_part <- ggplot() +
geom_sf(data=muncat, aes(fill = part)) +
scale_fill_viridis(direction = -1) +
theme(panel.background = element_blank(),
line = element_blank(),
axis.text = element_blank(),
axis.title = element_blank(),
legend.position = "bottom",
legend.title=element_blank()) +
ggtitle("Participació a les eleccions\n catalanes del 2017")
Després un mapa del percentatge de casos per municipi
library("viridis")
map_casos<- ggplot() +
geom_sf(data=muncat, aes(fill = pcasos)) +
scale_fill_gradient(low="white",high="red3") +
theme(panel.background = element_blank(),
line = element_blank(),
axis.text = element_blank(),
axis.title = element_blank(),
legend.position = "bottom",
legend.title=element_blank()) +
ggtitle("% de casos de Covid \nfins el febrer del 2021")
Ara els posem un al costat de l’altre.
Hi ha relació entre el percentatge de casos de covid i la participació registrada el 2017?