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.

dados %>%
  ggplot(aes(x = PDI, y = comentaram_prop, colour = Internet, size = usuarios)) +
  geom_point(alpha = 0.5) +
  scale_colour_distiller(palette = "Spectral", direction = 1) +
  labs(
    title = "Distribuição dos Comentários em Função do PDI",
    x = "Índice de Desenvolvimento dos Municípios (PDI)",
    y = "Proporção de Comentários",
    colour = "Internet (%)",
    size = "Usuários Totais"
  ) +
  theme_light()

Nota-se uma tendência de que países com níveis mais elevados de acesso à internet apresentem também uma maior proporção de usuários que comentam. Essa relação foi confirmada estatisticamente por meio do cálculo das correlações de Pearson e Spearman, ambas indicando uma associação positiva entre as duas variáveis.

corr_pearson <- cor(
  x = dados$Internet,
  y = dados$comentaram_prop,
  method = "pearson",
  use = "complete.obs"
)

corr_spearman <- cor(
  x = dados$Internet,
  y = dados$comentaram_prop,
  method = "spearman",
  use = "complete.obs"
)

tabela_correlacoes <- tibble::tibble(
  Metodo = c("Pearson", "Spearman"),
  Coeficiente = c(corr_pearson, corr_spearman)
)

tabela_correlacoes
## # A tibble: 2 × 2
##   Metodo   Coeficiente
##   <chr>          <dbl>
## 1 Pearson        0.625
## 2 Spearman       0.629

Observa-se ainda uma relação inversa de moderada intensidade entre o Índice de Desenvolvimento (PDI) e a proporção de usuários que realizam comentários. Em termos práticos, países com maiores níveis de desenvolvimento tendem a apresentar, proporcionalmente, menos usuários engajados em comentários.

pdi_corr_linear <- cor(
  dados$PDI,
  dados$comentaram_prop,
  method = "pearson",
  use = "complete.obs"
)

pdi_corr_rank <- cor(
  dados$PDI,
  dados$comentaram_prop,
  method = "spearman",
  use = "complete.obs"
)

resumo_correlacao_pdi <- tibble::tibble(
  Tipo = c("Pearson", "Spearman"),
  Coeficiente = c(pdi_corr_linear, pdi_corr_rank)
)

resumo_correlacao_pdi
## # A tibble: 2 × 2
##   Tipo     Coeficiente
##   <chr>          <dbl>
## 1 Pearson       -0.599
## 2 Spearman      -0.608

Por fim, nota-se a presença de países que, apesar de concentrarem um número elevado de usuários, apresentam níveis relativamente baixos de acesso à internet entre a população. Essa discrepância sugere desigualdades no acesso digital mesmo em contextos com ampla base de usuários.

corr_linear_internet_usuarios <- cor(
  x = dados$Internet,
  y = dados$usuarios,
  method = "pearson",
  use = "complete.obs"
)

corr_ordinal_internet_usuarios <- cor(
  x = dados$Internet,
  y = dados$usuarios,
  method = "spearman",
  use = "complete.obs"
)

tabela_corr_internet_usuarios <- tibble::tibble(
  Metodo = c("Pearson", "Spearman"),
  Valor = c(corr_linear_internet_usuarios, corr_ordinal_internet_usuarios)
)

tabela_corr_internet_usuarios
## # A tibble: 2 × 2
##   Metodo    Valor
##   <chr>     <dbl>
## 1 Pearson  0.0458
## 2 Spearman 0.260

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.

  1. A utilização de diferentes formatos geométricos, em vez da variação de tamanho, para representar o número de usuários compromete a clareza visual. As distinções entre os símbolos se tornam pouco perceptíveis, sobretudo quando os pontos estão espacialmente próximos.
dados %>%
  ggplot(aes(x = PDI, y = comentaram_prop, colour = Internet, shape = usuarios)) +
  geom_point(alpha = 0.5, size = 4) +
  scale_colour_gradient(low = "#a6cee3", high = "#08306b") +
  scale_shape_binned() +
  labs(
    title = "Comentário de Usuários em Relação ao Desenvolvimento",
    x = "PDI (Índice de Desenvolvimento)",
    y = "Proporção de Comentários",
    colour = "Acesso à Internet (%)",
    shape = "Intervalo de Usuários"
  ) +
  theme_bw()

  1. Ao atribuir o tamanho dos pontos à porcentagem de acesso à internet e a coloração à quantidade de usuários, o gráfico perde expressividade. Isso ocorre porque a variável de usuários apresenta uma concentração baixa de valores elevados, enquanto a variação no tamanho com base no acesso à internet é pouco acentuada.
dados %>%
  ggplot(aes(x = PDI, y = comentaram_prop, colour = usuarios, size = Internet)) +
  geom_point(alpha = 0.5) +
  scale_colour_gradient(low = "#fee8c8", high = "#e34a33") +
  labs(
    title = "Distribuição dos Comentários em Função do PDI",
    x = "Índice de Desenvolvimento (PDI)",
    y = "Proporção de Comentários",
    colour = "Usuários (total)",
    size = "Internet (%)"
  ) +
  theme_light()
## Warning: Removed 3 rows containing missing values or values outside the scale range
## (`geom_point()`).

  1. Esta visualização apresenta limitações por considerar apenas o PDI e a proporção de comentários. A ausência das variáveis relacionadas ao número de usuários e ao acesso à internet reduz a riqueza informacional do gráfico e dificulta uma interpretação mais abrangente do fenômeno.
dados %>%
  ggplot(aes(x = PDI, y = comentaram_prop)) +
  geom_point(alpha = 0.5) +
  labs(
    title = "Distribuição dos Comentários em Relação ao Desenvolvimento",
    x = "PDI (Índice de Desenvolvimento)",
    y = "Frequência Relativa de Comentários"
  ) +
  theme_light()

  1. O uso de opacidade total (sem transparência) prejudica a visualização de pontos sobrepostos. Isso pode levar à ocultação de registros, especialmente quando um ponto de maior dimensão se sobrepõe a outro de menor tamanho, inviabilizando sua distinção.
dados %>%
  ggplot(aes(x = PDI, y = comentaram_prop, colour = Internet, size = usuarios)) +
  geom_point(alpha = 1) +
  scale_colour_gradient(low = "#d9f0d3", high = "#00441b") +
  labs(
    title = "Proporção de Comentários e Indicadores de Desenvolvimento",
    x = "PDI (Índice de Desenvolvimento)",
    y = "Participação em Comentários (%)",
    colour = "Percentual de Internet",
    size = "Número de Usuários"
  ) +
  theme_classic()

  1. Apesar de incorporar a variável de acesso à internet, o gráfico desconsidera o número de usuários, o que compromete a completude da análise. A ausência dessa dimensão pode resultar em interpretações parciais ou enviesadas dos dados apresentados.
dados %>%
  ggplot(aes(x = PDI, y = comentaram_prop, colour = Internet)) +
  scale_colour_gradient(low = "#fde0dd", high = "#c51b8a") +
  geom_point() +
  labs(
    title = "Comentários em Função do Nível de Desenvolvimento",
    x = "Índice de Desenvolvimento (PDI)",
    y = "Proporção de Comentários",
    colour = "Internet (%)"
  ) +
  theme_bw()

Bônus

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

dados %>%
  filter(!is.na(six_regions)) %>%
  ggplot(aes(x = PDI, y = comentaram_prop, colour = Internet, size = usuarios)) +
  geom_point(alpha = 0.5) +
  facet_wrap(~six_regions) +
  scale_colour_gradient(low = "#deebf7", high = "#08306b") +
  labs(
    title = "Distribuição Regional da Proporção de Comentários por Nível de Desenvolvimento",
    x = "PDI (Índice de Desenvolvimento)",
    y = "Participação em Comentários (%)",
    colour = "Cobertura de Internet",
    size = "Total de Usuários"
  ) +
  theme_classic()