Usaremos os dados extraídos do twitter dos perfis dos congressistas brasileiros.
library(tidyverse)
## ── Attaching packages ────────────────────────────────────────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.0 ✓ purrr 0.3.3
## ✓ tibble 2.1.3 ✓ dplyr 0.8.5
## ✓ tidyr 1.0.2 ✓ stringr 1.4.0
## ✓ readr 1.3.1 ✓ forcats 0.5.0
## ── Conflicts ───────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(ggbeeswarm)
library(here)
## here() starts at /cloud/project
cong = read_csv("../data/atividade-por-perfil-20190322.csv")
## Parsed with column specification:
## cols(
## id_parlamentar = col_double(),
## casa = col_character(),
## nome_eleitoral = col_character(),
## partido = col_character(),
## UF = col_character(),
## twitter = col_character(),
## seguidores = col_double(),
## segue = col_double(),
## n_proprio = col_double(),
## n_retweet = col_double(),
## engaj_total = col_double(),
## engaj_total_proprio = col_double(),
## engaj_total_retweet = col_double(),
## engaj_mediano = col_double(),
## engaj_mediano_proprio = col_double(),
## engaj_mediano_retweet = col_double(),
## engaj_max = col_double(),
## engaj_max_proprio = col_double(),
## engaj_max_retweet = col_double()
## )
cong = cong #%>%
#filter(!is.na(twitter) & !is.na(seguidores) & seguidores > 0) #FILTRANDO OS CONGRESSISTAS QUE NAO POSSUEM TWITTER OU QUE NAO FORAM ENCONTRADOS
perfis = read_csv("../data/perfis-20190322.csv")
## Parsed with column specification:
## cols(
## id_parlamentar = col_double(),
## casa = col_character(),
## nome_eleitoral = col_character(),
## partido = col_character(),
## UF = col_character(),
## `tem twitter?` = col_character(),
## twitter = col_character(),
## `twitter2 (se houver)` = col_character(),
## `facebook (não conferido)` = col_character(),
## nome_civil = col_character(),
## fazendo = col_character()
## )
glimpse(cong)
## Observations: 608
## Variables: 19
## $ id_parlamentar <dbl> 204554, 204521, 204379, 204560, 204528, 121948,…
## $ casa <chr> "câmara", "câmara", "câmara", "câmara", "câmara…
## $ nome_eleitoral <chr> "ABÍLIO SANTANA", "ABOU ANNI", "ACÁCIO FAVACHO"…
## $ partido <chr> "PR", "PSL", "PROS", "PSDB", "NOVO", "PP", "PSD…
## $ UF <chr> "BA", "SP", "AP", "BA", "SP", "GO", "MG", "BA",…
## $ twitter <chr> "AbilioSantana_", "abouannipv", "FavachoAcacio"…
## $ seguidores <dbl> NA, NA, NA, NA, 4652, NA, NA, NA, NA, NA, NA, N…
## $ segue <dbl> NA, NA, NA, NA, 315, NA, NA, NA, NA, NA, NA, NA…
## $ n_proprio <dbl> 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, NA, 49, 21…
## $ n_retweet <dbl> 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, NA, 1, 30, …
## $ engaj_total <dbl> 0, 0, 0, 0, 7090, 0, 0, 0, 0, 0, 0, 0, NA, 4286…
## $ engaj_total_proprio <dbl> 0, 0, 0, 0, 6701, 0, 0, 0, 0, 0, 0, 0, NA, 284,…
## $ engaj_total_retweet <dbl> 0, 0, 0, 0, 389, 0, 0, 0, 0, 0, 0, 0, NA, 4002,…
## $ engaj_mediano <dbl> 0.0, 0.0, 0.0, 0.0, 26.5, 0.0, 0.0, 0.0, 0.0, 0…
## $ engaj_mediano_proprio <dbl> 0.0, 0.0, 0.0, 0.0, 22.5, 0.0, 0.0, 0.0, 0.0, 0…
## $ engaj_mediano_retweet <dbl> 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.…
## $ engaj_max <dbl> 0, 0, 0, 0, 1031, 0, 0, 0, 0, 0, 0, 0, NA, 4002…
## $ engaj_max_proprio <dbl> 0, 0, 0, 0, 1031, 0, 0, 0, 0, 0, 0, 0, NA, 38, …
## $ engaj_max_retweet <dbl> 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, NA, 4002, …
cong %>%
count(casa)
71 senadores e 528 deputados.
cong %>%
select(nome_eleitoral, partido, twitter) %>%
mutate(tem_twitter = !is.na(twitter)) %>%
summarise(com_twitter = sum(tem_twitter),
sem_twitter = n() - com_twitter)
cong %>%
summarise(com_twitter = sum(!is.na(twitter)) /n() * 100)
90.29% dos políticos possuem twitter.
cong %>%
count(UF, sort = "T")
Quantidade de senadores e deputados por estado.
cong %>%
group_by(UF) %>%
mutate(ativo = !is.na(twitter)) %>%
summarise(com_twitter = sum(ativo) / n(),
bancada = n()) %>%
#mutate(regiao = if_else( UF %in% c("PB", "AL", "SE", "BA", "PI", "PE", "RN", "MA", "CE"), "Nordeste", "Outros" )) %>%
ggplot(mapping = aes(x = reorder(UF, com_twitter),
y = com_twitter,
#size = bancada,
#color = regiao
)) +
geom_point(alpha = .8) +
coord_flip() +
labs(x = "Estados", y = "Proporção ativa no twitter")
#+ scale_color_manual(values = c("brown", "gray70"))
Gráfico que mostra a quantidade de senadores e deputados que possuem twitter por estado.
#cong = cong %>%
# filter(!is.na(twitter) & !is.na(seguidores)) #Filtrar os congressistas que não possuem twitter.
Algo interessante a reparar é a atividade dos parlamentares. A atividade aumenta de acordo com a popularidade de cada um no Twitter?
cong %>%
filter(!is.na(twitter) &
!is.na(engaj_total_proprio) &
!is.na(seguidores) &
engaj_total_proprio > 0) %>%
ggplot(mapping = aes(x = seguidores, y = engaj_total_proprio)) +
geom_point(size = .6,
color = "red") +
scale_x_log10() +
scale_y_log10() +
labs(x = "Quantidade de seguidores",
y = "Engajamento total próprio",
title = "Engajamento total por número de seguidores")
Mais sobre a relação:
cong %>%
filter(!is.na(seguidores) & !is.na(engaj_total_proprio) & engaj_total_proprio > 0 & seguidores > 0) %>%
summarise(coef = cor(log10(seguidores), log10(engaj_total_proprio), method = "pearson"))
Nota-se que há uma relação positiva entre seguidores e o engajamento de cada congressista, um pouco acima da média, ou seja, quanto mais seguidores um congressista tem, mais engajamento próprio é notado.
Quem é o congressista com maior engajamento total próprio no twitter?
cong %>%
summarise(`Maior engajamento total com tweets próprios` = max(engaj_total_proprio, nome_eleitoral))
Quem é o congressista com maior engajamento em retweet?
cong %>%
summarise(`Maior engajamento total em retweets` = max(engaj_total_retweet, nome_eleitoral))
Qual será a média de uso do Twitter por partido? Utilizando como critério a média de engajamento por partido.
media_engaj_partido = cong %>%
filter(!is.na(twitter) & !is.na(seguidores)) %>%
group_by(partido) %>%
mutate(media = mean(engaj_total))
media_engaj_partido %>%
group_by(partido) %>%
ggplot(aes(x = media, y = partido, color = partido)) +
geom_point() +
labs(y = "Partido",
x = "Média de engajamento",
title = "Média de engajamento por partido") +
scale_x_log10()
mediana_engajamento =
cong %>%
filter(engaj_max_proprio > 0 & !is.null(engaj_max_proprio)) %>%
group_by(partido) %>%
summarise(mediana = median(engaj_total_proprio))
cong %>%
filter(engaj_max_proprio > 0 & !is.null(engaj_max_proprio)) %>%
ggplot(aes(x = partido, y = engaj_total_proprio)) +
geom_quasirandom(alpha = .4) +
geom_point(data = mediana_engajamento,
aes(x = partido, y = mediana),
color = "red",
size = 0.6) +
coord_flip() +
labs(y = "Engajamento total próprio", x = "Partido", title = "Engajamento dos congressistas por partido")
Assim como mostra o engajamento total médio, a mediana do partido PSOL também é a mais alta.
seguidoresPartido = cong %>%
filter(!is.na(twitter) & !is.na(seguidores)) %>%
group_by(partido) %>%
summarise(soma = sum(seguidores))
seguidoresPartido %>%
ggplot(aes(x = soma, y = partido)) +
geom_col()
seguidoresPartido %>%
arrange(desc(soma))
O partido PODE(Podemos) possui a maior quantidade de seguidores dentre todos os outros partidos.
cong = cong %>%
mutate(ativo = !is.na(twitter) & n_proprio + n_retweet >= 10)
#CRIANDO UMA NOVA COLUNA DE ATIVO OU NÃO
cong %>%
group_by(UF) %>%
filter(ativo) %>%
ggplot(aes(x = UF, y = engaj_max,
color = UF)) +
geom_point(orientation = "y") +
geom_line() +
labs(x = "Estados",
y = "Engajamento máximo (retweet + like)",
title = "Engajamento máximo por UF") +
coord_flip()
## Warning: Ignoring unknown parameters: orientation
Esse gráfico mostra a atividade máxima dos congressistas por UF.
cong = cong %>%
mutate(ativo = n_proprio >= 10)
cong %>%
filter(ativo & n_retweet > 0) %>%
ggplot(aes(x = n_proprio, y = n_retweet)) +
geom_point(size = .8) +
scale_x_log10(limits = c(1, NA)) +
scale_y_log10() +
geom_abline(linetype = "dashed") +
labs(x = "Número de tweets",
y = "Número de retweets",
title = "Tweets por retweets dos congressistas")
cong %>%
group_by(partido) %>%
summarise(influenciadores = sum(engaj_mediano > 100)/n() * 100) %>%
arrange(-influenciadores)
Exemplo de dado relativo. 50% dos congressistas do PSOL são influenciadores, tendo engajamento mediano maior que 100.