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)
## Observations: 121
## Variables: 21
## $ site                           <chr> "StackOverflow", "StackOverflow", "Sta…
## $ country                        <chr> "Argentina", "Australia", "Austria", "…
## $ 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, …
## $ responderam_prop               <dbl> 0.5357398, 0.6133355, 0.6310564, 0.392…
## $ perguntaram_prop               <dbl> 0.5210865, 0.5897832, 0.5933280, 0.475…
## $ editaram_prop                  <dbl> 0.09256612, 0.14699911, 0.14932486, 0.…
## $ comentaram_prop                <dbl> 0.25339528, 0.33395598, 0.35027800, 0.…
## $ GNI                            <dbl> NA, 59570, 48160, 840, 44990, 11630, 6…
## $ Internet                       <dbl> 51.0, 79.5, 79.8, 5.0, 78.0, 45.0, 51.…
## $ EPI                            <dbl> 59.02, NA, 63.21, NA, 61.21, 49.96, NA…
## $ geo                            <chr> "arg", "aus", "aut", "bgd", "bel", "br…
## $ four_regions                   <chr> "americas", "asia", "europe", "asia", …
## $ eight_regions                  <chr> "america_south", "east_asia_pacific", …
## $ six_regions                    <chr> "america", "east_asia_pacific", "europ…
## $ Latitude                       <dbl> -34.00000, -25.00000, 47.33333, 24.000…
## $ Longitude                      <dbl> -64.00000, 135.00000, 13.33333, 90.000…
## $ `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 %>%
    select(comentaram_prop,
           PDI, Internet, usuarios) %>%
    ggpairs(progress = FALSE, 
            upper = list(continuous = wrap("cor", method = "kendall", 
                                           size = 8, color="black")))
## Warning in (function (data, mapping, alignPercent = 0.6, method = "pearson", :
## Removed 3 rows containing missing values
## Warning in (function (data, mapping, alignPercent = 0.6, method = "pearson", :
## Removed 3 rows containing missing values
## Warning: Removed 3 rows containing missing values (geom_point).

## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing non-finite values (stat_density).
## Warning in (function (data, mapping, alignPercent = 0.6, method = "pearson", :
## Removed 3 rows containing missing values
## Warning: Removed 3 rows containing missing values (geom_point).

No intuito de avaliar a a existência de alguma relação entre as múltiplas variáveis numéricas em questão empregamos a matriz de correlação do pacote GGally. A matriz de correlação nos fornece visualizações tanto em termos de histograma, dispersão e cálculo de métrica de correlação (nesse caso, Kendall) para uma perspectiva mais abrangete de como as variáveis se relacionam. Além disso, esta visualização pode ser aplicada a um número arbitrário de variáveis.

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.

library(corrplot)
## corrplot 0.84 loaded
dados %>%
    select(comentaram_prop,
           PDI, Internet, usuarios) %>%
    na.exclude() %>%
    cor(method= "kendall") -> M

corrplot(M, method = "circle", order = "hclust")

Apesar de representar todas as variáveis, esta visualização só provê uma representação do valor da métrica de correlação.

Este heatmap provê os valores de correlação na forma de um heatmap. Além da correlação é representado a clusteriação hierárquica. A visualização não provê explicação da escala de cores. Não existe opção para manipular o texto nos axis que é cortado no eixo x.

dados %>%
    select(comentaram_prop, PDI,
           Internet, usuarios) %>%
    graphics::pairs()

A visualização pairs do pacote graphics equivale a uma matriz de gráficos de dispersão. Apesar de ser o gráfico padrão para avaliar tendência correlação não oferece cálculo de

 dados %>%
     select(comentaram_prop, PDI,
            Internet, usuarios) %>%
     na.exclude() %>%
     correlate(method = "kendall")  %>%
     network_plot(min_cor = 0, colours = c("red", 
    "white", "blue")) 
## 
## Correlation method: 'kendall'
## Missing treated using: 'pairwise.complete.obs'

Para valores mais baixos de correlação, abaixo de 0.6, o gráfico de correlation network fica difícil de ler porque as cores ficam apagadas. Fica aparente no gráfico que a variável usuários é a menos correlata com o resto. A curvatura não

dados %>%
    na.exclude %>%
    mutate(Internet = cut(Internet, breaks=c(25, 50, 75, 100)),
           Internet = as.factor(Internet)) %>%
    na.exclude %>%
    ggplot(aes(comentaram_prop, PDI, size=usuarios, color = Internet)) +
    geom_point()

Nesta visualização fica difícil ver alguma tendência, há muita informação.

library(ggcorrplot)

dados %>%
    select(comentaram_prop,
           PDI, Internet, usuarios) %>%
    na.exclude() %>%
    cor(method= "kendall") %>%
  ggcorrplot(hc.order = TRUE,type = "lower", 
             lab = TRUE, 
             lab_size = 3, 
             method="circle", 
              colors = c("tomato2", "white", "springgreen3"), 
             ggtheme=theme_bw)

A diminuição na escala dos números dificulta a leitura, esta visualização só provê uma representação do valor da métrica de correlação

Bônus

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

dados %>%
    mutate(six_regions = as.factor(six_regions)) %>%
    ggpairs(progress = FALSE,
            mapping = aes(color = six_regions),
            columns = c("comentaram_prop","PDI", "Internet", "usuarios"),
            upper = list(continuous = wrap("cor", method = "kendall")))
## Warning in (function (data, mapping, alignPercent = 0.6, method = "pearson", :
## Removed 3 rows containing missing values
## Warning in (function (data, mapping, alignPercent = 0.6, method = "pearson", :
## Removed 6 rows containing missing values
## Warning in (function (data, mapping, alignPercent = 0.6, method = "pearson", :
## Removed 3 rows containing missing values
## Warning in (function (data, mapping, alignPercent = 0.6, method = "pearson", :
## Removed 6 rows containing missing values
## Warning in (function (data, mapping, alignPercent = 0.6, method = "pearson", :
## Removed 3 rows containing missing values
## Warning: Removed 3 rows containing missing values (geom_point).

## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing non-finite values (stat_density).
## Warning in (function (data, mapping, alignPercent = 0.6, method = "pearson", :
## Removed 6 rows containing missing values
## Warning: Removed 3 rows containing missing values (geom_point).