Nesse documento vamos unificar as duas técnicas aplicadas nos dados obtidos pelo grupo 4, do vespertino, da disciplina Práticas de Pesquisa em Sociologia. A nossa pergunta de pesquisa é “Como o G1 enquadrou a violência política sofrida e cometida por mulheres em cargos eletivos, levando em conta a ideologia de seus partidos?”. Nossa hipótese é que o enquadramento do G1 sobre violência política varia de acordo com o gênero e ideologia política das pessoas ocupantes de cargos no legislativo e executivo envolvidas nestes casos. Isto é, a maneira como a mídia noticia casos de violência política tende a variar a depender do partido político ao qual os envolvidos pertencem, bem como tende a variar dependendo se a violência foi praticada ou sofrida por homens ou mulheres.
Como técnicas quantitativas a serem aplicadas, escolhemos o uso de n-gramas para as notícias, e a frequência de partidos mais comuns nas categorias: mulheres agressoras, homens agressores, mulheres vítimas, e homens vítimas. Nesse arquivo não haverá uma análise das técnicas, só um registro de sua aplicação.
A técnica dos n-gramas consiste em identificar sequências de palavras que aparecem lado a lado, pois ela permite visualizar os padrões linguísticos mais recorrentes no conjunto de textos. Usamos bigramas, que são pares de palavras, para títulos e subtítulos, e trigramas, que são trios de palavras, para o corpo das matérias. Essa separação foi feita porque os títulos sintetizam o que é considerado mais relevante na notícia, enquanto o texto completo oferece elementos mais amplos do enquadramento. Essa técnica será utilizada para entender melhor os enquadramentos das notícias, mas também para fazer um levantamento dos atores mais frequentes nas notícias, e auxiliar a escolha dos casos para a análise qualitativa.
A frequência dos partidos servirá como uma descrição inicial dos dados, permitindo visualizar quais partidos estão mais associados aos episódios de violência. Esses dados quantitativos vão auxiliar na seleção de casos para a análise qualitativa, oferecendo um critério baseado na relevância dos partidos para a escolha dos casos.
Vamos iniciar com a aplicação da técnica dos n-gramas. Inicialmente, vamos criar um objeto com as stopwords, e uma função para criar os n-gramas e gerar os gráficos. Eu decidi usar um objeto para as stopwords, e definir ele á parte no começo do código, para facilitar a edição dele. Ou seja, foram criado os gráficos dos n-gramas algumas vezes antes da versão final, e a cada etapa eu editava esse objeto.
# Lista de stopwords (truncada aqui, mas mantenha completa no seu script real)
stopwords <- c(
"a", "as", "o", "os", "um", "uma", "uns", "umas",
"de", "da", "do", "das", "dos", "em", "na", "no", "nas", "nos", "por", "para",
"com", "sem", "sobre", "sob", "entre", "contra", "após", "ante", "até", "desde",
"durante", "mediante", "perante", "segundo", "conforme", "consoante",
"e", "ou", "mas", "porém", "contudo", "todavia", "entretanto", "no entanto",
"portanto", "logo", "pois", "porque", "como", "quando", "onde", "enquanto",
"embora", "ainda que", "mesmo que", "caso", "se", "que", "qual", "quais",
"eu", "tu", "ele", "ela", "nós", "vós", "eles", "elas", "me", "te", "se", "nos",
"vos","meu", "minha", "meus", "minhas", "teu", "tua", "teus", "tuas", "seu", "sua",
"seus", "suas", "nosso", "nossa", "nossos", "nossas", "vosso", "vossa", "vossos",
"vossas","este", "esta", "estes", "estas", "esse", "essa", "esses", "essas", "aquele",
"aquela","aqueles", "aquelas", "isto", "isso", "aquilo", "quem", "cujo", "cuja",
"cujos", "cujas", "não", "sim", "já", "ainda", "mais", "menos", "muito", "pouco", "bem",
"mal", "aqui", "ali", "lá", "cá", "aí", "aonde", "assim", "então", "agora", "hoje", "ontem",
"amanhã", "sempre", "nunca", "jamais", "talvez", "acaso", "apenas", "só", "somente",
"também", "inclusive", "ser", "estar", "ter", "haver", "ir", "vir", "fazer", "dar",
"dizer", "ver", "saber", "poder", "querer", "dever", "ficar", "passar", "chegar",
"sair", "entrar", "voltar", "trazer", "levar", "pôr", "tirar", "deixar", "encontrar",
"é", "são", "foi", "foram", "era", "eram", "será", "serão", "seja", "sejam",
"está", "estão", "esteve", "estiveram", "estava", "estavam", "estará", "estarão",
"tem", "têm", "teve", "tiveram", "tinha", "tinham", "terá", "terão", "há", "houve",
"houveram", "havia", "haviam", "haverá", "haverão", "segunda", "terça", "quarta", "quinta",
"sexta","sábado","domingo", "nesta", "neste", "nessa", "nesse", "dessa", "desse", "até hoje"
)
# Função auxiliar para gerar bigramas ou trigramas, gráfico e salvar
gerar_ngramas <- function(df, nome_base, tipo = "bigrama", cor = "gray40", arquivo_saida) {
df_filtrado <- df %>%
mutate(Relevância_num = as.numeric(as.character(Relevância))) %>%
filter(!is.na(Relevância_num) & Relevância_num != 0)
# Verificação: número de registros filtrados por relevância
cat("[", nome_base, "] Total após filtrar por relevância: ", nrow(df_filtrado), "\n")
if (tipo == "bigrama") {
df_texto <- df_filtrado %>%
filter(!(is.na(titulo) & is.na(subtitulo))) %>%
mutate(
titulo = ifelse(is.na(titulo), "", titulo),
subtitulo = ifelse(is.na(subtitulo), "", subtitulo),
texto_combinado = paste(titulo, subtitulo, sep = " ")
) %>%
select(texto_combinado) %>%
filter(texto_combinado != "" & texto_combinado != " ")
# Verificação: exemplos de textos combinados
cat("Exemplo de texto combinado:\n")
print(head(df_texto$texto_combinado, 3))
ngram_coluna <- "bigram"
ngram_n <- 2
texto_base <- df_texto
texto_campo <- "texto_combinado"
} else if (tipo == "trigrama") {
df_texto <- df_filtrado %>%
filter(!is.na(conteudo) & conteudo != "" & str_trim(conteudo) != "") %>%
select(conteudo)
# Verificação: exemplos de conteúdos válidos
cat("Exemplo de conteúdo:\n")
print(head(df_texto$conteudo, 3))
ngram_coluna <- "trigram"
ngram_n <- 3
texto_base <- df_texto
texto_campo <- "conteudo"
} else {
stop("Tipo inválido. Use 'bigrama' ou 'trigrama'.")
}
ngramas <- texto_base %>%
unnest_tokens(ng, .data[[texto_campo]], token = "ngrams", n = ngram_n) %>%
separate(ng, paste0("palavra", 1:ngram_n), sep = " ") %>%
filter(if_all(starts_with("palavra"), ~ !.x %in% stopwords & str_detect(.x, "[[:alpha:]]"))) %>%
unite(!!ngram_coluna, starts_with("palavra"), sep = " ") %>%
count(!!sym(ngram_coluna), sort = TRUE) %>%
top_n(20, n)
# Verificação: imprimir os top ngramas
cat("\nTop 5 ", tipo, ":\n")
print(head(ngramas, 5))
grafico <- ngramas %>%
mutate(!!ngram_coluna := reorder(!!sym(ngram_coluna), n)) %>%
ggplot(aes_string(x = ngram_coluna, y = "n")) +
geom_col(fill = cor, alpha = 0.8) +
coord_flip() +
labs(
title = paste("Top 20", tipo, "mais frequentes em", nome_base),
subtitle = ifelse(tipo == "bigrama", "Título + Subtítulo", "Conteúdo das Notícias"),
x = stringr::str_to_title(tipo),
y = "Frequência"
) +
theme_minimal()
ggsave(arquivo_saida, grafico, width = 12, height = 8, dpi = 300, bg = "white")
cat("Gráfico salvo em:", arquivo_saida, "\n\n")
return(list(dados = ngramas, grafico = grafico))
}
Agora, vamos importar as bases, executar a função nelas e visualizar os gráficos.
# Importar bases de dados (ajuste os caminhos conforme necessário)
mulheres_dados <- read_excel("C:/Users/gigic/Downloads/m_vitimas.xlsx")
## New names:
## • `` -> `...21`
homens_dados <- read_excel("C:/Users/gigic/Downloads/h_vitimas.xlsx")
## New names:
## • `` -> `...21`
# Executar análises
bigramas_mulheres <- gerar_ngramas(mulheres_dados, "mulheres vítimas", tipo = "bigrama", cor = "darkred", arquivo_saida = "bigramas_mulheres.png")
## [ mulheres vítimas ] Total após filtrar por relevância: 151
## Exemplo de texto combinado:
## [1] "Vídeo mostra confusão com deputada Alê Silva em aeroporto de BH: 'A senhora está infringindo a lei', diz policial Segundo o agente que a acompanhava, filmar área de segurança do aeroporto infringe legislação federal. Ela disse que tomou a atitude para evitar que alguém 'plantasse' algo em sua bagagem."
## [2] "Polícia Civil de Porto Alegre investiga denúncia de ameaças contra ex-deputada Manuela D'Ávila e filha Candidata à Vice-Presidência da República em 2018 disse que sofreu ameaças após fotos da filha, de cinco anos, serem divulgadas na internet."
## [3] "Vereadora de Contagem, na Grande BH, procura polícia após ser vítima de ataques racistas Enquanto a parlamentar discursava, um homem a atacou, chamando-a de \"nariz amassado”. Foi dela o único voto contrário ao projeto de lei que classificou academias e igrejas como serviços essenciais na cidade"
##
## Top 5 bigrama :
## # A tibble: 5 × 2
## bigram n
## <chr> <int>
## 1 redes sociais 22
## 2 violência política 17
## 3 isa penna 14
## 4 benny briolly 10
## 5 deputada andréia 10
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Gráfico salvo em: bigramas_mulheres.png
trigramas_mulheres <- gerar_ngramas(mulheres_dados, "mulheres vítimas", tipo = "trigrama", cor = "indianred", arquivo_saida = "trigramas_mulheres.png")
## [ mulheres vítimas ] Total após filtrar por relevância: 151
## Exemplo de conteúdo:
## [1] "A deputada federal Alessandra Silva (PSL-MG), conhecida como Alê Silva , filmou parte da área de inspeção do Aeroporto Internacional de Belo Horizonte , em Confins, na Região Metropolitana, na manhã desta terça-feira (25), depois de ser retirada do avião por um policial federal ao se negar a passar pelo processo de vistoria da bagagem. Fazer imagens na área de segurança infringe resolução da Agência Nacional de Aviação Civil (Anac), segundo a PF. De acordo com a BH Airport, concessionária que administra o aeroporto, durante o processo de inspeção dos pertences de mão da passageira, foi identificado um item proibido — uma tesoura — para o ingresso na Área Restrita de Segurança e também a bordo de aeronaves. A deputada foi advertida pelo agente que a acompanhava ao filmar o espaço de segurança. O vídeo do início desta reportagem registra o diálogo entre os dois (assista acima) : LEIA TAMBÉM: Em resposta, a deputada disse que, como parlamentar, tem direito de filmar. Segundo o artigo 14, da Resolução n° 215, da Agência Nacional de Aviação Civil (Anac), publicado no dia 8 de maio de 2019, \"é vedado o registro de imagens, por exemplo, fotos e filmagens, dos canais e procedimentos de inspeção de segurança da aviação civil contra atos de interferência ilícita, salvo quando autorizado pelo operador aeroportuário, consultada a Polícia Federal\". Segundo a concessionária que administra o aeroporto, a deputada não concordou com o processo de vistoria e se dirigiu para a área de embarque do aeroporto, antes da finalização do procedimento de segurança e sem autorização . Neste momento, a PF foi acionada. Ainda segundo a BH Airport, Alessandra seguiu para a aeronave, mesmo sendo alertada pela companhia aérea de que não estava autorizada. Já no interior do avião, ela foi chamada pela PF e conduzida novamente ao canal de inspeção . O item proibido foi retirado da bagagem, e a passageira foi liberada. O G1 perguntou à Polícia Federal se a deputada irá responder pela infração. Até a conclusão desta reportagem, a corporação não havia se manifestado. Em nota, a assessoria da deputada Alessandra Silva afirmou que ela iria embarcar no Aeroporto de Belo Horizonte com destino a Brasília. No detector de metais, a atendente de uma empresa que presta serviço ao aeroporto teria dito, ao abrir a bagagem da parlamentar em uma revista aleatória, que \"mala de miliciana e genocida tem que ser revistada com cuidado” . Segundo a assessoria, a deputada se calou, fechou a mala e seguiu em direção ao portão de embarque (leia a nota na íntegra ao final da reportagem). Após o embarque, Alessandra teria ligado para o seu chefe de gabinete e pedido que ele entrasse em contato com a Delegacia da Polícia Federal do aeroporto para contar o ocorrido e dizer que ela já estava dentro da aeronave e não deixaria a atendente revistar a mala sem a presença de policiais. No entanto, a delegacia não teria atendido. \"Neste meio tempo, dois policiais federais adentraram na aeronave e, com muita truculência, fizeram a deputada descer do avião e levar a mala até o local de revista\", disse a assessoria da deputada federal. Ainda segundo a nota, foi encontrada uma tesoura infantil na bagagem. Alessandra achou que o objeto fosse da filha, mas a adolescente negou, e a deputada disse esconhecer \"como a tesoura foi parar lá\". A assessoria de Alessandra Silva informou que \"estão sendo providenciadas as medidas cabíveis junto à Anac, que tem responsabilidade objetiva e solidária em relação à funcionária da empresa terceirizada\". Uma notificação oficial também será enviada à empresa. Afirmou, ainda, que uma ação será ajuizada na corregedoria da Polícia Federal , devido à negativa de atendimento por telefone no aeroporto e ao modo de abordagem da deputada, \"mediante truculência e abuso de poder\". Em nota, a Anac afirmou que \"nenhum passageiro pode seguir para embarque antes de ter sua passagem e seus pertences inspecionados pelos procedimentos de segurança do canal de inspeção\" . Caso isso ocorra, a PF é acionada para avaliar a situação e adotar as providências cabíveis. \"Todas as ocorrências nos canais de inspeção dos aeroportos brasileiros são enviadas à Anac, para que a Agência avalie se houve descumprimento de alguma norma de segurança\", concluiu. Já a PF informou que foi acionada no aeroporto, para comparecimento em aeronave que voaria com destino a Brasília, \"em virtude de uma passageira ter negado que sua bagagem fosse submetida à inspeção\". Segundo a corporação, após autorização do comandante da aeronave, \"de forma a não comprometer a programação de decolagem\", a polícia realizou a fiscalização de rotina da bagagem e encontrou objeto não permitido em voos . \"O objeto foi retirado da bagagem, e a passageira foi autorizada pelo comandante a seguir viagem\", finalizou a Polícia Federal, em nota. Leia a nota enviada pela assessoria de imprensa da deputada na íntegra: \"A Deputada Federal Alê Silva estava na manhã de hoje, 25 de maio, no Aeroporto de Confins, em Belo Horizonte, para voar com destino a Brasília. No detector de metais, uma atendente que trabalha em uma empresa que presta serviço ao aeroporto disse que iria abrir a mala da deputada. A atendente disse que isso era uma “revista aleatória”. A Deputada abriu a mala, sendo a atendente colocar a mão sobre a mesma e disse: “Mala de miliciana e genocida tem que ser revistada com cuidado”. A deputada após esses dizeres se calou, fechou a mala e foi em direção ao portão de embarque. Após o embarque, a deputada realizou uma ligação para o seu chefe de gabinete, para que entrasse em contato, como de fato tentou, com a Delegacia da Polícia Federal do Aeroporto de Confins para dizer do ocorrido e também para falar que estava tudo bem com ela e que já estava dentro da aeronave, mas que não deixaria a atendente revistar a sua mala sem a presença de policiais. Porém, apesar das tentativas, a PF não atendeu ao telefone. Neste meio tempo, dois policiais federais adentraram na aeronave e com muita truculência fizeram a deputada descer do avião e levar a mala até o local de revista. Depois de revistada, foi encontrada uma tesoura cor de rosa infantil. No momento a Deputada achou que o artefato fosse de sua filha, mas depois de indagada a adolescente, essa disse que não, sendo que a Deputada então desconhece como que a tesoura foi parar lá. Tendo em vista dos fatos, já estão sendo providenciadas as medidas cabíveis junto a ANAC (Agencia Nacional de Aviação Civil) que tem responsabilidade objetiva e solidária em relação à funcionária da empresa terceirizada. Ademais, a notificação oficial junto à empresa será também realizada sobre o fato ocorrido. Ainda, uma ação será ajuizada na corregedoria da Polícia Federal, tendo em vista que foi tentado contato via telefone no aeroporto com a negativa de atendimento e resposta. Destaca-se também o modo de abordagem, que foi mediante truculência e abuso de poder, por parte dos policiais ao constranger a deputada.\""
## [2] "A Polícia Civil do Rio Grande do Sul confirmou, nesta quinta-feira (3), que a ex-deputada federal Manuela D'Ávila (PCdoB) registrou boletim de ocorrência relatando ameaças contra si e sua filha, de cinco anos . Segundo a chefe de polícia do RS, delegada Nadine Anflor, o caso é investigado pela Delegacia de Repressão aos Crimes Informáticos (DRCI), em Porto Alegre. O G1 tentou contato com Manuela D'Ávila, mas não obteve retorno. O titular da DRCI, André Anicet, confirmou ao G1 que é investigado o crime de ameaça contra a ex-deputada. \"Apuração em andamento\", disse. Nas redes sociais, Manuela conta que o pai de um colega de sua filha na escola tirou fotos da menina e divulgou as imagens nas internet ( veja publicação abaixo ) . O último cargo público ocupado por Manuela D'Ávila foi o posto de deputada estadual, na Assembleia Legislativa do Rio Grande do Sul, entre 2015 e 2018. Antes, entre 2007 e 2014, ela foi deputada federal. Em 2004, foi eleita vereadora em Porto Alegre. A ex-deputada disputou a Vice-Presidência da República em 2018, na chapa de Fernando Haddad (PT) , derrotada no segundo turno para Jair Bolsonaro. Nos anos de 2008, 2016 e 2020 , Manuela concorreu à Prefeitura de Porto Alegre, não conseguindo se eleger nas três ocasiões. No último pleito, a Justiça Eleitoral determiou a remoção de postagens com informações falsas e ofensas contra a candidata ."
## [3] "A vereadora de Contagem, na Região Metropolitana de Belo Horizonte, Moara Sabóia (PT), procurou a polícia depois de ser alvo de ataques racistas durante uma sessão virtual da câmara nesta semana. Ela recebeu as ofensas durante uma sessão que discutia a reabertura de academias e templos religiosos na cidade . Além do racismo, ela também foi alvo de machismo e ameaças de violência . Foi dela o único voto contrário ao projeto de lei que classificou academias e igrejas como serviços essenciais na cidade. Enquanto a parlamentar discursava, um homem a atacou, chamando-a de \"nariz amassado”. “A nossa presença incomoda muito porque é uma presença nova, é uma presença estranha nesse espaço. Nós queremos resolver sempre as coisas na política. Quando fugir disso, a gente vai sempre tomar as providências que forem cabíveis”, disse a vereadora."
##
## Top 5 trigrama :
## # A tibble: 5 × 2
## trigram n
## <chr> <int>
## 1 deputada isa penna 34
## 2 isa penna psol 19
## 3 minas gerais almg 17
## 4 deputada mônica seixas 15
## 5 deputado wellington moura 14
## Gráfico salvo em: trigramas_mulheres.png
bigramas_homens <- gerar_ngramas(homens_dados, "homens vítimas", tipo = "bigrama", cor = "navy", arquivo_saida = "bigramas_homens.png")
## [ homens vítimas ] Total após filtrar por relevância: 46
## Exemplo de texto combinado:
## [1] "Polícia Civil abre investigação sobre vídeo com ameaça a Lula Governador João Doria diz ter determinado imediata abertura de investigação. Ele recebeu uma carta denunciando o caso e procurou a presidente nacional do PT, deputada federal Gleisi Hoffmann. Vídeo com ameaças foi feito por um homem e divulgado nas redes sociais."
## [2] "Comitiva de Haddad é atacada com ovos em Cordeirópolis; VÍDEO Câmera de segurança flagrou momento que pessoa não identificada atirou dois ovos na direção do candidato ao governo de São Paulo."
## [3] "PT aciona Conselho de Ética contra deputado que ameaçou Lula em vídeo com arma dentro da Alesp Em vídeo publicado nas redes sociais, Coronel Telhada (PP) comenta fala em que ex-presidente orienta militância sindical a pressionar parlamentares para que votem a favor de propostas que interessam ao setor."
##
## Top 5 bigrama :
## # A tibble: 5 × 2
## bigram n
## <chr> <int>
## 1 câmara municipal 5
## 2 vídeo mostra 5
## 3 ex vereador 4
## 4 maciel santos 4
## 5 polícia civil 4
## Gráfico salvo em: bigramas_homens.png
trigramas_homens <- gerar_ngramas(homens_dados, "homens vítimas", tipo = "trigrama", cor = "cornflowerblue", arquivo_saida = "trigramas_homens.png")
## [ homens vítimas ] Total após filtrar por relevância: 46
## Exemplo de conteúdo:
## [1] "O governador de São Paulo, João Doria (PSDB), determinou que a polícia investigue um homem responsável por divulgar um vídeo fazendo ameaças de morte ao ex-presidente Lula. Ele também telefonou para a presidente nacional do PT, a deputada federal Gleisi Hoffmann, para falar sobre o caso, após receber uma carta denunciando o vídeo. Em nota à imprensa, Doria disse que assistiu ao vídeo e que determinou a abertura imediata de uma investigação para apurar a procedência das ameaças. \"O governador determinou a imediata investigação policial junto ao autor do vídeo que atenta contra a segurança e a integridade física do ex-presidente da República, Luiz Inácio Lula da Silva\", disse o Palácio dos Bandeirantes em nota. As imagens foram feitas por um homem e divulgadas em redes sociais. No vídeo, ele aparece com uma camiseta do Brasil e a bandeira do país enrolada na cintura, com uma arma na mão. Ele faz disparos e, dirigindo-se a Lula, aponta para a arma e diz que o presidente \"vai ter problema\". A assessoria de imprensa do governador ressaltou que ele \"entende que não será à base de ameaças, agressões ou tiros que o Brasil encontrará o caminho da paz, equilíbrio e respeito pela democracia e pelo contraditório\". \"A condenação da violência política é uma regra imutável da democracia\", afirmou o governador. Em nota à TV Globo, a Secretaria de Estado de Segurança Pública (SSP) afirmou que \"a Polícia Civil do estado de São Paulo instaurou inquérito policial para apurar os fatos\" e que o trabalho investigativo requer sigilo."
## [2] "A comitiva do candidato a governador de São Paulo Fernando Haddad (PT) foi atacada com ovos durante caminhada pelas ruas de Cordeirópolis (SP) . O incidente ocorreu na manhã desta quinta-feira (6), quando o candidato cumpria agenda no município. Depois de assinar uma carta de compromisso com a Associação dos Municípios de Pequeno Porte do Estado de São Paulo (Amppesp), ele seguiu em caminhada pelo Centro da cidade com apoiadores. LEIA MAIS: Uma câmera de segurança registrou o momento que um cidadão atira dois ovos na direção de Haddad. O candidato não foi atingido, mas pessoas que estavam em volta dele foram (assista o vídeo acima). Entre elas um cinegrafista de um canal de televisão, dois apoiadores de Haddad e o vereador Sérgio Balthazar, do PT, que andava próximo ao candidato. Segundo a prefeitura, o autor do ataque não foi identificado e o candidato seguiu com a caminhada pelo centro da cidade. Ainda durante agenda em Cordeirópolis , Haddad comentou sobre o cancelamento da agenda do dia anterior em Presidente Prudente , onde daria entrevista, por conta de ameaças. Ele chegou a registrar boletim de ocorrência sobre o caso. \"Como havia grupos de Whatsapp que estavam fomentando atos de violência, em função de uma única atividade, ir até Prudente, colocando minha equipe em risco, militância em risco, no 7 de setembro, nós avaliamos e achamos que não era o caso. Prudência não vai fazer mal a ninguém\", afirmou. Veja mais notícias no g1 Piracicaba"
## [3] "A bancada de deputados do Partido dos Trabalhadores ( PT ) na Assembleia Legislativa de São Paulo ( Alesp ) protocolou nesta quarta-feira (6) uma representação por quebra de decoro no Conselho de Ética da Casa contra o deputado estadual Coronel Telhada (PP), gravado nas dependências da Alesp com uma arma e fazendo ameaças contra o ex-presidente Lula . Em vídeo postado nas redes sociais, Telhada comenta uma fala do petista dizendo que a militância sindical precisa se organizar para pressionar deputados e senadores nas cidades em que moram para que votem a favor de propostas que interessam aos trabalhadores. “Vai lá em casa, incomodar a minha mulher, meus filhos e meus netos. Estou te esperando lá. Você e todo o seu bando”, disse Telhada, se dirigindo a Lula e exibindo uma arma dentro do estacionamento da Alesp . “A bancada estadual do PT oficializou o presidente da Assembleia Legislativa, deputado Carlão Pignatari, sobre a gravidade do fato e representou o deputado Coronel Telhada no Conselho de Ética e Decoro Parlamentar”, disse um comunicado da líder do PT na Alesp , deputada Márcia Lia. Segundo Lia, “a situação se reveste de intensa gravidade uma vez que às ameaças feitas pelo deputado alcançam as deputadas e deputados estaduais, dirigentes, militantes que compõem e atuam no Partido dos Trabalhadores lado a lado do ex-presidente Lula , em defesa da Democracia e do Estado Democrático de Direito”. Leia também: O deputado Emídio de Souza, presidente da Comissão de Direitos Humanos da Alesp , também disse nas redes sociais que \"Telhada terá que responder pela quebra de decoro\" dentro da Assembleia paulista. “O coronel Telhada terá que responder pela quebra de decoro ao ameaçar o presidente Lula . A bancada do PT acionou o Conselho de Ética. Parlamento é lugar do diálogo e não de ameaça, é lugar de debater soluções para os problemas da população, e não de incitar a violência, o armamento”, disse Emídio. O g1 procurou o deputado Telhada, que disse, por meio de mensagem de áudio, que não fez ameaças à Lula e que não anda armado nas dependências da Alesp . “Mais uma representação política do PT . A maioria dos deputados do partido nós nos relacionamos muito bem e nós sabemos que isso aí é mais uma coisa para mostrar para os eleitores deles. Porque não há o que representar, não há crime. Não há ameaça. Nenhum momento ameacei. Simplesmente disse o que faria se fosse atacado na minha residência. Quanto à arma, eu sou ex-oficial da Polícia Militar. Tenho porte de arma e não há ilegalidade alguma. Quando eu chego na Assembleia eu chego armado. Quando eu saio da Assembleia eu saio armado”, declarou. “A arma fica aqui no cofre, na minha sala. Único lugar proibido de deputado entrar armado é no plenário e em comissões, nos plenários comuns. Eu não ando armado na Alesp . Só entrando e saindo da Alesp . E como não há ilegalidade alguma, o PT quer mesmo é fazer barulho\", completou Telhada. \"Pra variar é mais uma hipocrisia do PT . Eles sempre se vitimando e se fazendo de inocentes, de coitadinhos. O ícone deles da moralidade, o ex-presidente Lula , ameaça as pessoas publicamente. Incita seus militantes a irem à casa dos deputados intimidar e incomodar os familiares, esposas e filhos e netos, e isso fica como uma coisa normal. Pro PT é normal você intimidar as pessoas, fazer terrorismo na casa das pessoas”, disse o deputado do PP. A assessoria de imprensa de Lula falou que o ex-presidente \"repudia qualquer ação de cunho violento e que um país melhor se faz com educação e com empregos, não com armas\". A fala de Lula sobre a pressão aos parlamentares foi dita em um evento da Central Única dos Trabalhadores (CUT) em São Paulo na última segunda-feira (4). No discurso, Lula , que é pré-candidato do PT à Presidência da República, orientou que os sindicalistas procurem os deputados e seus familiares na casa deles, para que sejam pressionados a votar a favor de propostas que interessam aos trabalhadores em um eventual governo petista a partir de 2023. \"Se a gente mapeasse o endereço de cada deputado e fossem 50 pessoas na casa... Não é para xingar não, é para conversar com ele, com a mulher dele, com o filho dele, incomodar a tranquilidade dele, surte muito mais efeito do que fazer a manifestação em Brasília\", disse Lula ."
##
## Top 5 trigrama :
## # A tibble: 5 × 2
## trigram n
## <chr> <int>
## 1 roberto maciel santos 9
## 2 atirou diversas vezes 7
## 3 vereador renato freitas 7
## 4 vereador sidnei toaldo 6
## 5 aline dequi palma 5
## Gráfico salvo em: trigramas_homens.png
# Exibir gráficos (opcional)
print(bigramas_mulheres$grafico)
print(trigramas_mulheres$grafico)
print(bigramas_homens$grafico)
print(trigramas_homens$grafico)
Agora, vamos aplicar a frequência de partidos por categorias (mulheres agressoras, mulheres vítimas, homens agressores, homens vítimas). Inicialmente, vamos juntar as duas bases que usamos na primeira técncia e conferir se a junção ocorreu corretamente.
# Juntar os dados
dados_geral <- rbind(homens_dados, mulheres_dados)
# Verificação:
# Verificar número de linhas e colunas após união
print(dim(dados_geral))
## [1] 198 21
# Visualizar primeiros registros
head(dados_geral)
Agora, vamos aplicar uma função que padronize e limpe nossa base de dados. Por exemplo, se em uma linha foi digitado “Homem” e outra “H”, ou foi digitado “Psol” e outra “PSOL”, será criado novas colunas padronizando isso. Também vamos padronizar os NAs e outras variáveis como “não consta na notícia”, ou “-”, ou “não se aplica”, em uma variável chamada “Não se aplica ou não encontrado”. Vamos aplicar essa função a base de dados, e verificar como ela ficou depois dessa alteração.
#Função de limpeza e padronização
limpar_dados <- function(df) {
df %>%
mutate(
# Padronizar gênero do agressor
genero_agressor_pad = case_when(
is.na(`Gênero Agressor`) | `Gênero Agressor` == "-" ~ "Não se aplica ou não encontrado",
str_detect(`Gênero Agressor`, "(?i)H") & str_detect(`Gênero Agressor`, "(?i)M") ~ "Ambos",
str_detect(`Gênero Agressor`, "(?i)H") ~ "Homem",
str_detect(`Gênero Agressor`, "(?i)M") ~ "Mulher",
TRUE ~ "Não se aplica ou não encontrado"
),
# Padronizar gênero do agredido
genero_agredido_pad = case_when(
is.na(`Gênero Agredido`) | `Gênero Agredido` == "-" ~ "Não se aplica ou não encontrado",
str_detect(`Gênero Agredido`, "(?i)H") & str_detect(`Gênero Agredido`, "(?i)M") ~ "Ambos",
str_detect(`Gênero Agredido`, "(?i)H") ~ "Homem",
str_detect(`Gênero Agredido`, "(?i)M") ~ "Mulher",
TRUE ~ "Não se aplica ou não encontrado"
),
# Padronizar partidos do agressor
partido_agressor_pad = tolower(`Partido Agressor`),
partido_agressor_pad = case_when(
is.na(partido_agressor_pad) | partido_agressor_pad %in% c("-", "não consta na notícia") ~ "não se aplica ou não encontrado",
partido_agressor_pad %in% c("progressitas") ~ "progressistas",
partido_agressor_pad %in% c("cidadania sp", "cidadania") ~ "cidadania",
partido_agressor_pad %in% c("republicanos", "republicanos ") ~ "republicanos",
partido_agressor_pad %in% c("psol/republicanos") ~ "psol e republicanos",
partido_agressor_pad %in% c("psol/") ~ "psol",
TRUE ~ partido_agressor_pad
),
# Padronizar partidos do agredido
partido_agredido_pad = tolower(`Partido Agredido`),
partido_agredido_pad = case_when(
is.na(partido_agredido_pad) | partido_agredido_pad %in% c("-", "não consta na notícia") ~ "não se aplica ou não encontrado",
partido_agredido_pad %in% c("progressitas") ~ "progressistas",
partido_agredido_pad %in% c("cidadania sp", "cidadania") ~ "cidadania",
partido_agredido_pad %in% c("republicanos", "republicanos ") ~ "republicanos",
partido_agredido_pad %in% c("psol e pcdo b", "psol e pcdob") ~ "psol e pcdob",
partido_agredido_pad %in% c("pt, pcdo b e psol") ~ "pt e pcdob e psol",
partido_agredido_pad %in% c("psol/") ~ "psol",
TRUE ~ partido_agredido_pad
),
# Uniformizar separadores
partido_agressor_pad = str_replace_all(partido_agressor_pad, ",", " e "),
partido_agredido_pad = str_replace_all(partido_agredido_pad, ",", " e ")
)
}
dados_geral <- limpar_dados(dados_geral)
# Verificação:
# Verificar se as colunas padronizadas foram criadas corretamente
table(dados_geral$genero_agressor_pad)
##
## Ambos Homem
## 5 106
## Mulher Não se aplica ou não encontrado
## 17 70
table(dados_geral$partido_agressor_pad)
##
## cidadania mdb
## 9 8
## não se aplica ou não encontrado novo
## 123 2
## patriota pdt
## 1 1
## pl podemos
## 3 2
## pp progressistas
## 2 3
## prtb psb
## 1 2
## psc psd
## 5 6
## psdb psl
## 3 4
## psol psol e republicanos
## 6 2
## pt ptb
## 1 5
## republicanos sem partido
## 7 1
## união
## 1
Agora precisamos ajustar linhas que tem mais de um partido em uma categoria, por exemplo, se houve um agressor do PSOL e um do Cidadania, e aí na cédula está escrito “Psol/Cidadania”. Temos que duplicar essas linha, mas sem correr o risco de ter combinação cruzada, caso os partidos também estejam duplicados nas duas colunas de partidos (a referente a partidos dos agressores, e a referente a partido dos agredidos). Vamos fazer uma função para isso, e vamos verificar se a expansão das linhas ocorreu corretamente.
#Função para expandir os partidos
expandir_partidos <- function(df, coluna_partido, prefixo) {
df %>%
separate_rows(!!sym(coluna_partido), sep = " e |/|,") %>%
mutate(!!sym(coluna_partido) := str_trim(!!sym(coluna_partido))) %>%
group_by(across(-!!sym(coluna_partido))) %>%
mutate(linha_id = paste0(prefixo, "_", row_number())) %>%
ungroup()
}
# Criar dados separados para análise:
dados_para_agressores <- expandir_partidos(dados_geral, "partido_agressor_pad", "agr")
dados_para_agredidos <- expandir_partidos(dados_geral, "partido_agredido_pad", "agd")
# Verificação:
# Conferir se a expansão duplicou apenas a coluna correta
head(dados_para_agressores)
table(dados_para_agressores$partido_agressor_pad)
##
## cidadania mdb
## 9 8
## não se aplica ou não encontrado novo
## 123 2
## patriota pdt
## 1 1
## pl podemos
## 3 2
## pp progressistas
## 2 3
## prtb psb
## 1 2
## psc psd
## 5 6
## psdb psl
## 3 4
## psol pt
## 8 1
## ptb republicanos
## 5 9
## sem partido união
## 1 1
table(dados_para_agressores$genero_agressor_pad)
##
## Ambos Homem
## 7 106
## Mulher Não se aplica ou não encontrado
## 17 70
Vamos fazer uma função para gerar os gráficos e tabelas, criar as bases e aplciar a função a elas.
# Função auxiliar para gerar tabela e gráfico
gerar_tabela_grafico <- function(df, coluna_partido, cor, titulo, arquivo) {
tabela <- as.data.frame(table(df[[coluna_partido]]))
colnames(tabela) <- c("Partido", "Frequencia")
tabela$Porcentagem <- prop.table(tabela$Frequencia) * 100
grafico <- ggplot(tabela, aes(x = reorder(Partido, Frequencia), y = Frequencia)) +
geom_bar(stat = "identity", fill = cor) +
geom_text(aes(label = paste0(round(Porcentagem, 1), "%")), hjust = -0.1, size = 3) +
coord_flip() +
labs(x = "Partido", y = "Frequência", title = titulo) +
theme_minimal() +
ylim(0, max(tabela$Frequencia) * 1.15)
ggsave(arquivo, plot = grafico, width = 12, height = 8, dpi = 300, bg = "white")
return(list(tabela = tabela, grafico = grafico))
}
# Filtrar e gerar outputs para os quatro casos:
# Mulheres agressoras
dados_agressoras_mulheres <- dados_para_agressores %>% filter(genero_agressor_pad %in% c("Mulher", "Ambos"))
saida_am <- gerar_tabela_grafico(dados_agressoras_mulheres, "partido_agressor_pad", "firebrick", "Partidos de mulheres (ou ambos) que cometeram violência", "grafico_agressoras_mulheres.png")
# Mulheres vítimas
dados_vitimas_mulheres <- dados_para_agredidos %>% filter(genero_agredido_pad %in% c("Mulher", "Ambos"))
saida_vm <- gerar_tabela_grafico(dados_vitimas_mulheres, "partido_agredido_pad", "salmon", "Partidos de mulheres (ou ambos) que sofreram violência", "grafico_vitimas_mulheres.png")
# Homens agressores
dados_agressores_homens <- dados_para_agressores %>% filter(genero_agressor_pad %in% c("Homem", "Ambos"))
saida_ah <- gerar_tabela_grafico(dados_agressores_homens, "partido_agressor_pad", "dodgerblue", "Partidos de homens (ou ambos) que cometeram violência", "grafico_agressores_homens.png")
# Homens vítimas
dados_vitimas_homens <- dados_para_agredidos %>% filter(genero_agredido_pad %in% c("Homem", "Ambos"))
saida_vh <- gerar_tabela_grafico(dados_vitimas_homens, "partido_agredido_pad", "steelblue", "Partidos de homens (ou ambos) que sofreram violência", "grafico_vitimas_homens.png")
# VERIFICAÇÃO DOS DADOS FINAIS:
# Ver os dados tabulados antes do gráfico
print(saida_am$tabela)
## Partido Frequencia Porcentagem
## 1 mdb 1 4.166667
## 2 não se aplica ou não encontrado 7 29.166667
## 3 novo 2 8.333333
## 4 pl 2 8.333333
## 5 progressistas 2 8.333333
## 6 psd 2 8.333333
## 7 psl 2 8.333333
## 8 psol 3 12.500000
## 9 republicanos 2 8.333333
## 10 união 1 4.166667
print(saida_vm$tabela)
## Partido Frequencia Porcentagem
## 1 cdn 1 0.6289308
## 2 cidadania 2 1.2578616
## 3 dem 3 1.8867925
## 4 mdb 2 1.2578616
## 5 não se aplica ou não encontrado 25 15.7232704
## 6 novo 2 1.2578616
## 7 partido verde 1 0.6289308
## 8 patriota 3 1.8867925
## 9 patriota (atual prd) 1 0.6289308
## 10 pcdob 7 4.4025157
## 11 pdt 4 2.5157233
## 12 pl 1 0.6289308
## 13 podemos 1 0.6289308
## 14 psd 3 1.8867925
## 15 psol 50 31.4465409
## 16 pt 38 23.8993711
## 17 ptb 3 1.8867925
## 18 pv 4 2.5157233
## 19 rede 1 0.6289308
## 20 republicanos 6 3.7735849
## 21 união 1 0.6289308
print(saida_ah$tabela)
## Partido Frequencia Porcentagem
## 1 cidadania 9 7.9646018
## 2 mdb 7 6.1946903
## 3 não se aplica ou não encontrado 50 44.2477876
## 4 patriota 1 0.8849558
## 5 pdt 1 0.8849558
## 6 pl 1 0.8849558
## 7 podemos 2 1.7699115
## 8 pp 2 1.7699115
## 9 progressistas 1 0.8849558
## 10 prtb 1 0.8849558
## 11 psb 2 1.7699115
## 12 psc 5 4.4247788
## 13 psd 4 3.5398230
## 14 psdb 3 2.6548673
## 15 psl 2 1.7699115
## 16 psol 7 6.1946903
## 17 ptb 5 4.4247788
## 18 republicanos 9 7.9646018
## 19 sem partido 1 0.8849558
print(saida_vh$tabela)
## Partido Frequencia Porcentagem
## 1 não se aplica ou não encontrado 12 24
## 2 pcdob 1 2
## 3 pl 1 2
## 4 podemos 1 2
## 5 pp 7 14
## 6 psd 1 2
## 7 psdb 3 6
## 8 psl 1 2
## 9 psol 2 4
## 10 pt 11 22
## 11 ptb 1 2
## 12 republicanos 4 8
## 13 solidariedade 3 6
## 14 união 2 4
# Visualizar gráficos manualmente (se quiser no console interativo)
print(saida_am$grafico)
print(saida_vm$grafico)
print(saida_ah$grafico)
print(saida_vh$grafico)
Por último, vamos verificar o percentual da categoria “Ambos” em cada base de dados. Esse foi um pedido dos outros integrantes do grupo. Alguns casos de violência possuem duas pessoas, uma de cada gênero, na categoria de agressores. Como dividimos a análise por gênero e posição da pessoa na violência, se tornou relevante entender o quão mesclados os gêneros estão em algumas dessas categorias.
#Verificação da categoria "Ambos" em cada uma das tabelas
#Função para verificar
calcular_freq_e_pct_ambos <- function(df, coluna_genero) {
total <- nrow(df)
freq_ambos <- df %>% filter(!!sym(coluna_genero) == "Ambos") %>% nrow()
pct_ambos <- (freq_ambos / total) * 100
tibble(
Frequencia = freq_ambos,
Total = total,
Percentual = pct_ambos
)
}
# Aplicando para as 4 bases:
freq_pct_agressoras_mulheres <- calcular_freq_e_pct_ambos(dados_agressoras_mulheres, "genero_agressor_pad")
freq_pct_vitimas_mulheres <- calcular_freq_e_pct_ambos(dados_vitimas_mulheres, "genero_agredido_pad")
freq_pct_agressores_homens <- calcular_freq_e_pct_ambos(dados_agressores_homens, "genero_agressor_pad")
freq_pct_vitimas_homens <- calcular_freq_e_pct_ambos(dados_vitimas_homens, "genero_agredido_pad")
# Mostrar resultados
freq_pct_agressoras_mulheres
freq_pct_vitimas_mulheres
freq_pct_agressores_homens
freq_pct_vitimas_homens