options(scipen = 999) # Retira notação científica
library(ggplot2) # Gráficos bonitos
library(googleway) # Pacote para o Google Maps
library(ggmap) # Ferramentas para fazer mapas
library(sf) # Pacote para georreferenciamento
library(maptools) # Contorno do mapa
library(mapview) # Visualização dinâmica de mapas
# DitaduraBR-2024
setwd("C:/Users/08691199741/OneDrive - unirio.br/Área de Trabalho/2024 DitaduraBR")
load("DitaduraBR-2024v2.RData")
Relatório 01
Bibliotecas do R e Arquivos
Os códigos a seguir apresentam a análise do banco de dados produzido por alunos dos cursos de ciência política e ciências sociais a partir das informações contidas no Volume 3 do Relatório Final da Comissão Nacional da Verdade (CNV).
* Vamos analisar variáveis socioeconômicas, variáveis políticas e variáveis sobre as graves violações dos direitos humanos.
* No total foram 434 registros, considerando 36 variáveis.
* Este trabalho, assim como a construção do banco de dados, foi inspirado no trabalho de Freire et al. (2019) construído sobre a ditadura de Pinochet (1973-1990) e que gerou o repositório no R chamado Pinochet.
Evolução no tempo
A Figura Figure 1 apresenta a evolução no tempo das graves violações dos direitos humanos. Observa-se que há um pico de casos de violações no ano de 1964, um período de redução logo em seguida e o pico entre 1968 e 1979. Esse período vai do ano de instalação do Ato Institucional 5 (AI-5) até a promulgação da Lei de nístia.
$data.in = as.Date(bd$start_date_daily, format="%Y-%m-%d")
bd# Extract the month
$ano <- as.numeric(format(bd$data.in, "%Y"))
bd= seq(min(na.omit(bd$ano)),max(na.omit(bd$ano)), by=1)
range = table(bd$ano)
tb = data.frame(tb)
tb names(tb) = c('Ano', 'Frequência')
= merge(data.frame(Ano=range),tb,
tb by.x='Ano',by.y='Ano', all=T)
$Frequência[is.na(tb$Frequência)]=0
tb
= ggplot(tb, aes(x=Ano, y=Frequência))+
g geom_bar(stat='identity',fill='lightblue')+theme_minimal()
g
Variáveis socioeconômicas e políticas
A Figure 2 apresenta a distribuição das vítimas menores de 18 anos e a Figura Figure 3 apresenta a distribuição das idades das vítimas.
= data.frame(table(bd$minor))
diff names(diff) = c('Menor','Frequência')
= ggplot(diff, aes(x="", y=Frequência, fill=Menor)) +
g geom_bar(stat="identity", width=1, color="white") +
coord_polar("y", start=0) +
theme_void()
g
$age = as.integer(bd$age)
bd= seq(min(na.omit(bd$age)),max(na.omit(bd$age)), by=1)
range = table(bd$age)
tb = data.frame(tb)
tb names(tb) = c('Idade', 'Frequência')
= merge(data.frame(Idade=range),tb,
tb by.x='Idade',by.y='Idade', all=T)
$Frequência[is.na(tb$Frequência)]=0
tb= ggplot(tb, aes(x=Idade, y=Frequência))+
g geom_bar(stat='identity',fill='lightblue')+theme_minimal()
g
A ?@fig-male apresenta a distribuição das vítimas de acordo com o sexo.
= table(bd$male)
tb pie(tb)
= data.frame(tb)
diff names(diff) = c('Masculino','Frequência')
= ggplot(diff, aes(x="", y=Frequência, fill=Masculino)) +
g geom_bar(stat="identity", width=1, color="white") +
coord_polar("y", start=0) +
theme_void()
g
A Figura ?@fig-occupation mostra as principais ocupações das vítimas e o detalhamento dessas ocupações.
# Occupation (Ocupação) ---
= table(bd$occupation)
tb = sort(tb, deacresing=T)
tb $occupation = factor(bd$occupation, levels=names(tb))
bd= ggplot(bd[!is.na(bd$occupation),], aes(y=occupation))+
g geom_bar(stat='count', fill='lightblue')
g
#| label: fig-occupation_detail
#| fig-cap: Ocupação detalhada da vítma
= table(bd$occupation_detail)
tb = sort(tb, decreasing = F)
tb $occupation_detail = factor(bd$occupation_detail, levels=names(tb))
bd= ggplot(bd[!is.na(bd$occupation_detail),], aes(y=occupation_detail))+
g geom_bar(stat='count', fill='lightblue')
g
As Figuras ?@fig-affiliation mostram as afiliações políticas das vítimas: geral e detalhada.
= table(bd$victim_affliation)
tb = data.frame(tb)
diff names(diff) = c('Afiliação','Frequência')
= ggplot(diff, aes(x="", y=Frequência, fill=Afiliação)) +
g geom_bar(stat="identity", width=1, color="white") +
coord_polar("y", start=0) +
theme_void()
g
#| label: fig-affiliation_detail
#| fig-cap: Afiliação detalhada da vítma
= table(bd$victim_affliation_detail)
tb $detalhes = bd$victim_affliation_detail
bd= table(bd$detalhes)
tb = sort(tb, decreasing = T)
tb $detalhes[bd$detalhes %in% names(tb)[tb<4]] = 'Outros'
bd= table(bd$detalhes)
tb = sort(tb, decreasing = F)
tb = data.frame(tb)
diff names(diff) = c('Afiliação','Frequência')
= ggplot(diff, aes(y=Afiliação, x=Frequência)) +
g geom_bar(stat="identity", fill="lightblue")+theme_minimal()
g
Mapas
Os mapas a seguir apresentam os locais de graves violações dos direitos humanos, o primeiro local onde as violações ocorreram e o segundo local.
# Localização 1 (início das violações dos direitos humanos)
= bd[!is.na(bd$latitude_1),]
bdl <- st_as_sf(bdl, coords = c("longitude_1", "latitude_1"), crs = 4326)
locais = mapview(locais, label=bd$last_name)
ma ma
# Localização 2 (violações dos direitos humanos)
= bd[!is.na(bd$latitude_2),]
bdl <- st_as_sf(bdl, coords = c("longitude_2", "latitude_2"), crs = 4326)
locais = mapview(locais, col.regions='red', label=bd$violence)
mb mb
Recomendações
Este trabalho ampliou o número de variáveis considerados em Freire et al. (2019) ao incluir uma variável com os textos das recomendações extraídos do Volume 3 do Relatório Final da CNV. Observe que os termos: mortais, óbito, paradero e informações são recorrentes, indicando a recomendação de obtenção de melhores informações sobre as condições das mortes. Outros termos recorrentes são investigação, punir e responsáveis, levando na direção que as apurações devem levar a responsabilização e a punição dos responsáveis pelas graves violações dos direitos humanos.
library(tm)
library(SnowballC)
library(wordcloud)
library(stringr)
library(dplyr)
= VCorpus(VectorSource(bd$recomendation...35))
auxCorpus <- tm_map(auxCorpus, PlainTextDocument)
auxCorpus <- tm_map(auxCorpus, removePunctuation)
auxCorpus <- tm_map(auxCorpus, removeNumbers)
auxCorpus <- tm_map(auxCorpus, removeWords, stopwords("portuguese"))
auxCorpus <- tm_map(auxCorpus, content_transformer(tolower))
auxCorpus <- tm_map(auxCorpus, stripWhitespace)
auxCorpus
wordcloud(auxCorpus,max.words=100,colors=c("blue","red"))
Observações
1) O Steven disse que vai fazer a análise de texto melhor.
2) Esta é ainda uma versão muito preliminar que necessita de revisão.
3) O importante é pensar como esses resultados dialogam com o debate acadêmico sobre o comissionismo no Brasil.