dados <- read_csv(
here::here("data/participation-per-country.csv"),
col_types = cols(
.default = col_double(),
site = col_character(),
country = col_character(),
geo = col_character(),
four_regions = col_character(),
eight_regions = col_character(),
six_regions = col_character(),
`World bank income group 2017` = col_character()
)
) %>%
filter(usuarios > 200)
Estamos interessados na relação entre quanto as pessoas de diferentes
países comentam em questões dos outros. A proporção das pessoas do país
que comentou nas questões de outros está medido na variável
comentaram_prop.
Considerando essa variável, queremos examinar a relação entre ela e o
quão hierárquicas são as relações em um país (PDI).
Queremos também levar em conta o quanto as pessoas daquele país têm
acesso à Internet (Internet) e qual o tamanho da base de
dados que detectamos daquele país (usuarios).
dados <-
dados %>% select(
cprop = comentaram_prop,
pdi = PDI,
internet = Internet,
nuser = usuarios,
region = six_regions
)
dados <- dados %>% filter(if_all(everything(), \(x) ! is.na(x)))
Faça uma visualização que usa os princípios de eficácia no projeto de visualizações para facilitar as comparações que você acha que são as mais importantes para entendermos esse contexto.
dados %>%
ggplot(aes(
x = pdi,
y = cprop,
color = internet,
shape = nuser
)) +
geom_point(size = 2.5) +
geom_abline(slope = 0.006, intercept = 0.05, linetype = "dotted") +
geom_abline(slope = 0.006, intercept = -0.2, linetype = "dashed", linewidth = .25) +
scale_color_stepsn(
colours = turbo(8, direction = -1),
breaks = c(0, 25, 50, 75, 100),
limits = c(0, 100),
labels = scales::number_format(suffix = "%")
) +
scale_shape_binned(breaks = c(0, 2500, 5000, 7500, 25000), solid = F) +
scale_y_continuous(labels = scales::percent, breaks = seq(0, 1, .05)) +
labs(color = "% pop. com\ninternet",
shape = "# usuários",
x = "PDI",
y = "% de usuários com comentários",
title = "Comentários em posts do StackOverflow e hierarquia dos países")
É possível ver pelo gráfico acima que existe uma certa correlação linear entre PDI e a % de comentários, países com PDI mais altos tendem a ter menos comentários. Calculando a correlação de Pearson, temos um valor de -0.65, ou seja, uma correlação moderada.
É possível vermos ainda uma correlação positiva entre o acesso a internet e a % de comentários, países com mais acesso a internet tendem a ter mais comentários. As linhas no plot, separam-no em três regiões e é possível ver que os grupos de países nessas regiões são semelhantes na faixa de acesso à internet. Com o grupo mais a esquerda concentrando países com alto acesso a internet e as maiores recorrências de comentários, enquanto o mais a direita reúne os países com menor acesso e menor comentários. Correlação de Pearson: 0.62.
Quanto ao número de usuários este parece ter pouca correlação, tendo em vista que se apresenta disperso em todas as regiões do gráfico, o que é comprovado pelo valor da correlação de Pearson: 0.14. A correlação também é baixa nos métodos não lineares: Spearman (0.29) e Kendall (0.2). Sendo assim, o plot a seguir remove essa dimensão do plot, uma vez que ela não tem tanta influência na relação e pode prejudicar a visualização.
dados %>%
ggplot(aes(
x = pdi,
y = cprop,
color = internet
)) +
geom_point(size = 2.5) +
geom_abline(slope = 0.006, intercept = 0.05, linetype = "dotted") +
geom_abline(slope = 0.006, intercept = -0.2, linetype = "dashed", linewidth = .25) +
scale_color_stepsn(
colours = turbo(8, direction = -1),
breaks = c(0, 25, 50, 75, 100),
limits = c(0, 100),
labels = scales::number_format(suffix = "%")
) +
scale_y_continuous(labels = scales::percent, breaks = seq(0, 1, .05)) +
labs(color = "% pop. com\ninternet",
shape = "# usuários",
x = "PDI",
y = "% de usuários com comentários",
title = "Comentários em posts do StackOverflow e hierarquia dos países")
Em seguida, faça 5 visualizações que usem as mesmas variáveis e também pontos, mas que sejam menos eficazes que a que você escolheu acima.
dados %>%
mutate(faixa_internet = cut(
internet,
breaks = c(0, 25, 50, 75, 100),
labels = c(
"Quase nenhum acesso à internet",
"Pouco acesso à internet",
"Acesso moderado à internet",
"Muito acesso à internet"
)
)) %>%
ggplot(aes(
x = pdi,
y = cprop,
size = nuser,
color = nuser
)) +
geom_point(alpha = .7) +
scale_color_binned(breaks = c(0, 2500, 5000, 7500, 25000), type = "viridis") +
facet_wrap( ~ faixa_internet) +
guides(size = "none") +
labs(color = "# Usuários",
x = "PDI",
y = "% de usuários com comentários",
title = "Comentários em posts do StackOverflow e hierarquia dos países",
subtitle = "Ruim, pois dificulta visualizar a relação PDI vs % Com. nos eixos") +
theme(plot.subtitle = element_text(color = "red"))
dados %>%
ggplot(aes(
x = pdi,
y = cprop,
size = internet,
color = nuser
)) +
geom_point(alpha = .7) +
scale_color_binned(breaks = c(0, 2500, 5000, 7500, 25000), type = "viridis") +
labs(color = "# Usuários",
x = "PDI",
y = "% de usuários com comentários",
size = "% pop. com\ninternet",
title = "Comentários em posts do StackOverflow e hierarquia dos países",
subtitle = "Ruim, pois o tamanho dos pontos é difícil de distinguir") +
theme(plot.subtitle = element_text(color = "red"))
dados %>%
ggplot(aes(
x = pdi,
y = cprop,
color = internet,
shape = nuser
)) +
geom_point(size = 2.5) +
geom_abline(slope = 0.006, intercept = 0.05, linetype = "dotted") +
geom_abline(slope = 0.006, intercept = -0.2, linetype = "dashed", linewidth = .25) +
scale_shape_binned(breaks = c(0, 2500, 5000, 7500, 25000), solid = F) +
scale_y_continuous(labels = scales::percent, breaks = seq(0, 1, .05)) +
labs(color = "% pop. com\ninternet",
shape = "# usuários",
x = "PDI",
y = "% de usuários com comentários",
title = "Comentários em posts do StackOverflow e hierarquia dos países",
subtitle = "Ruim, pois a escala gradiente na % de acesso a internet é ruim de distinguir") +
theme(plot.subtitle = element_text(color = "red"))
dados %>%
ggplot(aes(
x = pdi,
y = cprop,
size = internet,
shape = nuser
)) +
geom_point(alpha = .7) +
scale_shape_binned(breaks = c(0, 2500, 5000, 7500, 25000)) +
labs(shape = "# Usuários",
x = "PDI",
y = "% de usuários com comentários",
size = "% pop. com\ninternet",
title = "Comentários em posts do StackOverflow e hierarquia dos países",
subtitle = "Ruim, pois os shapes de diferente tamanhos deixa a visualização poluída") +
theme(plot.subtitle = element_text(color = "red"))
dados %>%
ggplot(aes(
x = internet,
y = cprop,
size = pdi,
color = nuser
)) +
geom_point(alpha = .7) +
scale_color_binned(breaks = c(0, 2500, 5000, 7500, 25000), type = "viridis") +
labs(color = "# Usuários",
size = "PDI",
y = "% de usuários com comentários",
x = "% pop. com internet",
title = "Comentários em posts do StackOverflow e hierarquia dos países",
subtitle = "Ruim, pois é difícil distinguir o tamanho dos pontos para o PDI") +
theme(plot.subtitle = element_text(color = "red"))
Inclua o continente dos países (six_regions) na
visualização.