Sobre Implicit Association Tests (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 de uma replicação

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: 267
## Columns: 5
## $ session_id  <chr> "2478783", "2478785", "2478786", "2478787", "2478789", "24…
## $ referrer    <chr> "lse", "lse", "lse", "lse", "lse", "lse", "lse", "lse", "l…
## $ sex         <ord> m, f, f, f, m, m, f, m, m, f, f, f, f, f, f, f, f, f, f, m…
## $ d_art       <dbl> 0.80543823, 0.31463632, 0.60437687, 0.32284672, 0.73121367…
## $ iat_exclude <chr> "Include", "Include", "Include", "Include", "Include", "In…
iat %>%
    ggplot(aes(x = d_art, fill = sex, color = sex)) +
    geom_histogram(binwidth = .2, alpha = .4) +
    geom_rug() +
    facet_grid(sex ~ ., scales = "free_y") + 
    theme(legend.position = "None")

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 every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Qual a diferença na amostra
iat %>% 
    group_by(sex) %>% 
    summarise(media = mean(d_art))
## # A tibble: 2 × 2
##   sex   media
##   <ord> <dbl>
## 1 m     0.160
## 2 f     0.522
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.3617526

Comparação via ICs

library(boot)

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.3617526
## $ bias      <dbl> 0.0009624536
## $ std.error <dbl> 0.05916021
## $ conf.low  <dbl> -0.4803892
## $ conf.high <dbl> -0.249492
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")

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)

Tamanho da amostra e desvio padrão por sexo
iat %>% 
    group_by(sex) %>% 
    summarise(amostra = n(), desvio_padrao = sd(d_art))
## # A tibble: 2 × 3
##   sex   amostra desvio_padrao
##   <ord>   <int>         <dbl>
## 1 m          91         0.483
## 2 f         176         0.453

Bootstrap sem biblioteca

# Calcula 2 mil amostras da média de amostras de tamanho 60
amostras_media_dif <- replicate(2000, {
  amostra <- iat %>%
    sample_n(60, replace = TRUE)
  
  m <- amostra %>% filter(sex == "m") %>% summarise(media = mean(d_art)) %>% pull(media)
  f <- amostra %>% filter(sex == "f") %>% summarise(media = mean(d_art)) %>% pull(media)
  
  m - f
})


# Calcula a média das diferenças de médias
media_dif <- mean(amostras_media_dif)

# Calcula um IC usando t de Student para um nível de confiança de 95%
ic_test <- t.test(amostras_media_dif)

lower_ci <- ic_test$conf.int[1]
upper_ci <- ic_test$conf.int[2]


# Dataframe com o IC para plotar
df_ic <- data.frame(
  x = 1,
  lower_ci = lower_ci,
  upper_ci = upper_ci
)

# Plota o intervalo de confiança
ggplot(df_ic, aes(x = x, y = NULL)) +
  geom_linerange(mapping=aes(ymin = lower_ci, ymax = upper_ci), linewidth = 1) +
  geom_point(aes(y = media_dif), color = "red", size = 3) +
  labs(x = "Diferença", y = "IAT homens - mulheres", title = "Intervalo de Confiança das Diferenças de Médias", subtitle = "Bootstrap manual (sem biblioteca)") +
  theme_minimal() + 
  theme(
      axis.ticks.x = element_blank(),
      axis.text.x = element_blank()
  )

Conclusão

Preencha os resultados e conclusões abaixo

Em média, as mulheres que participaram do experimento (London School of Economics and Political Science, LSE) tiveram uma associação implícita (medida pelo IAT) com a matemática negativa e média (média 0.5218680, desv. padrão = 0.4526697, N = 176). Homens tiveram uma associação negativa com a matemática, portanto menor que a das mulheres (média = 0.1601154, desv. padrão = 0.4826767, N = 91).

## Houve portanto uma pequena diferença entre homens e mulheres (diferença das médias -0.361753, 95% CI [-0.480389, -0.249492]). A partir desta amostra, estimamos que mulheres têm uma associação negativa mais forte, porém a diferença sendo de pequena a considerável (em alguns casos), considerando o IC.

Exemplos de possíveis conclusões para completar

  • mulheres têm uma associação negativa consideravelmente mais forte, com uma diferença que provavelmente está entre 0.6 e 1.0 ponto na escala IAT, o suficiente para diferenciar uma associação neutra de uma muito forte contra a matemática.
  • mulheres têm uma associação negativa mais forte, porém não é claro se essa diferença é grande, moderada ou pequena. É necessário coletar mais dados para determinar se a diferença é relevante ou negligenciável.
  • mulheres podem ter um associação negativa forte, pode não haver diferença entre sexos ou homens podem ter atitudes negativas um pouco mais fortes ou moderadamente mais fortes.
  • pode não haver uma diferença entre sexos, ou se ela existir, ela provavelmente é pequena em qualquer das direções.

Realize novas análises sobre IAT usando as abordagens a seguir

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)

Conclusões comparando o bootstrap com biblioteca e o sem biblioteca

Para o bootstrap implementado manualmente optei por considerar uma reamostragem de tamanho 2000 com amostras de tamanho 60 com a opção replace ativada, para ser uma amostragem com reposição. O tamanho das amostras foi definido como 60, dado que para cada uma calcula-se a diferença por sexo e para isso ter maior representativade, optei por ter o dobro que o tamanho padrão que geralmente é 30.

## [1] "O IC com a biblioteca boot foi de [-0.480389, -0.249492] e o IC do bootstrap sem biblioteca foi de [-0.367959, -0.356744], com 95% de nível de confiança em ambos os casos. Em ambos os casos existe a diferença já que o intervalo não contém o zero, mas a diferença é pequena (se considerar que maior intervalo absoluto entre as observações, acima de 2). Embora o intervalo gerado manualmente tenha uma maior precisão no intervalo, a variação sendo apenas na segunda casa decimal. Essa maior precisão pode ter acontecido por possivelmente a quantidade de elementos nas amostras individuais ser maior no bootstrap manual."