#### JUNTANDO BD1 E BDLULA
= left_join(alfabetizacaomunicipio2, nulos, by = c("Município", "UF"))
bd1 = drop_na(bd1)
bd1
= left_join(bd1, nominais, by = c("Município", "UF"))
bdlula = filter(bdlula, nm_urna_candidato == "LULA")
bdlula = drop_na(bdlula)
bdlula
= bd1 |>
bd1 rename(code_muni = `Cód.`)
= bdlula |>
bdlula rename(code_muni = `Cód.`)
#head(bdlula)
ANALFABETISMO E VOTO
PROBLEMA DE PESQUISA:
POSSÍVEIS PERGUNTAS DE PESQUISA:
Há correlação entre % de analfabetos e voto no Lula por município?
Há correlação entre % de analfabetos e abstenções por município?
Há correlação entre % de analfabetos e votos nulos e brancos por município?
Há correlação entre % de analfabetos e votos no Bolsonaro por município?
Como as regiões com maior % de analfabetos votam
Possível hipótese:
Há correlações significativa entre % de analfabetismo e % de votos no Lula. fazendo com que o “analfabeto” seja usado de maneira pejorativa para descredenciar opositores e incitar a militância.
FONTES DOS BANCOS DE DADOS:
SIG(TSE) e SIDRA (IBGE)
PRÉ-PROCESSAMENTO DE DADOS
ANÁLISES
Analfabetismo
Abstenções
|>
mapa_dados ggplot() +
geom_sf(aes(fill = pc_abstencoes), color = NA) +
scale_fill_viridis_c(option = "plasma", direction = -1) +
labs(title = "% de Abstencionismo Eleitoral", fill = "%") +
theme_minimal()
|>
bd1 ggplot(aes(x = regiao, y = pc_abstencoes)) +
geom_boxplot(fill = "orange") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
labs(title = "Boxplot % de Abstenções dos municípios por Região",
x = "Região",
y = "% Abstenções")
|>
bd1 ggplot(aes(x = perc_analfa, y = pc_abstencoes)) +
geom_point(alpha = 0.6, color = "darkblue") +
labs(
x = "% de Analfabetismo",
y = "% de Comparecimento Eleitoral",
title = "Analfabetismo vs Abstencionismo Eleitoral por Município"
+
) theme_minimal()
Nulos e Brancos
Voto no Lula
|>
mapa_dados ggplot() +
geom_sf(aes(fill = pc_votos_validos), color = NA) +
scale_fill_viridis_c(option = "plasma", direction = -1) +
labs(title = "% de Votos Lula 2022", fill = "%") +
theme_minimal()
cor.test(bdlula$perc_analfa, bdlula$pc_votos_validos, method = "spearman")
Warning in cor.test.default(bdlula$perc_analfa, bdlula$pc_votos_validos, :
Impossível calcular o valor exato de p com empates
Spearman's rank correlation rho
data: bdlula$perc_analfa and bdlula$pc_votos_validos
S = 5277582834, p-value < 2.2e-16
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.8143706
O resultado mostra uma correlação de Spearman bastante alta (rho = 0,814) entre a porcentagem de analfabetismo (perc_analfa) e a porcentagem de votos válidos no Lula (pc_votos_validos), com um p-valor extremamente pequeno (< 2.2e-16).
Interpretação:
Força da associação: A correlação de 0,81 indica uma associação positiva muito forte — ou seja, municípios com maiores taxas de analfabetismo tendem fortemente a ter maiores porcentagens de votos válidos no Lula.
Significância estatística: O p-valor praticamente zero indica que essa correlação é estatisticamente significativa, mesmo com correção para tamanhos grandes.
Spearman usa posições (ranks), então essa relação é monotônica: conforme o analfabetismo aumenta, o voto no Lula tende a aumentar, sem exigir linearidade.
plot(bdlula$perc_analfa, bdlula$pc_votos_validos,
pch = 16, col = rgb(0, 0, 1, 0.3),
xlab = "% Analfabetismo", ylab = "% Votos válidos no Lula")
lines(lowess(bdlula$perc_analfa, bdlula$pc_votos_validos), col = "red", lwd = 2)
= rlm(pc_votos_validos ~ perc_analfa, data = bdlula)
modelo_robusto summary(modelo_robusto)
Call: rlm(formula = pc_votos_validos ~ perc_analfa, data = bdlula)
Residuals:
Min 1Q Median 3Q Max
-0.782116 -0.068112 -0.002054 0.070311 0.469801
Coefficients:
Value Std. Error t value
(Intercept) 0.3073 0.0026 117.1656
perc_analfa 0.0200 0.0002 106.7124
Residual standard error: 0.1023 on 5544 degrees of freedom
= lm(pc_votos_validos ~ perc_analfa, data = bdlula)
modelo_ols summary(modelo_ols)
Call:
lm(formula = pc_votos_validos ~ perc_analfa, data = bdlula)
Residuals:
Min 1Q Median 3Q Max
-0.77172 -0.06919 -0.00179 0.06970 0.46610
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.3129147 0.0026519 118.0 <2e-16 ***
perc_analfa 0.0195384 0.0001892 103.2 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.1066 on 5544 degrees of freedom
Multiple R-squared: 0.6579, Adjusted R-squared: 0.6578
F-statistic: 1.066e+04 on 1 and 5544 DF, p-value: < 2.2e-16
plot(bdlula$perc_analfa, bdlula$pc_votos_validos,
pch = 16, col = rgb(0, 0, 1, 0.3),
xlab = "% Analfabetismo", ylab = "% Votos válidos no Lula")
abline(modelo_robusto, col = "red", lwd = 2)
abline(modelo_ols, col = "black", lty = 2) # para comparar
legend("topleft", legend = c("Robusta", "OLS"),
col = c("red", "black"), lty = c(1, 2), bty = "n")
Agora, analisando por região:
#bdlula |>
#group_by(regiao) |>
#group_modify(~ tidy(cor.test(.x$perc_analfa, .x$pc_votos_validos, method = "spearman")))
A correlação é mais forte no Sul e Sudeste, sugerindo que, nessas regiões, o analfabetismo está mais diretamente associado ao apoio eleitoral ao Lula.
Já no Nordeste, Norte e Centro-Oeste, embora a correlação também seja significativa, ela é mais fraca, o que pode refletir fatores regionais específicos, como a predominância do apoio ao Lula independentemente da escolaridade.
MAS E A RENDA? COMO SE COMPARA A RENDA
Pessoas de 10 anos ou mais de idade, Valor do rendimento nominal médio mensal, e mediano mensal, das pessoas de 10 anos ou mais de idade, por condição de atividade na semana de referência, segundo a situação do domicílio, o sexo, as classes de rendimento nominal mensal e os grupos de idade.
ATENÇÃO AQUI EU CONTEI TODAS AS PESSOAS DOS MUNICÍPIOS, NÃO SOMENTE ELEITORES. MUNICÍPIOS COM A % DE PESSOAS QUE GANHAM ATÉ 1/2 SALÁRIO MÍNIMO.
# Calcula a soma das pessoas com rendimento até 1/2 SM
#rendimento$`até_1/2SM` <- rendimento$`<1/4SM` + rendimento$`1/4<1/2SM`
# Calcula a porcentagem desse grupo em relação ao total e arredonda para 2 casas decimais
#rendimento$perc_ate_meio_SM <- round((rendimento$`até_1/2SM` / rendimento$Total) * 100, 2)
#
# # Visualiza os resultados
# head(rendimento[, c("nome", "Total", "até_1/2SM", "perc_ate_meio_SM")])
#mapa_dadosrend = municipios_shape |>
#left_join(bd3, by = "code_muni")
#ggplot(mapa_dadosrend) +
#geom_sf(aes(fill = perc_ate_meio_SM), color = NA) +
#scale_fill_viridis_c(option = "magma", direction = -1, na.value = "grey80") +
#labs(
#title = "Porcentagem de pessoas que ganham até meio salário mínimo",
#fill = "% até 1/2 Salário Mínimo"
#) +
#theme_minimal()
# bd3 = bd3 |>
# mutate(faixa_pobres = cut(
# perc_ate_meio_SM,
# breaks = c(0, 5, 10, 15, 20, 100), # Ajuste os limites conforme seus dados
# labels = c("0–5%", "5–10%", "10–15%", "15–20%", "20%+"),
# include.lowest = TRUE
# ))
#
# bd3 <- bd3 |>
# filter(!is.na(faixa_pobres), !is.na(pc_votos_validos))
#
# ggplot(bd3, aes(x = faixa_pobres, y = pc_votos_validos)) +
# geom_boxplot(fill = "gray90", color = "black", outlier.shape = 1) +
# labs(
# x = "% ganham até 1/2 salário mínimo (faixas)",
# y = "% de Votos Lula 2022",
# title = "Boxplots de % de Votos Lula 2022 por Faixas de até 1/2 salário mínimo"
# ) +
# theme_minimal(base_size = 9)
# bd3 |>
# ggplot(aes(x = perc_ate_meio_SM, y = pc_votos_validos)) +
# geom_point(alpha = 0.6, color = "darkblue") +
# labs(
# x = "% ganham até 1/2 salário mínimo",
# y = "% Votos Lula 2022",
# title = "% Até 1/2 salário mínimo vs % de Votos Lula 2022 por Município"
# ) +
# theme_minimal()
# cor.test(bd3$perc_ate_meio_SM, bd3$pc_votos_validos, method = "spearman")
# plot(bd3$perc_ate_meio_SM, bd3$pc_votos_validos,
# pch = 16, col = rgb(0, 0, 1, 0.3),
# xlab = "% Até meio SM", ylab = "% Votos válidos no Lula")
# lines(lowess(bd3$perc_ate_meio_SM, bd3$pc_votos_validos), col = "red", lwd = 2)
# modelo_robusto2 = rlm(pc_votos_validos ~ perc_ate_meio_SM, data = bd3)
# summary(modelo_robusto)
# modelo_ols2 = lm(pc_votos_validos ~ perc_ate_meio_SM, data = bd3)
# summary(modelo_ols)
# plot(bd3$pc_votos_validos ~ bd3$perc_ate_meio_SM,
# pch = 16, col = rgb(0, 0, 1, 0.3),
# xlab = "% até 1/2 Salário Mínimo", ylab = "% Votos válidos no Lula")
# abline(modelo_robusto2, col = "red", lwd = 2)
# abline(modelo_ols, col = "black", lty = 2) # para comparar
# legend("topleft", legend = c("Robusta", "OLS"),
# col = c("red", "black"), lty = c(1, 2), bty = "n")
# ggplot(bd3, aes(x = faixa_pobres, y = pc_votos_validos)) +
# geom_boxplot(fill = "gray90", color = "black", outlier.shape = 1) +
# labs(
# x = "% de até 1/2 salário mínimo (faixas)",
# y = "% de Votos Lula 2022",
# title = "Boxplots de % de Votos Lula 2022 por Faixas de 1/2 Salário Mínimo",
# subtitle = "Separado por Região"
# ) +
# facet_wrap(~ regiao) +
# theme_minimal(base_size = 9) +
# theme(
# strip.text = element_text(face = "bold"),
# axis.text.x = element_text(angle = 45, hjust = 1)
# )
EMBORA ANALFABETISMO E RENDA SE CONFUNDAM QUANDO A GENTE VÊ A VOTAÇÃO PRO LULA ACHO QUE É DÁ PRA PROBLEMATIZAR E LANÇAR UMA VISÃO CRÍTICA DO VOTO DO ANALFABETO; desconstruir a narrativa do enquadramento negativo q as pessoas dão para o voto do analfabeto e do pobre
Lançar luz tb sobre o pobre analfabeto e com baixa escolaridade e o pobre escolarizado talvez.
PARTE 2 ESEB E LAPOP
# Legenda com rótulos descritivos
= c(
legenda_edre "0" = "0. Nenhum",
"1" = "1. Fund. incompleto",
"2" = "2. Fund. completo",
"3" = "3. Médio incompleto",
"4" = "4. Médio completo",
"5" = "5. Sup. incompleto",
"6" = "6. Sup. completo",
"888888" = "888888. Não sabe",
"988888" = "988888. Não responde"
)
# Preparar dados com contagem e porcentagem
= LAPOP |>
dados_edre filter(!is.na(edre)) |>
count(edre = as.character(edre)) |>
mutate(
label = legenda_edre[edre],
perc = round(100 * n / sum(n), 1),
texto = paste0(n, " (", perc, "%)")
)
# Garantir ordem correta
$label = factor(dados_edre$label, levels = legenda_edre)
dados_edre
# Gráfico
ggplot(dados_edre, aes(x = label, y = n)) +
geom_bar(stat = "identity", fill = "darkorange") +
geom_text(aes(label = texto), vjust = -0.5, size = 2.8) +
labs(
title = "Nível educacional mais alto alcançado (EDRE)",
x = "Escolaridade",
y = "Frequência"
+
) theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(face = "bold")
)
# Subconjunto do ESEB: apenas Analfabeto e Primário incompleto
#eseb_baixa_escolaridade <- ESEB |>
#filter(D03 %in% c(1, 2))
# Subconjunto do LAPOP: apenas Nenhum e Fund. incompleto
#lapop_baixa_escolaridade <- LAPOP |>
#filter(edre %in% c(0, 1))
<- ESEB |>
ESEB mutate(
baixa_escolaridade = case_when(
%in% c(1, 2) ~ "Sim",
D03 !is.na(D03) ~ "Não",
TRUE ~ NA_character_
)|>
) mutate(
ideologia = case_when(
%in% c(0, 1, 2) ~ "Esquerda",
Q19 %in% c(3, 4) ~ "Centro-esquerda",
Q19 %in% c(5) ~ "Centro",
Q19 %in% c(6, 7) ~ "Centro-direita",
Q19 %in% c(8, 9, 10) ~ "Direita",
Q19 TRUE ~ NA_character_ # Para lidar com valores faltantes ou inválidos
)
)
#LAPOP <- LAPOP |>
#mutate(
#baixa_escolaridade = case_when(
#edre %in% c(0, 1) ~ "Sim",
#!is.na(edre) ~ "Não",
#TRUE ~ NA_character_
#)
# )
|>
ESEB filter(baixa_escolaridade == "Sim", !is.na(ideologia)) |>
count(ideologia) |>
mutate(
prop = round(100 * n / sum(n), 1)
|>
) ggplot(aes(x = factor(ideologia, levels = c("Esquerda", "Centro-esquerda", "Centro", "Centro-direita", "Direita")),
y = prop)) +
geom_bar(stat = "identity", fill = "darkorange") +
geom_text(aes(label = paste0(prop, "%")), vjust = -0.5, size = 3.5) +
labs(
title = "Distribuição ideológica entre pessoas com baixa escolaridade",
x = "Ideologia",
y = "Proporção (%)"
+
) ylim(0, 100) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold"),
axis.text.x = element_text(angle = 30, hjust = 1)
)
|>
ESEB filter(baixa_escolaridade == "Não", !is.na(ideologia)) |>
count(ideologia) |>
mutate(
prop = round(100 * n / sum(n), 1)
|>
) ggplot(aes(x = factor(ideologia, levels = c("Esquerda", "Centro-esquerda", "Centro", "Centro-direita", "Direita")),
y = prop)) +
geom_bar(stat = "identity", fill = "darkgray") +
geom_text(aes(label = paste0(prop, "%")), vjust = -0.5, size = 3.5) +
labs(
title = "Distribuição ideológica entre pessoas com alta escolaridade",
x = "Ideologia",
y = "Proporção (%)"
+
) ylim(0, 100) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold"),
axis.text.x = element_text(angle = 30, hjust = 1)
)
<- ESEB |>
dados_filtrados filter(
== "Sim",
baixa_escolaridade %in% c("Centro-direita", "Direita"),
ideologia %in% c(1:11) # Considera apenas votos válidos
Q10P1b |>
) mutate(
voto_presidencial = case_when(
== 4 ~ "Bolsonaro",
Q10P1b == 6 ~ "Lula",
Q10P1b %in% c(1:11) & !Q10P1b %in% c(4, 6) ~ "Outros"
Q10P1b
)
)
# Calcular proporções
<- dados_filtrados |>
dados_voto count(voto_presidencial) |>
mutate(
perc = round(100 * n / sum(n), 1)
)
# Exibir a tabela
print(dados_voto)
# A tibble: 3 × 3
voto_presidencial n perc
<chr> <int> <dbl>
1 Bolsonaro 23 36.5
2 Lula 37 58.7
3 Outros 3 4.8
<- ESEB |>
dados_filtrados2 filter(
== "Não",
baixa_escolaridade %in% c("Centro-direita", "Direita"),
ideologia %in% c(1:11) # Considera apenas votos válidos
Q10P1b |>
) mutate(
voto_presidencial = case_when(
== 4 ~ "Bolsonaro",
Q10P1b == 6 ~ "Lula",
Q10P1b %in% c(1:11) & !Q10P1b %in% c(4, 6) ~ "Outros"
Q10P1b
)
)
# Calcular proporções
<- dados_filtrados2 |>
dados_voto2 count(voto_presidencial) |>
mutate(
perc = round(100 * n / sum(n), 1)
)
# Exibir a tabela
print(dados_voto2)
# A tibble: 3 × 3
voto_presidencial n perc
<chr> <int> <dbl>
1 Bolsonaro 509 69.4
2 Lula 180 24.6
3 Outros 44 6
###TABELA DEMOCRACIA 1 BAIXA ESCOLARIDADE
|>
ESEB filter(baixa_escolaridade == "Sim") |>
::select(Q04a, Q04b, Q04c, Q04d) |>
dplyrpivot_longer(cols = everything(), names_to = "pergunta", values_to = "resposta") |>
filter(resposta %in% 1:5) |>
count(pergunta, resposta) |>
group_by(pergunta) |>
mutate(prop = round(100 * n / sum(n), 1)) |>
::select(-n) |>
dplyrpivot_wider(
names_from = resposta,
values_from = prop,
names_prefix = "resp_"
|>
) arrange(pergunta)
# A tibble: 4 × 6
# Groups: pergunta [4]
pergunta resp_1 resp_2 resp_3 resp_4 resp_5
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Q04a 34.3 23.9 17.2 8.2 16.4
2 Q04b 24 17.8 10.9 19.4 27.9
3 Q04c 28 16.7 7.3 12.7 35.3
4 Q04d 52.3 20.5 7.3 7.3 12.6
###TABELA DEMOCRACIA 1 ALTA ESCOLARIDADE
|>
ESEB filter(baixa_escolaridade == "Não") |>
::select(Q04a, Q04b, Q04c, Q04d) |>
dplyrpivot_longer(cols = everything(), names_to = "pergunta", values_to = "resposta") |>
filter(resposta %in% 1:5) |>
count(pergunta, resposta) |>
group_by(pergunta) |>
mutate(prop = round(100 * n / sum(n), 1)) |>
::select(-n) |>
dplyrpivot_wider(
names_from = resposta,
values_from = prop,
names_prefix = "resp_"
|>
) arrange(pergunta)
# A tibble: 4 × 6
# Groups: pergunta [4]
pergunta resp_1 resp_2 resp_3 resp_4 resp_5
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Q04a 55 22 8.2 8.7 6.1
2 Q04b 36.6 22.2 8.9 13 19.3
3 Q04c 14.8 12.1 5.9 16.3 50.9
4 Q04d 36.5 15.5 7.1 13.3 27.6
|>
ESEB filter(baixa_escolaridade == "Sim") |>
::select(Q30a, Q30b, Q30c) |>
dplyrpivot_longer(cols = everything(), names_to = "pergunta", values_to = "resposta") |>
filter(resposta %in% c(1, 2)) |>
count(pergunta, resposta) |>
group_by(pergunta) |>
mutate(prop = round(100 * n / sum(n), 1)) |>
::select(-n) |>
dplyrpivot_wider(
names_from = resposta,
values_from = prop,
names_prefix = "resp_"
)
# A tibble: 3 × 3
# Groups: pergunta [3]
pergunta resp_1 resp_2
<chr> <dbl> <dbl>
1 Q30a 46.4 53.6
2 Q30b 56.3 43.7
3 Q30c 45.1 54.9
|>
ESEB filter(baixa_escolaridade == "Não") |>
::select(Q30a, Q30b, Q30c) |>
dplyrpivot_longer(cols = everything(), names_to = "pergunta", values_to = "resposta") |>
filter(resposta %in% c(1, 2)) |>
count(pergunta, resposta) |>
group_by(pergunta) |>
mutate(prop = round(100 * n / sum(n), 1)) |>
::select(-n) |>
dplyrpivot_wider(
names_from = resposta,
values_from = prop,
names_prefix = "resp_"
)
# A tibble: 3 × 3
# Groups: pergunta [3]
pergunta resp_1 resp_2
<chr> <dbl> <dbl>
1 Q30a 42.7 57.3
2 Q30b 54.9 45.1
3 Q30c 42.4 57.6
# Selecionar apenas quem tem baixa escolaridade
<- ESEB |>
dados_baixa_esc filter(baixa_escolaridade == "Sim")
# Lista de variáveis Q31
<- paste0("Q31_", 1:14)
variaveis_q31
# Calcular proporções para cada item
<- dados_baixa_esc |>
tabela_q31 ::select(all_of(variaveis_q31)) |>
dplyrpivot_longer(cols = everything(), names_to = "tema", values_to = "resposta") |>
filter(resposta %in% c(1, 2, 3)) |> # apenas respostas válidas
mutate(resposta = case_when(
== 1 ~ "A favor",
resposta == 2 ~ "Contra",
resposta == 3 ~ "Depende"
resposta |>
)) count(tema, resposta) |>
group_by(tema) |>
mutate(prop = round(100 * n / sum(n), 1)) |>
::select(-n) |>
dplyrpivot_wider(names_from = resposta, values_from = prop) |>
arrange(tema)
# Exibir a tabela
tabela_q31
# A tibble: 14 × 4
# Groups: tema [14]
tema `A favor` Contra Depende
<chr> <dbl> <dbl> <dbl>
1 Q31_1 69.9 28.8 1.4
2 Q31_10 91.4 6.2 2.5
3 Q31_11 38.6 57.5 3.9
4 Q31_12 90.7 6.8 2.5
5 Q31_13 87.4 8.8 3.8
6 Q31_14 69.7 25.8 4.5
7 Q31_2 38.6 56.2 5.2
8 Q31_3 44.8 52.6 2.6
9 Q31_4 37.9 56.2 5.9
10 Q31_5 16.3 79.7 3.9
11 Q31_6 34.4 61.8 3.8
12 Q31_7 8.9 85.4 5.7
13 Q31_8 34.6 54.9 10.5
14 Q31_9 29 66.1 4.8
# Selecionar apenas quem tem ALTA escolaridade
<- ESEB |>
dados_alta_esc filter(baixa_escolaridade == "Não")
# Lista de variáveis Q31
<- paste0("Q31_", 1:14)
variaveis_q31alta
# Calcular proporções para cada item
<- dados_alta_esc |>
tabela_q31alta ::select(all_of(variaveis_q31alta)) |>
dplyrpivot_longer(cols = everything(), names_to = "tema", values_to = "resposta") |>
filter(resposta %in% c(1, 2, 3)) |> # apenas respostas válidas
mutate(resposta = case_when(
== 1 ~ "A favor",
resposta == 2 ~ "Contra",
resposta == 3 ~ "Depende"
resposta |>
)) count(tema, resposta) |>
group_by(tema) |>
mutate(prop = round(100 * n / sum(n), 1)) |>
::select(-n) |>
dplyrpivot_wider(names_from = resposta, values_from = prop) |>
arrange(tema)
# Exibir a tabela
tabela_q31alta
# A tibble: 14 × 4
# Groups: tema [14]
tema `A favor` Contra Depende
<chr> <dbl> <dbl> <dbl>
1 Q31_1 74.4 23.6 1.9
2 Q31_10 76.2 19.7 4.1
3 Q31_11 38.3 54.8 6.8
4 Q31_12 82.6 11.6 5.8
5 Q31_13 80.9 13.3 5.8
6 Q31_14 54.7 41.3 4
7 Q31_2 53.6 41.4 5
8 Q31_3 59.9 35.8 4.4
9 Q31_4 42.2 48.4 9.4
10 Q31_5 17.4 77.6 5.1
11 Q31_6 41.4 53.5 5.1
12 Q31_7 16.8 72.7 10.5
13 Q31_8 28 59.7 12.3
14 Q31_9 47.9 48.6 3.5
# Criar variável de religião com Candomblé e Umbanda agrupados
<- ESEB |>
ESEB mutate(
religiao_simplificada = case_when(
== 3 ~ "Católica",
D10 == 5 ~ "Evangélica",
D10 %in% c(2, 10) ~ "Candomblé/Umbanda",
D10 %in% c(1, 4, 6, 7, 8, 9, 95, 96, 97) ~ "Outros",
D10 TRUE ~ NA_character_
)
)
# Tabela de proporções apenas para quem tem baixa escolaridade
<- ESEB |>
tabela_religiao filter(baixa_escolaridade == "Sim", !is.na(religiao_simplificada)) |>
count(religiao_simplificada) |>
mutate(proporcao = round(100 * n / sum(n), 1)) |>
arrange(desc(proporcao))
# Exibir a tabela
tabela_religiao
# A tibble: 4 × 3
religiao_simplificada n proporcao
<chr> <int> <dbl>
1 Católica 111 69.4
2 Evangélica 36 22.5
3 Outros 12 7.5
4 Candomblé/Umbanda 1 0.6
# Tabela de proporções apenas para quem tem baixa escolaridade
<- ESEB |>
tabela_religiao2 filter(baixa_escolaridade == "Não", !is.na(religiao_simplificada)) |>
count(religiao_simplificada) |>
mutate(proporcao = round(100 * n / sum(n), 1)) |>
arrange(desc(proporcao))
# Exibir a tabela
tabela_religiao2
# A tibble: 4 × 3
religiao_simplificada n proporcao
<chr> <int> <dbl>
1 Católica 872 47.9
2 Evangélica 585 32.1
3 Outros 309 17
4 Candomblé/Umbanda 54 3
# Tabela com proporção de beneficiários do Auxílio Brasil entre pessoas com baixa escolaridade
<- ESEB |>
auxilio_baixaescolaridade filter(baixa_escolaridade == "Sim", Q32 %in% c(1, 2)) |>
mutate(auxilio_brasil = case_when(
== 1 ~ "Sim",
Q32 == 2 ~ "Não"
Q32 |>
)) count(auxilio_brasil) |>
mutate(proporcao = round(100 * n / sum(n), 1)) |>
arrange(desc(proporcao))
# Exibir a tabela
auxilio_baixaescolaridade
# A tibble: 2 × 3
auxilio_brasil n proporcao
<chr> <int> <dbl>
1 Não 84 52.8
2 Sim 75 47.2
# Tabela com proporção de beneficiários do Auxílio Brasil entre pessoas com ALTA escolaridade
<- ESEB |>
auxilio_altaescolaridade filter(baixa_escolaridade == "Não", Q32 %in% c(1, 2)) |>
mutate(auxilio_brasil = case_when(
== 1 ~ "Sim",
Q32 == 2 ~ "Não"
Q32 |>
)) count(auxilio_brasil) |>
mutate(proporcao = round(100 * n / sum(n), 1)) |>
arrange(desc(proporcao))
# Exibir a tabela
auxilio_altaescolaridade
# A tibble: 2 × 3
auxilio_brasil n proporcao
<chr> <int> <dbl>
1 Não 1105 60.4
2 Sim 723 39.6
|>
ESEB filter(baixa_escolaridade == "Sim", !is.na(ideologia)) |>
count(ideologia) |>
mutate(
prop = round(100 * n / sum(n), 1)
|>
) ggplot(aes(x = factor(ideologia, levels = c("Esquerda", "Centro-esquerda", "Centro", "Centro-direita", "Direita")),
y = prop)) +
geom_bar(stat = "identity", fill = "darkorange") +
geom_text(aes(label = paste0(prop, "%")), vjust = -0.5, size = 3.5) +
labs(
title = "Distribuição ideológica entre pessoas com baixa escolaridade",
x = "Ideologia",
y = "Proporção (%)"
+
) ylim(0, 100) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold"),
axis.text.x = element_text(angle = 30, hjust = 1))
# Garantir que Q19 é válido e baixa_escolaridade não é NA
<- ESEB |>
eseb_box_baixa filter(Q19 %in% 0:10 & !is.na(baixa_escolaridade))
# Criar boxplot
ggplot(eseb_box_baixa, aes(x = baixa_escolaridade, y = Q19, fill = baixa_escolaridade)) +
geom_boxplot(outlier.size = 0.8, outlier.alpha = 0.4) +
scale_fill_manual(values = c("Sim" = "tomato", "Não" = "steelblue")) +
labs(
title = "Distribuição da autolocalização ideológica (Q19) por baixa escolaridade (ESEB)",
x = "Baixa escolaridade",
y = "Posição ideológica (0 = Esquerda, 10 = Direita)"
+
) theme_minimal(base_size = 11) +
theme(legend.position = "none")
<- ESEB |>
eseb_tab filter(Q19 %in% 0:10 & !is.na(baixa_escolaridade)) |>
mutate(Q19 = as.factor(Q19)) # para tabela ordenada
# Tabela simples de frequência
<- table(eseb_tab$baixa_escolaridade, eseb_tab$Q19)
tabela_freq
# Exibir como data.frame para visualizar melhor
as.data.frame.matrix(tabela_freq)
0 1 2 3 4 5 6 7 8 9 10
Não 258 41 43 54 52 238 40 68 92 57 620
Sim 25 1 1 3 2 9 2 1 9 2 69
# Proporções por grupo (por linha)
<- prop.table(tabela_freq, margin = 1)
tabela_prop
# Exibir como data.frame com porcentagens arredondadas
round(100 * as.data.frame.matrix(tabela_prop), 1)
0 1 2 3 4 5 6 7 8 9 10
Não 16.5 2.6 2.8 3.5 3.3 15.2 2.6 4.4 5.9 3.6 39.7
Sim 20.2 0.8 0.8 2.4 1.6 7.3 1.6 0.8 7.3 1.6 55.6
<- c(
legenda_voto "1" = "Ciro Gomes",
"2" = "Eymael",
"3" = "Felipe D'Avila",
"4" = "Jair Bolsonaro",
"5" = "Léo Péricles",
"6" = "Lula",
"7" = "Padre Kelmon",
"8" = "Simone Tebet",
"9" = "Sofia Manzano",
"10" = "Soraya Thronicke",
"11" = "Vera",
"50" = "Anulou",
"60" = "Branco",
"97" = "Não sabe / não lembra",
"98" = "Não respondeu"
)
# Preparar os dados válidos
<- ESEB |>
eseb_voto filter(Q10P1b %in% names(legenda_voto) & !is.na(baixa_escolaridade)) |>
mutate(
voto_label = factor(
as.character(Q10P1b)],
legenda_voto[levels = legenda_voto
) )
# Frequência simples
<- table(eseb_voto$baixa_escolaridade, eseb_voto$voto_label)
tabela_voto_freq
# Como data frame
as.data.frame.matrix(tabela_voto_freq)
Ciro Gomes Eymael Felipe D'Avila Jair Bolsonaro Léo Péricles Lula
Não 51 0 10 633 2 686
Sim 2 0 0 38 0 80
Padre Kelmon Simone Tebet Sofia Manzano Soraya Thronicke Vera Anulou Branco
Não 3 66 2 5 1 44 21
Sim 0 3 0 0 0 0 3
Não sabe / não lembra Não respondeu
Não 5 57
Sim 1 4
# Proporção por linha (grupo)
<- prop.table(tabela_voto_freq, margin = 1)
tabela_voto_prop
# Como data frame com porcentagens arredondadas
round(100 * as.data.frame.matrix(tabela_voto_prop), 1)
Ciro Gomes Eymael Felipe D'Avila Jair Bolsonaro Léo Péricles Lula
Não 3.2 0 0.6 39.9 0.1 43.3
Sim 1.5 0 0.0 29.0 0.0 61.1
Padre Kelmon Simone Tebet Sofia Manzano Soraya Thronicke Vera Anulou Branco
Não 0.2 4.2 0.1 0.3 0.1 2.8 1.3
Sim 0.0 2.3 0.0 0.0 0.0 0.0 2.3
Não sabe / não lembra Não respondeu
Não 0.3 3.6
Sim 0.8 3.1
# Frequência absoluta
= table(LAPOP$d5newb)
tab
# Porcentagens
= prop.table(tab) * 100
percent
# Exibir porcentagens com 2 casas decimais
round(percent, 2)
1 2 3 4 5 6 7 8 9 10
8.37 2.61 4.12 3.57 9.19 6.31 7.13 7.82 6.72 44.17
= mapa_dados |>
mapa_dados_rs filter(abbrev_state == "RS")
library(viridis)
Carregando pacotes exigidos: viridisLite
|>
mapa_dados_rs ggplot() +
geom_sf(aes(fill = pc_votos_validos), color = NA) +
scale_fill_viridis_c(option = "plasma", direction = -1) +
labs(
title = "% de Votos Válidos – Lula 2022 (RS)",
fill = "%"
+
) theme_minimal()
Histograma + curva de normaliade (pra availiar o pressuposto de normalidade, portanto não é um teste paramétrico;
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.
Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
ℹ Please use `after_stat(density)` instead.
Teste de correlação não paramétrico Spearman.
Warning in cor.test.default(bd1$perc_analfa, bd1$pc_abstencoes, method =
"spearman"): Impossível calcular o valor exato de p com empates
Spearman's rank correlation rho
data: bd1$perc_analfa and bd1$pc_abstencoes
S = 2.3342e+10, p-value < 2.2e-16
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.1790039
Coeficiente rho (ρ) = 0.179:
Indica uma correlação positiva fraca entre % de analfabetismo e % de abstenções.
Ou seja, à medida que o analfabetismo aumenta, a abstenção tende a aumentar ligeiramente.
Existe uma associação estatisticamente significativa entre as duas variáveis, mas ela não é forte.
Há outros fatores mais determinantes para a abstenção além do analfabetismo.
Visualização com densidade para enfatizar ainda mais a análise
ROBUST LINEAR MODEL - OUTRO TESTE NÃO PARAMÉTRICO
Call: rlm(formula = pc_abstencoes ~ perc_analfa, data = bd1)
Residuals:
Min 1Q Median 3Q Max
-0.1370710 -0.0315673 0.0004071 0.0308762 0.1889440
Coefficients:
Value Std. Error t value
(Intercept) 0.1998 0.0012 169.1907
perc_analfa 0.0010 0.0001 11.4779
Residual standard error: 0.0462 on 5544 degrees of freedom
Há uma relação positiva e estatisticamente significativa entre o percentual de analfabetismo e a taxa de abstenção eleitoral.
No entanto, o efeito não é muito forte: um aumento de 10 pontos percentuais em analfabetismo resulta, em média, em apenas 1 ponto percentual a mais de abstenção.
% ANALFABETISMO % NULOS E BRANCOS
`geom_smooth()` using formula = 'y ~ x'
Warning in cor.test.default(bd1$perc_analfa, bd1$pc_nulosbrancos, method =
"spearman"): Impossível calcular o valor exato de p com empates
Spearman's rank correlation rho
data: bd1$perc_analfa and bd1$pc_nulosbrancos
S = 2.6975e+10, p-value = 0.0001366
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.05119652
Força da correlação:
ρ (rho) ≈ 0.05 indica quase nenhuma correlação prática.
Existe uma leve tendência de que municípios com maior % de analfabetismo tenham maior % de votos nulos/brancos. Mas a relação é muito fraca — pode ser negligenciada em análises mais interpretativas.
Robust Linear Model
Call: rlm(formula = pc_nulosbrancos ~ perc_analfa, data = bd1)
Residuals:
Min 1Q Median 3Q Max
-3.12187 -0.92987 -0.05534 0.93329 6.54092
Coefficients:
Value Std. Error t value
(Intercept) 3.8076 0.0336 113.3004
perc_analfa 0.0167 0.0024 6.9774
Residual standard error: 1.382 on 5544 degrees of freedom
ANÁLISE VOTOS NOMINAIS
Histograma % Votação Lula
Gráfico de Dispersão % Analfabetismo e % Voto Lula
`geom_smooth()` using formula = 'y ~ x'
Teste de Correlação de Spearman
Spearman's rank correlation rho
data: bdlula$perc_analfa and bdlula$pc_votos_validos
S = 5277582834, p-value < 2.2e-16
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.8143706
Correlação positiva forte: Um valor de rho = 0.81 sugere que quanto maior o percentual de analfabetismo em uma região, maior tende a ser o percentual de votos no Lula.
Significativo: O p-valor muito pequeno indica que essa associação é estatisticamente significativa, ou seja, não é fruto do acaso.
Regressão Linear Robusta
Call: rlm(formula = pc_votos_validos ~ perc_analfa, data = bdlula)
Residuals:
Min 1Q Median 3Q Max
-0.782116 -0.068112 -0.002054 0.070311 0.469801
Coefficients:
Value Std. Error t value
(Intercept) 0.3073 0.0026 117.1656
perc_analfa 0.0200 0.0002 106.7124
Residual standard error: 0.1023 on 5544 degrees of freedom
Intercepto (0.3073): Quando o percentual de analfabetismo é zero, o modelo prevê cerca de 30,7% dos votos no Lula.
Coeficiente de perc_analfa (0.0200): Para cada aumento de 1 ponto percentual no analfabetismo, o percentual de votos válidos no Lula aumenta em 2 pontos percentuais, em média, segundo o modelo.
t-valor muito alto (106.71): Forte evidência de que perc_analfa tem efeito estatisticamente significativo no voto no Lula.
Erro padrão pequeno (0.0002): A estimativa do coeficiente é muito precisa.
O modelo robusto confirma e quantifica a forte relação positiva entre analfabetismo e votação no Lula.
Cada aumento de 1% em analfabetismo está associado a um aumento de 2 pontos percentuais nos votos no Lula.
Essa associação permanece mesmo controlando para outliers e influências extremas, o que reforça a robustez do achado.