Descrição

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

Q1: 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.

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.1     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
library(zoo)
## 
## Attaching package: 'zoo'
## 
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(grid)

Leitura do csv com informações sobre as geografias (países e regiões)

geographies = read_csv(here::here("/Users/joaosoaresalmeida/Documents/Pós Graduação/projetos/fpcc2-lab3-joaosoaresalmeidaa-master/data/participation-per-country.csv"))
## Rows: 157 Columns: 21
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (7): site, country, geo, four_regions, eight_regions, six_regions, Worl...
## dbl (14): PDI, IDV, MAS, UAI, usuarios, responderam_prop, perguntaram_prop, ...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

Calcular correlações

cor_pearson <- cor.test(geographies$PDI, geographies$comentaram_prop, method = "pearson")$estimate
cor_kendall <- cor.test(geographies$PDI, geographies$comentaram_prop, method = "kendall")$estimate
cor_spearman <- cor.test(geographies$PDI, geographies$comentaram_prop, method = "spearman", exact = FALSE)$estimate


cor_table <- data.frame(
  "Cor Pearson" = cor_pearson,
  "Cor Kendall" = cor_kendall,
  "Cor Spearman" = cor_spearman
)

print(cor_table)
##     Cor.Pearson Cor.Kendall Cor.Spearman
## cor  -0.5158066  -0.3924245   -0.5414306

Para as análises, observemos que:

  • Correlação de Pearson: A correlação de Pearson entre as variáveis PDI e comentaram_prop é de aproximadamente -0.52. Isso indica uma correlação negativa moderada entre essas variáveis. Ou seja, à medida que o índice PDI aumenta, espera-se uma diminuição na proporção de pessoas que comentam em questões dos outros.

  • Correlação de Kendall: A correlação de Kendall entre as variáveis PDI e comentaram_prop é de aproximadamente -0.39. Isso sugere uma relação de classificação negativa moderada entre essas variáveis. Isso significa que, considerando a ordem dos dados, conforme o índice PDI aumenta, existe uma tendência de que a proporção de pessoas que comentam em questões dos outros diminua.

  • Correlação de Spearman: A correlação de Spearman entre as variáveis PDI e comentaram_prop é de aproximadamente -0.54. Isso indica uma correlação negativa moderada entre essas variáveis, quando consideramos a ordem dos dados.

Gerar gráfico de dispersão

ggplot(data = geographies, aes(x = PDI, y = comentaram_prop, color = Internet)) +
  geom_point(aes(size = usuarios, group = country, color = ifelse(is.na(comentaram_prop), "Imputado", Internet))) +
  scale_color_gradient(low = "blue", high = "red") +
  scale_size_continuous(range = c(2,10)) +
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  labs(x = "PDI", y = "Proporção de pessoas que comentaram em questões dos outros", color = "Internet", size = "Usuários") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Resposta:

Foi utilizado um gráfico de dispersão com a proporção de usuários que comentaram em questões dos outros (comentaram_prop) em relação ao PDI.

  • Com a cor representando:
    • A percentagem de população com acesso à internet;
    • E o tamanho dos pontos representando o número de usuários do site.

Também adicionamos uma linha de regressão para facilitar a visualização da tendência geral.

Os pontos cinzas:

  • Representam países que não tiveram dados de acesso à internet disponíveis e, portanto, não puderam ser incluídos na análise.

Contudo, mantive no gráfico para mostrar a importância dos dados completos na análise e reportar que existe países que não contemplam a análise por falta de informação sobre as variáveis que estamos levando em consideração dentro do dataset.

Outras formas de visualizar

Q2: 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.

Visualização 1
ggplot(data = geographies, aes(x = PDI, y = comentaram_prop, color = comentaram_prop)) +
  geom_point(aes(size = usuarios), alpha = 0.5) +
  scale_color_gradient(low = "blue", high = "red") +
  scale_size_continuous(range = c(2,10)) +
  theme_minimal()

Problema: A cor dos pontos está sendo mapeada para a mesma variável que representa a posição vertical dos pontos (comentaram_prop). Isso pode causar confusão e dificuldade na interpretação dos dados.

Visualização 2
ggplot(data = geographies, aes(x = PDI, y = comentaram_prop)) +
  geom_point(aes(size = usuarios, color = Internet), alpha = 0.5) +
  scale_color_gradient(low = "blue", high = "red") +
  scale_size_continuous(range = c(2,10)) +
  labs(x = "PDI", y = "Proporção de pessoas que comentaram em questões dos outros", size = "Usuários") +
  theme_minimal() +
  guides(color = FALSE) +
  coord_flip()
## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Problema: A inversão das coordenadas pode dificultar a leitura e interpretação dos dados, principalmente se houver muitos pontos próximos uns dos outros. Além disso, a legibilidade dos rótulos dos eixos pode ser comprometida.

Visualização 3
ggplot(data = geographies, aes(x = PDI, y = comentaram_prop, color = Internet)) +
  geom_point(aes(size = usuarios), shape = 1, alpha = 0.5) +
  scale_color_gradient(low = "gray", high = "black") +
  scale_size_continuous(range = c(2, 10)) +
  theme_minimal()

Problema: Ao usar uma escala de cores que vai do cinza ao preto, pode haver uma perda de destaque e intensidade na representação dos dados. O preto, sendo uma cor muito escura, pode dificultar a distinção entre os diferentes níveis ou categorias da variável Internet.

Visualização 4

ggplot(data = geographies, aes(x = PDI, y = comentaram_prop, color = Internet)) +
  geom_point(aes(size = usuarios, group = country), shape = "+") +
  scale_color_gradient(low = "blue") +
  scale_size_continuous(range = c(2,10)) +
  theme_minimal() +
  guides(size = FALSE)

Problema: A forma dos pontos foi alterada para “+” e a legenda de tamanho dos usuários foi removida. Essas alterações podem dificultar a compreensão dos dados, especialmente se não houver uma explicação clara sobre o significado da forma “+”.

Visualização 5

geographies %>%
  na.omit() %>%
  filter(!is.na(six_regions)) %>% 
  ggplot(aes(
    x = reorder(PDI, comentaram_prop), 
    y = comentaram_prop,
    color = six_regions
  )) +
  geom_point(
    alpha = 0.6,
    color = "black",
    fill = "red",
    shape = 21,
    size = 4,
    stroke = 2,
    show.legend = FALSE
  ) + 
  facet_grid(
    site ~ ., 
    scales = "free_y"
  ) +
  theme(
    axis.title = element_text(color = "blue", size = 12, face = "bold"),
    axis.text = element_text(color = "green", size = 10),
    plot.title = element_text(color = "red", size = 16, face = "italic")
  )

Problema: A escala de tamanho dos pontos não é representativa, uma vez que todos os pontos foram mantidos do mesmo tamanho utilizando a função scale_size_identity(). Isso pode resultar em uma representação inadequada da magnitude dos valores da variável “usuarios”, dificultando a compreensão da informação sobre a quantidade de usuários. Além disso, o gráfico não possui títulos significativos, ausencia de cores significativas e rótulos dos eixos ou legendas claras. Essas informações são importantes para orientar o leitor sobre o que está sendo mostrado e facilitar a interpretação dos dados.

Bônus

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

dados_filtrados <- geographies %>%
  filter(!is.na(six_regions))
dados_filtrados$six_regions <- fct_infreq(dados_filtrados$six_regions)
ggplot(data = dados_filtrados, aes(x = PDI, y = comentaram_prop, color = six_regions)) +
  geom_point(aes(size = usuarios)) +
  scale_color_manual(values = palette()) +
  scale_size_continuous(range = c(2, 10)) +
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  labs(x = "PDI", y = "Proporção de pessoas que comentaram em questões dos outros", color = "Região", size = "Usuários") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Essa visualização foi escolhida para explorar a relação entre o Índice de Distância de Poder (PDI) e a proporção de pessoas que comentaram em questões dos outros. Os pontos coloridos e de diferentes tamanhos representam os países e seus usuários, permitindo identificar padrões e correlações. A linha de tendência ajuda a entender a direção e força da relação entre as variáveis. A adição de cores com base nas regiões também facilita a análise das diferenças regionais.