Os comandos a seguir mostram diversas técnicas vistas em aula para análise exploratória de variáveis qualitativas e quantitativas por meio de tabelas, gráficos e medidas.
Fica como tarefa aos interessados em linguagem R buscar maneiras de customizar os gráficos e tabelas e explorar ferramentas mais modernas para fazer a mesma análise proposta. Sugere-se fortemente a exploração de pacotes como dplyr e ggplot2.
#-----------------------------------------------------------------------
# Encontro 3: Revisão Prática - Perfil do Eleitorado (TSE RR 2024)
#-----------------------------------------------------------------------
rm(list = ls())
library(tidyverse)
# --- Seção 1: Configuração Inicial e Carregamento dos Dados ---
# No TSE, o padrão é read_csv2 (separador ; e encoding Latin1/ISO-8859-1)
dados_aula <- read_csv2("perfil_eleitor_secao_2024_RR.csv",
locale = locale(encoding = "ISO-8859-1"))
# Primeiras linhas (inspeção inicial)
dados_aula[,c(6,10,12,14,16,18,20,22,24,26,27,28,29,30,31)] %>%
head() %>%
View()
# --- Seção 2: Análise Exploratória de Variáveis Qualitativas ---
## 2.1. Tabelas de Frequência
tabela_quali <- dados_aula %>%
group_by(DS_ESTADO_CIVIL) %>%
summarise("freq_abs" = sum(QT_ELEITORES_PERFIL)) %>%
mutate(freq_rel = freq_abs / sum(freq_abs),
perc = freq_rel * 100)
names(tabela_quali) <- c("Estado civil", "Freq. Abs.",
"Freq. Rel.", "Percentual")
tabela_quali
tabela_quali %>% arrange(., desc(`Freq. Rel.`))
## 2.2. Gráficos para Variáveis Qualitativas
# 2.2.1. Gráficos de Barras Simples
ggplot(tabela_quali, aes(x = `Estado civil`, y = `Freq. Abs.`)) +
geom_col(fill = "steelblue") +
theme_minimal()
ggplot(tabela_quali, aes(x = reorder(`Estado civil`, `Freq. Abs.`), y = `Freq. Abs.`)) +
geom_col(fill = "steelblue") +
theme_minimal() +
xlab("Estado Civil")
ggplot(tabela_quali, aes(x = reorder(`Estado civil`, desc(`Freq. Abs.`)),
y = `Freq. Abs.`)) +
geom_col(fill = "steelblue") +
theme_minimal() +
xlab("Estado Civil")
# 2.2.3. Gráficos de Barras Horizontais
ggplot(tabela_quali, aes(x = reorder(`Estado civil`, `Freq. Abs.`),
y = `Freq. Abs.`)) +
geom_col(fill = "steelblue") +
coord_flip() +
theme_minimal()+
labs(x = "Estado Civil")
# 2.2.4. Gráficos de Barras Empilhadas (Uma única barra)
ggplot(tabela_quali, aes(x = "Paraná",
y = `Freq. Abs.`,
fill = `Estado civil`)) +
geom_col(position = "stack")
# 2.2.5. Gráficos de Pizza
ggplot(tabela_quali, aes(x = "", y = `Freq. Abs.`,
fill = `Estado civil`)) +
geom_col() +
coord_polar("y") +
theme_void()
# --- Seção 3: Análise Exploratória de Variáveis Quantitativas ---
## 3.1. Tabelas de Frequência com Classes
# Criando faixas para a variável quantidade de eleitores por local
eleitores_local <- dados_aula %>%
group_by(NM_LOCAL_VOTACAO) %>%
summarise(freq = sum(QT_ELEITORES_PERFIL))
eleitores_local <- eleitores_local %>%
mutate(Faixas = cut(freq,
breaks = seq(0,4100,300),
right = FALSE,
include.lowest = TRUE,
dig.lab=10))
eleitores_local %>% group_by(Faixas) %>% summarise(n = n())
## 3.2. Gráficos para Variáveis Quantitativas (Variável: QT_ELEITORES_PERFIL)
# 3.2.1. Histograma e Densidade
ggplot(eleitores_local, aes(x = freq)) +
geom_histogram(binwidth = 300, fill = "gray", col = 1, boundary = 0) +
scale_x_continuous(
breaks = seq(0, 4100, by = 300),
limits = c(0, 4100)
) +
labs(title = "Histograma", x = 'Faixas', y = 'Frequência')
ggplot(eleitores_local, aes(x = freq)) +
geom_density(color = "red", size = 1) +
labs(title = "Densidade", x = '', y='Densidade')
ggplot(eleitores_local, aes(x = freq)) +
geom_histogram(aes(y = ..density..), binwidth = 300,
fill = "gray", col = 1, boundary = 0) +
geom_density(color = "red", size = 1) +
labs(title = "Histograma e Densidade", x = 'Faixas', y='Densidade')
# 3.2.2. Boxplot
ggplot(eleitores_local, aes(y = freq)) +
geom_boxplot(fill = "lightgreen") +
labs(title = "Boxplot")
# --- Seção 4: Medidas Resumo (Posição e Dispersão) ---
## 4.1. Medidas de Posição
resumo_posicao <- eleitores_local %>%
summarise(
media = mean(freq),
mediana = median(freq),
q1 = quantile(freq, 0.25),
q3 = quantile(freq, 0.75),
decil_9 = quantile(freq, 0.9)
)
resumo_posicao
## 4.2. Medidas de Dispersão
resumo_dispersao <- eleitores_local %>%
summarise(
amplitude = diff(range(freq)),
variancia = var(freq),
desvio_padrao = sd(freq)#,
#cv = (desvio_padrao / media) * 100,
#dma = mean(abs(freq - mean(freq))) # Desvio Médio Absoluto
)
resumo_dispersao
# 4.2.6. Escores Z (Padronização)
print(eleitores_local %>%
mutate(z_score = scale(freq)),
n=nrow(eleitores_local))
# --- Seção 5: Análises Bivariadas ---
## 5.1. Tabelas de Contingência (Gênero vs Raça/Cor)
tabela_contingencia <- dados_aula %>%
group_by(DS_GENERO, DS_RACA_COR) %>%
summarise(total = sum(QT_ELEITORES_PERFIL))
# 5.1.2. Proporção Geral / 5.1.3. Por Linha / 5.1.4. Por Coluna
tabela_contingencia %>%
mutate(prop_geral = total / sum(total)) %>%
group_by(DS_GENERO) %>%
mutate(prop_linha = total / sum(total))
## 5.2. Gráficos Bivariados (Quali vs Quali)
# 5.2.1. Barras lado a lado
ggplot(tabela_contingencia, aes(x = DS_GENERO,
y = total,
fill = DS_RACA_COR)) +
geom_col(position = "dodge")
ggplot(tabela_contingencia, aes(x = DS_RACA_COR,
y = total,
fill = DS_GENERO)) +
geom_col(position = "dodge")
# 5.2.2. Barras empilhadas
ggplot(tabela_contingencia, aes(x = DS_GENERO,
y = total,
fill = DS_RACA_COR)) +
geom_col(position = "stack")
ggplot(tabela_contingencia, aes(x = DS_RACA_COR,
y = total,
fill = DS_GENERO)) +
geom_col(position = "stack")
# 5.2.3. Barras empilhadas proporcionais
ggplot(tabela_contingencia, aes(x = DS_GENERO,
y = total,
fill = DS_RACA_COR)) +
geom_col(position = "fill") +
labs(y = "Proporção")
ggplot(tabela_contingencia, aes(x = DS_RACA_COR,
y = total,
fill = DS_GENERO)) +
geom_col(position = "fill") +
labs(y = "Proporção")
## 5.3. Diagrama de Dispersão / 5.4. Correlação (Quanti vs Quanti)
# Relação entre Total de Eleitores e Eleitores com Deficiência por municipio
eleitores_pcd <- dados_aula %>%
group_by(NR_SECAO) %>%
summarise(eleitores = sum(QT_ELEITORES_PERFIL),
pcd = sum(QT_ELEITORES_DEFICIENCIA))
ggplot(eleitores_pcd, aes(x = eleitores,
y = pcd)) +
geom_point(alpha = 0.8)
ggplot(eleitores_pcd, aes(x = eleitores,
y = pcd)) +
geom_point(alpha = 0.8) +
geom_smooth(method = "lm")
ggplot(eleitores_pcd, aes(x = eleitores,
y = pcd)) +
geom_point(alpha = 0.8) +
geom_smooth(method = "loess")
ggplot(eleitores_pcd, aes(x = eleitores,
y = pcd)) +
geom_point(alpha = 0.8) +
geom_smooth(method = "loess", se=F)+
geom_smooth(method = "lm", se=F, col=2)
cor(eleitores_pcd$eleitores, eleitores_pcd$pcd)
## 5.5. Comparativa por Grupo (Quanti vs Quali)
# 5.5.1. Medidas Resumo por Grupo (Gênero)
eleitores_genero <- dados_aula %>%
group_by(NM_LOCAL_VOTACAO, DS_GENERO) %>%
summarise(eleitores = sum(QT_ELEITORES_PERFIL))
eleitores_genero %>%
group_by(DS_GENERO) %>%
summarise(media = mean(eleitores),
sd = sd(eleitores))
# 5.5.2. Boxplots Comparativos
ggplot(eleitores_genero, aes(x = DS_GENERO,
y = eleitores)) +
geom_boxplot()
# 5.5.3. Histograma e Densidade por Grupo
ggplot(eleitores_genero, aes(x = eleitores, fill = DS_GENERO)) +
geom_density(alpha = 0.4) +
labs(title = "")