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)
glimpse(dados)
## Rows: 121
## Columns: 21
## $ site                           <chr> "StackOverflow", "StackOverflow", "Stac…
## $ country                        <chr> "Argentina", "Australia", "Austria", "B…
## $ PDI                            <dbl> 49, 36, 11, 80, 65, 69, 70, 39, 63, 80,…
## $ IDV                            <dbl> 46, 90, 55, 20, 75, 38, 30, 80, 23, 20,…
## $ MAS                            <dbl> 56, 61, 79, 55, 54, 49, 40, 52, 28, 66,…
## $ UAI                            <dbl> 86, 51, 70, 60, 94, 76, 85, 48, 86, 30,…
## $ usuarios                       <dbl> 2798, 12313, 2518, 2558, 4275, 10717, 1…
## $ responderam_prop               <dbl> 0.5357398, 0.6133355, 0.6310564, 0.3928…
## $ perguntaram_prop               <dbl> 0.5210865, 0.5897832, 0.5933280, 0.4757…
## $ editaram_prop                  <dbl> 0.09256612, 0.14699911, 0.14932486, 0.0…
## $ comentaram_prop                <dbl> 0.25339528, 0.33395598, 0.35027800, 0.1…
## $ GNI                            <dbl> NA, 59570, 48160, 840, 44990, 11630, 68…
## $ Internet                       <dbl> 51.0, 79.5, 79.8, 5.0, 78.0, 45.0, 51.0…
## $ EPI                            <dbl> 59.02, NA, 63.21, NA, 61.21, 49.96, NA,…
## $ geo                            <chr> "arg", "aus", "aut", "bgd", "bel", "bra…
## $ four_regions                   <chr> "americas", "asia", "europe", "asia", "…
## $ eight_regions                  <chr> "america_south", "east_asia_pacific", "…
## $ six_regions                    <chr> "america", "east_asia_pacific", "europe…
## $ Latitude                       <dbl> -34.00000, -25.00000, 47.33333, 24.0000…
## $ Longitude                      <dbl> -64.00000, 135.00000, 13.33333, 90.0000…
## $ `World bank income group 2017` <chr> "Upper middle income", "High income", "…

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).

Examinando essa relação

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.

# Agrupar por país, em seguida somando os usuários e fazendo a média da proporção
dados <- dados %>%
  group_by(country, PDI, Internet, six_regions) %>%
  summarise(
    usuarios = sum(usuarios),
    comentaram_prop = mean(comentaram_prop)
  )
## `summarise()` has grouped output by 'country', 'PDI', 'Internet'. You can
## override using the `.groups` argument.
# Gráfico de dispersão
dados %>% ggplot(aes(x=PDI, y=comentaram_prop, size=usuarios, color=Internet, label = country)) +
  geom_point(alpha = 0.8) + # Adiciona pontos ao gráfico
  scale_size_continuous(name = "Total de Usuários") + # Legenda para o tamanho dos pontos
  scale_color_viridis(name = "Acesso à Internet", option = "viridis", direction = - 1) + # Paleta de cores 
  labs(title = "Participação de países no StackExchange",
       x = "PDI (Índice de Hierarquia)",
       y = "Proporção de pessoas que comentam") + # Títulos dos eixos
  theme_minimal() 

RESPOSTA:

Abaixo foi calculado as correlações entre: PDI x Proporção de comentários, Internet x Proporção de comentários e Internet x Usuários com os métodos de Pearson (suspeita de linearidade), kendall e Spearman (suspeita de não-linearidade na relação entre as variáveis).

#Correlação PDI x Proporção de comentários

# Calculando correlação de Pearson
cor_pearson <- cor(dados$PDI, dados$comentaram_prop, method = "pearson")

# Calculando correlação de Kendall 
cor_kendall <- cor(dados$PDI, dados$comentaram_prop, method = "kendall")

# Calculando correlação de Spearman
cor_spearman <- cor(dados$PDI, dados$comentaram_prop, method = "spearman")

# Criando a tabela
tabela_cor_1 <- data.frame(
  Método = c("Pearson", "kendall", "Spearman"),
  Correlação = c(cor_pearson, cor_kendall, cor_spearman)
)

print(tabela_cor_1)
##     Método Correlação
## 1  Pearson -0.5885522
## 2  kendall -0.4435956
## 3 Spearman -0.6074562

RESPOSTA:

Nesta correlação entre PDI x Proporção de comentários podemos observar que esses coeficientes sugerem uma relação negativa moderada entre as variáveis, consistente em todas as medidas de correlação. Isso indica que, em geral, quanto maior o índice de hierarquia (PDI), menor é a proporção de pessoas que comentam em um país.

# Correlação Internet x Proporção de comentários

# Calculando correlação de Pearson
cor_pearson <- cor(dados$Internet, dados$comentaram_prop, method = "pearson", use = "complete.obs")

# Calculando correlação de Kendall 
cor_kendall <- cor(dados$Internet, dados$comentaram_prop, method = "kendall", use = "complete.obs")

# Calculando correlação de Spearman
cor_spearman <- cor(dados$Internet, dados$comentaram_prop, method = "spearman", use = "complete.obs")

# Criando a tabela
tabela_cor_2 <- data.frame(
  Método = c("Pearson","kendall", "Spearman"),
  Correlação = c(cor_pearson, cor_kendall, cor_spearman)
)

print(tabela_cor_2)
##     Método Correlação
## 1  Pearson  0.6489100
## 2  kendall  0.5107542
## 3 Spearman  0.6716953

RESPOSTA:

Nesta correlação entre Internet x Proporção de comentários podemos observar que esses coeficientes sugerem que o aumento do acesso à Internet está associado a um aumento na proporção de pessoas que comentam em questões de outros países, com a medida de Pearson indicando uma relação linear positiva mediana. Essa tendência é consistente em todas as medidas de correlação.

#Correlação Internet x Usuários

# Calculando correlação de Pearson
cor_pearson <- cor(dados$Internet, dados$usuarios, method = "pearson", use = "complete.obs")

# Calculando correlação de Kendall 
cor_kendall <- cor(dados$Internet, dados$usuarios, method = "kendall", use = "complete.obs")

# Calculando correlação de Spearman
cor_spearman <- cor(dados$Internet, dados$usuarios, method = "spearman", use = "complete.obs")

# Criando a tabela
tabela_cor_3 <- data.frame(
  Método = c("Pearson","kendall", "Spearman"),
  Correlação = c(cor_pearson, cor_kendall, cor_spearman)
)

print(tabela_cor_3)
##     Método Correlação
## 1  Pearson 0.06834963
## 2  kendall 0.20375834
## 3 Spearman 0.29283526

RESPOSTA:

Nesta correlação entre Internet x Usuários podemos observar que esses coeficientes indicam que há uma correlação muito fraca a fraca entre o número de usuários e o nível de acesso à Internet, independente do método de correlação utilizado.

Outras formas de ver

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.

# Gráfico de dispersão
ggplot(dados, aes(x = PDI, y = comentaram_prop, size = Internet , color = usuarios, label = country)) +
  geom_point(alpha = 0.8) + # Adiciona pontos ao gráfico
  scale_size_continuous(name = "Total de Usuários") + # Legenda para o tamanho dos pontos
  scale_color_gradient(name = "Acesso à Internet", low = "Gold", high = "Orange") + # Legenda de cores
  labs(title = "Participação de países no StackExchange",
       x = "PDI (Índice de Hierarquia)",
       y = "Proporção de pessoas que comentam") + # Títulos dos eixos
  theme_minimal() 
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_point()`).

RESPOSTA:

# Gráfico de dispersão
ggplot(dados, aes(x = PDI, y = comentaram_prop, size = usuarios, color = Internet, label = country)) +
  geom_point(alpha = 0.4) + # Adiciona pontos ao gráfico
  geom_text(hjust = 0, vjust = 1) + # Adiciona texto com o nome do país
  scale_size_continuous(name = "Total de Usuários") + # Legenda para o tamanho dos pontos
  scale_color_viridis(name = "Acesso à Internet", option = "mako", direction = -1) + # Paleta de cores 
  labs(title = "Participação de países no StackExchange",
       x = "PDI (Índice de Hierarquia)",
       y = "Proporção de pessoas que comentam") + # Títulos dos eixos
  theme_minimal()

RESPOSTA:

# Gráfico de dispersão
dados %>%
  ggplot(aes(x = PDI, y = comentaram_prop, size = usuarios, color = Internet, label = country)) +
  geom_point(shape = 25, alpha = 0.9) +  # Shape 21 representa círculos preenchidos
  scale_size_continuous(name = "Total de Usuários") +  # Legenda para o tamanho dos pontos
  scale_color_viridis(name = "Acesso à Internet") +  # Paleta de cores
  labs(title = "Participação de países no StackExchange",
       x = "PDI (Índice de Hierarquia)",
       y = "Proporção de pessoas que comentam") +  # Títulos dos eixos
  theme_minimal()

RESPOSTA:

# Gráfico de dispersão 
dados %>% ggplot(aes(x=PDI, y=comentaram_prop, size=usuarios, color=Internet, label = country)) +
  geom_point(alpha = 0.1) + # Adiciona pontos ao gráfico
  scale_size_continuous(name = "Total de Usuários") + # Legenda para o tamanho dos pontos
  scale_color_viridis(name = "Acesso à Internet", option = "mako", direction = -1) + # Paleta de cores 
  labs(title = "Participação de países no StackExchange",
       x = "PDI (Índice de Hierarquia)",
       y = "Proporção de pessoas que comentam") + # Títulos dos eixos,
  theme_minimal() 

RESPOSTA:

# Gráfico de linhas com pontos
ggplot(dados, aes(x = PDI, y = comentaram_prop, group = country, color = Internet, label = country)) +
  geom_line(alpha = 0.6) + # Adiciona linhas ao gráfico
  geom_point(aes(size = usuarios), alpha = 0.9) + # Adiciona pontos ao gráfico
  geom_text_repel(size = 3, max.overlaps = 10) + # Adiciona rótulos com repel para evitar sobreposição
  scale_size_continuous(name = "Total de Usuários") + # Legenda para o tamanho dos pontos
  scale_color_viridis(name = "Acesso à Internet", option = "mako", direction = -1) + # Paleta de cores
  labs(title = "Participação de países no StackExchange",
       x = "PDI (Índice de Hierarquia)",
       y = "Proporção de pessoas que comentam") + # Títulos dos eixos
  theme_minimal() 
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?
## Warning: ggrepel: 8 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps

RESPOSTA:

Bônus

Inclua o continente dos países (six_regions) na visualização.

# Gráfico de dispersão com os dados dos continentes dos países
dados %>% filter(!is.na(six_regions)) %>% 
    ggplot(aes(x = PDI, y = comentaram_prop, size = usuarios, color = Internet, label = country)) +
    geom_point(alpha = 0.8) + # Adiciona pontos ao gráfico
    scale_size_continuous(name = "Total de Usuários") + # Legenda para o tamanho dos pontos
    scale_color_viridis(name = "Acesso à Internet", option = "viridis", direction = - 1) + # Paleta de cores 
    facet_wrap(~six_regions) +
    labs(title = "Participação de países no StackExchange",
       x = "PDI (Índice de Hierarquia)",
       y = "Proporção de pessoas que comentam") + # Títulos dos eixos
    theme_minimal()

RESPOSTA: