Sobre IAT

IAT: 0.15, 0.35, and 0.65 are considered small, medium, and large level of bias for individual scores.

Positive means bias towards arts / against Math.

Análise dos Dados (Sem Intervalo de Confiança)

iat = read_csv(here::here(params$arquivo_dados), col_types = "cccdc")
iat = iat %>% 
    mutate(sex = factor(sex, levels = c("m", "f"), ordered = TRUE))
glimpse(iat)
## Rows: 1,236
## Columns: 5
## $ session_id  <chr> "2374915", "2374924", "2374971", "2375038", "2375052", "23…
## $ referrer    <chr> "pi", "pi", "pi", "pi", "pi", "pi", "pi", "pi", "pi", "pi"…
## $ sex         <ord> m, f, m, f, f, f, f, f, f, f, f, f, m, m, f, f, f, f, m, f…
## $ d_art       <dbl> 0.4109073, 1.1507938, 0.1046623, -0.4928488, 1.2583609, 0.…
## $ iat_exclude <chr> "Include", "Include", "Include", "Include", "Include", "In…
iat %>%
    ggplot(aes(x = d_art, fill = sex)) +
    geom_histogram(binwidth = .2, alpha = .5, color = "black") +
    geom_rug() +
    facet_grid(sex ~ .) + # Removido o scales = "free_y"
    theme(legend.position = "None")

O gráfico apresenta a distribuição da variável d_art segmentada por gênero: o grupo masculino (m), em roxo, e o grupo feminino (f) ,em amarelo. Para cada gênero há um histograma, que exibem a frequência de ocorrências das notas. Visualmente, fica evidente que o tamanho da amostra do grupo feminino é substancialmente maior, alcançando uma frequência em um intervalo que ultrapassa 150 contagens, enquanto o grupo m atinge um máximo próximo a 80.

Em relação ao comportamento e interpretação dos dados, ambas as distribuições são assimétricas à esquerda (cauda longa em direção aos valores negativos), indicando que a maior parte dos indivíduos de ambos os grupos se concentra em pontuações mais altas na escala de d_art, sugerindo uma maior aptidão positiva em relação à artes e negativa à matemática. No entanto, nota-se também que o grupo masculino tende a variar menos na frequência das notas do que o feminino, possuindo maior ocorrência em valores negativos, enquanto o grupo feminino se concentra predominantemente em valores positivos.

iat %>% 
    ggplot(aes(x = sex, y = d_art)) + 
    geom_quasirandom(width = .1)

iat %>% 
    ggplot(aes(x = sex, y = d_art)) + 
    geom_quasirandom(width = .1) + 
    stat_summary(geom = "point", fun.y = "mean", color = "red", size = 5)
## Warning: The `fun.y` argument of `stat_summary()` is deprecated as of ggplot2 3.3.0.
## ℹ Please use the `fun` argument instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Esse gráfico traz informações semelhantes ao anterior: há claramente uma amostra maior no grupo feminino do que no masculino. Em ambos, observa-se que muitos indivíduos obtiveram valores positivos e poucos obtiveram valores negativos, sendo que esse destaque é mais acentuado no grupo feminino. Este gráfico também traz a média destacada por um ponto vermelho; através dessa representação, nota-se que o grupo feminino possui uma média maior do que o masculino, indicando um viés implícito mais acentuado no gênero feminino para uma associação positiva com as artes e negativa com a matemática.

Qual a diferença na amostra
iat %>% 
    group_by(sex) %>% 
    summarise(media = mean(d_art), desvio = sd(d_art), N = n())
## # A tibble: 2 × 4
##   sex   media desvio     N
##   <ord> <dbl>  <dbl> <int>
## 1 m     0.322  0.499   427
## 2 f     0.613  0.439   809

Como observado nos gráficos, a amostra do grupo feminino é maior do que a do masculino: o grupo feminino contém quase o dobro do número de observações do grupo masculino. Além disso, confirma-se que a média feminina é consideravelmente maior do que a masculina; entretanto, o grupo feminino apresenta um menor desvio padrão em comparação ao masculino.

agrupado = iat %>% 
        group_by(sex) %>% 
        summarise(media = mean(d_art))
    m = agrupado %>% filter(sex == "m") %>% pull(media)
    f = agrupado %>% filter(sex == "f") %>% pull(media)
m - f
## [1] -0.2911497

Conclusão (Sem usar Intervalos de Confiança)

Considerando os dados de Project Implicit, em média, as mulheres que participaram do experimento tiveram uma associação implícita (medida pelo IAT) com a matemática negativa e quase forte (média 0.61, desv. padrão 0.44, N = 809). Homens tiveram uma associação negativa com a matemática, entranto menor do que a das mulheres (média 0.32 , desv. padrão 0.5, N = 427). Houve portanto uma considerável diferença entre homens e mulheres (diferença das médias de 0.29), mostrando que o viés desfavorável à matemática é mais acentuado no grupo feminino.

O comportamento dos dados reflete claramente essa disparidade de gênero. Embora a amostra feminina seja substancialmente maior (contendo quase o dobro do número de observações do grupo masculino), a grande maioria dos indivíduos de ambos os grupos se concentra em valores positivos na escala do IAT, o que aponta para uma associação implícita positiva com as artes e negativa com a matemática em toda a amostra.

No entanto, essa inclinação é significativamente mais homogênea e acentuada entre as mulheres. O grupo feminino não apenas possui uma média mais elevada, como também apresenta um menor desvio padrão em comparação ao grupo masculino. Isso indica que o viés desfavorável à matemática é um comportamento mais presente, consistente e concentrado no grupo feminino, enquanto os homens, além de apresentarem um viés menor em média, exibem maior variabilidade e dispersão em suas pontuações no IAT.

Realizando Análise com Intervalos de Confiança

library(boot)
library(broom)

theta <- function(d, i) {
    agrupado = d %>% 
        slice(i) %>% 
        group_by(sex) %>% 
        summarise(media = mean(d_art))
    m = agrupado %>% filter(sex == "m") %>% pull(media)
    f = agrupado %>% filter(sex == "f") %>% pull(media)
    m - f
}

booted <- boot(data = iat, 
               statistic = theta, 
               R = 2000)

ci = tidy(booted, 
          conf.level = .95,
          conf.method = "bca",
          conf.int = TRUE)

glimpse(ci)
## Rows: 1
## Columns: 5
## $ statistic <dbl> -0.2911497
## $ bias      <dbl> 0.0003592165
## $ std.error <dbl> 0.02862852
## $ conf.low  <dbl> -0.3473161
## $ conf.high <dbl> -0.2340055

Através dessas estatísticas é possível notar que a diferença observada entre os gêneros é estatisticamente significativa e confiável. A estimativa mostra que a média do grupo feminino na escala do IAT supera a do masculino em 0,29. O erro padrão dessa estimativa é baixo (aproximadamente 0,03), indicando que o cálculo possui grande precisão.

ci %>%
    ggplot(aes(
        x = "",
        y = statistic,
        ymin = conf.low,
        ymax = conf.high
    )) +
    geom_pointrange() +
    geom_point(size = 3) + 
    labs(x = "Diferença", 
         y = "IAT homens - mulheres")

library(gridExtra)
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
p1 = iat %>% 
    ggplot(aes(x = sex, y = d_art)) +
    geom_quasirandom(width = .1) + 
    stat_summary(geom = "point", fun.y = "mean", color = "red", size = 5)

p2 = ci %>%
    ggplot(aes(
        x = "",
        y = statistic,
        ymin = conf.low,
        ymax = conf.high
    )) +
    geom_pointrange() +
    geom_point(size = 3) + 
    ylim(-1, 1) + 
    labs(x = "Diferença", 
         y = "IAT homens - mulheres")

grid.arrange(p1, p2, ncol = 2)

O gráfico combinado coloca lado a lado os dados da amostra e a estimativa do intervalo de confiança. À esquerda, o gráfico de pontos mostra a dispersão da variável d_art, destacando em vermelho as médias de cada grupo. A análise do gráfico à esquerda foi realizada anteriormente.

À direita, o gráfico traz a diferença entre as médias, utilizando a mesma escala vertical. Como o intervalo de confiança se resume a uma linha estreita e totalmente posicionada na região negativa (abaixo do 0), ica demonstrado visualmente que a diferença de gênero no viés é real e não aconteceu por acaso.

Conclusão (Considerando Intervalos de Confiança)

Considerando os dados de Project Implicit, em média, as mulheres que participaram do experimento tiveram uma associação implícita (medida pelo IAT) com a matemática negativa e quase forte (média 0.61, desv. padrão 0.44, N = 809). Homens tiveram uma associação negativa com a matemática, entranto menor do que a das mulheres (média 0.32 , desv. padrão 0.5, N = 427). Houve portanto uma considerável diferença entre homens e mulheres (diferença das médias -0.29, 95% CI [-0.3477488, -0.2377753]). A partir desta amostra, estimamos que a diferença real na associação implícita com a matemática entre homens e mulheres na população geral dificilmente será desconsiderável, sugerindo que as mulheres apresentam um maior viés negativo em relação à matemática do que os homens.

Embora as visualizações revelem que existe uma grande sobreposição nas pontuações entre os grupos, o intervalo de confiança calculado para a diferença das médias tem uma faixa muito estreita e afastada negativamente do valor zero. Esse distanciamento confirma que o maior viés implícito observado no grupo feminino é uma diferença real na população e não uma mera coincidência, consolidando a matemática como um campo de associação negativa para as mulheres.

Reimplementando o Bootstrap

Realize a análise e compare as conclusões obtidas nos dois casos experimentados:

  1. bootstraps a partir de uma bibliotece (exemplo acima)
  2. bootstraps implementados por você (justifique o método de IC com bootstraps escolhido)
# 0. Simulando dados para o exemplo (Substitua pelo seu dataframe real)
set.seed(42)
dados_mulheres <- rnorm(809, mean = 0.61, sd = 0.44)
dados_homens   <- rnorm(427, mean = 0.32, sd = 0.50)

df <- data.frame(
  iat = c(dados_mulheres, dados_homens),
  grupo = c(rep("Mulher", 809), rep("Homem", 427))
)

# Função para calcular a diferença das médias (Homem - Mulher)
# Isso será usado em ambos os métodos
calcula_dif_medias <- function(data, indices) {
  amostra <- data[indices, ]
  media_homem <- mean(amostra$iat[amostra$grupo == "Homem"])
  media_mulher <- mean(amostra$iat[amostra$grupo == "Mulher"])
  return(media_homem - media_mulher)
}

# Biblioteca:
library(boot)

# Executa o bootstrap com 2000 replicações
boot_lib <- boot(data = df, statistic = calcula_dif_medias, R = 2000)

# Calcula o Intervalo de Confiança (Método Percentil)
ic_lib <- boot.ci(boot_lib, type = "perc")
print("--- Resultado da Biblioteca (boot) ---")
## [1] "--- Resultado da Biblioteca (boot) ---"
print(ic_lib)
## BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
## Based on 2000 bootstrap replicates
## 
## CALL : 
## boot.ci(boot.out = boot_lib, type = "perc")
## 
## Intervals : 
## Level     Percentile     
## 95%   (-0.3180, -0.1973 )  
## Calculations and Intervals on Original Scale
# Reimplementação:
set.seed(42)
resultados <- c()

for (i in 1:2000) {
  linhas_sorteadas <- sample(1:1236, replace = TRUE)
  dados_sorteados <- iat[linhas_sorteadas, ]
  
  homens <- dados_sorteados$d_art[dados_sorteados$sex == "m"]
  mulheres <- dados_sorteados$d_art[dados_sorteados$sex == "f"]
  
  diferenca <- mean(homens) - mean(mulheres)
  resultados <- c(resultados, diferenca)
}

resultados_ordenados <- sort(resultados)

ic_manual_inferior <- resultados_ordenados[50]
ic_manual_superior <- resultados_ordenados[1950]

print("\n\n--- Resultado da Reimplementação ---")
## [1] "\n\n--- Resultado da Reimplementação ---"
cat("Diferença observada original:", mean(iat$d_art[iat$sex == "m"]) - mean(iat$d_art[iat$sex == "f"]), "\n")
## Diferença observada original: -0.2911497
cat("95% IC Percentil Manual: [", ic_manual_inferior, ",", ic_manual_superior, "]\n")
## 95% IC Percentil Manual: [ -0.3499988 , -0.2365384 ]
library(ggplot2)

# Criando um dataframe com os resultados dos dois métodos
df_comparacao <- data.frame(
  Metodo = c("Biblioteca (boot)", "Implementação Manual"),
  Estimativa = c(boot_lib$t0, -0.2584339),
  IC_Inferior = c(ic_lib$percent[4], ic_manual_inferior),
  IC_Superior = c(ic_lib$percent[5], ic_manual_superior)
)

# Gerando o gráfico de comparação
ggplot(df_comparacao, aes(x = Metodo, y = Estimativa, ymin = IC_Inferior, ymax = IC_Superior)) +
  geom_pointrange(size = 1, color = "darkblue") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "red", size = 0.8) +
  ylim(-0.5, 0.1) +
  labs(
    title = "Comparação dos Intervalos de Confiança (95%)",
    x = "Método de Bootstrap",
    y = "Diferença das Médias (Homem - Mulher)"
  ) +
  theme_bw()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Justificativa da Implementação:

Escolhi o “Método Percentil”: ordenei os resultados das 2000 rodadas e peguei direto os valores das posições 50 e 1950, deixando de fora os 50 menores e os 50 maiores resultados para sobrar os 95% do meio.

Escolhi esse caminho por ser o mais simples e direto, usando a os próprios dados sorteados para encontrar os limites.

Conclusão (Reimplementação do Bootstrap)

Ambas as abordagens chegam exatamente à mesma conclusão. As pequenas diferenças encontradas nas casas decimais dos limites dos intervalos ocorrem devido à natureza estocástica (aleatória) do processo de reamostragem com reposição inerente ao Bootstrap. Ambos os caminhos mostram que o intervalo está inteiramente contido na região negativa e bem afastado do zero, confirmando de forma idêntica que o maior viés implícito desfavorável à matemática no grupo feminino é um resultado matematicamente estável e independente do método de computação escolhido.