Sobre Implicit Association Tests (IAT) – Olhe o README do repositório.

IAT: 0.15, 0.35, and 0.65 are considered small, medium, and large levels of bias for individual scores. Positive means bias towards arts / against Math.

Exemplo de 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: 155
## Columns: 5
## $ session_id  <chr> "2436706", "2436967", "2440429", "2440430", "2440431", "24…
## $ referrer    <chr> "sdsu", "sdsu", "sdsu", "sdsu", "sdsu", "sdsu", "sdsu", "s…
## $ sex         <ord> f, f, f, f, m, f, f, m, f, m, f, f, f, f, f, f, m, m, f, m…
## $ d_art       <dbl> 0.90444320, -0.47402625, 0.46840862, -0.02522412, 0.136813…
## $ 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), desvio = sd(d_art), count = n())
## # A tibble: 2 × 4
##   sex   media desvio count
##   <ord> <dbl>  <dbl> <int>
## 1 m     0.224  0.485    38
## 2 f     0.467  0.548   117
agrupado = iat %>% 
        group_by(sex) %>% 
        summarise(media = mean(d_art))
    m_media = agrupado %>% filter(sex == "m") %>% pull(media)
    f_media = agrupado %>% filter(sex == "f") %>% pull(media)
    
m_media - f_media
## [1] -0.2430539

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.2430539
## $ bias      <dbl> 0.002674448
## $ std.error <dbl> 0.09362414
## $ conf.low  <dbl> -0.4286124
## $ conf.high <dbl> -0.06324544
ci %>%
    ggplot(aes(
        x = "",
        y = statistic,
        ymin = conf.low,
        ymax = conf.high
    )) +
    geom_pointrange() +
    geom_point(size = 3) + 
    labs(x = "Diferenca", 
         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 = "Diferenca", 
         y = "IAT homens - mulheres")

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

Conclusão

Em média, as mulheres que participaram do experimento tiveram uma associação implícita (medida pelo IAT) com a matemática negativa e média (média = 0.467, desv. padrão = 0.548, N = 117). Homens tiveram uma associação negativa com a matemática, portanto menor que a das mulheres (média =0.224 , desv. padrão = 0.485, N = 38). Houve portanto uma considerável diferença entre homens e mulheres (diferença das médias = -0.2430539, 95% CI [-0.423276, -0.05192553]). A partir desta amostra, estimamos que:


  • Mulheres têm uma associação positiva consideravelmente mais forte com arte, mesmo o seu número mais elevado que o dos homens, contudo os homens também apresentam uma associação positiva com artes.

  • Os resultados mostram uma potencial disparidade entre homens e mulheres na área de exatas, mas são necessárias mais investigações para confirmar a extensão desta disparidade.

  • Embora os homens apresentem uma média inferior a das mulheres com relação a associação negativa com matemática, e nécessária uma quanidade maior de casos para serem analizados, para se evitar vieses.

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

1 - Bootstraps a partir de uma bibliotece (exemplo acima)

iat_b2 = read_csv(here::here(params$arquivo_dados_2), col_types = "cccdc")
iat_b2 = iat_b2 %>% 
    mutate(sex = factor(sex, levels = c("m", "f"), ordered = TRUE))
glimpse(iat)
## Rows: 155
## Columns: 5
## $ session_id  <chr> "2436706", "2436967", "2440429", "2440430", "2440431", "24…
## $ referrer    <chr> "sdsu", "sdsu", "sdsu", "sdsu", "sdsu", "sdsu", "sdsu", "s…
## $ sex         <ord> f, f, f, f, m, f, f, m, f, m, f, f, f, f, f, f, m, m, f, m…
## $ d_art       <dbl> 0.90444320, -0.47402625, 0.46840862, -0.02522412, 0.136813…
## $ iat_exclude <chr> "Include", "Include", "Include", "Include", "Include", "In…
Qual a diferença na amostra da segunda biblioteca
iat_b2 %>% 
    group_by(sex) %>% 
    summarise(media = mean(d_art), desvio = sd(d_art), count = n())
## # A tibble: 2 × 4
##   sex   media desvio count
##   <ord> <dbl>  <dbl> <int>
## 1 m     0.265  0.529    32
## 2 f     0.584  0.514    85
agrupado_b2 = iat %>% 
        group_by(sex) %>% 
        summarise(media = mean(d_art))
    m_media = agrupado_b2 %>% filter(sex == "m") %>% pull(media)
    f_media = agrupado_b2 %>% filter(sex == "f") %>% pull(media)
m_media - f_media
## [1] -0.2430539

Comparação via ICs da segunda biblioteca

library(boot)

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

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

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

glimpse(ci)
## Rows: 1
## Columns: 5
## $ statistic <dbl> -0.2430539
## $ bias      <dbl> -0.004092999
## $ std.error <dbl> 0.09644852
## $ conf.low  <dbl> -0.4267536
## $ conf.high <dbl> -0.04989076

Conclusão 2

Em média, as mulheres que participaram do experimento tiveram uma associação implícita (medida pelo IAT) com a matemática negativa e média (média = 0.584, desv. padrão = 0.514, N = 85). Homens tiveram uma associação negativa com a matemática, portanto menor que a das mulheres (média = 0.265, desv. padrão = 0.529, N = 32). Houve portanto uma considerável diferença entre homens e mulheres (diferença das médias = -0.2430539, 95% CI [-0.4299121, -0.06426403). A partir desta amostra, percebemos que:

  • Mesmo com o uso de uma biblioteca diferente, a mesma apresenta resultados similares a primeira biblioteca utilizada.

  • Mulheres têm uma associação negativa consideravelmente mais forte com matemática, contudo os homens também apresentam uma associação negativa também.

  • A análise utilizou números relativamente semelhantes para análise, o que possibilita uma análise de melhor comparação. Porém é necessário mais dados para realizar um estudo mais estruturado.

2 - Bootstraps implementados por você (justifique o método de IC com bootstraps escolhido)

theta_b3 <- function(data) {
  agrupado_3 <- data %>%
    group_by(sex) %>%
    summarise(media = mean(d_art), .groups = 'drop')
  m_media_3 = agrupado_3 %>% filter(sex == "m") %>% pull(media)
  f_media_3 = agrupado_3 %>% filter(sex == "f") %>% pull(media)
  m_media_3 - f_media_3
}

theta <- theta_b3(iat_b2)

R <- 1000
n <- nrow(iat_b2)
bootstrap_samples <- replicate(R, {
  sample_indices <- sample(1:n, n, replace = TRUE)
  theta_b3(iat_b2[sample_indices, ])
})

lower <- quantile(bootstrap_samples, 0.025)
high <- quantile(bootstrap_samples, 0.975)

list(
  original = theta,
  lower = lower,
  high = high
)
## $original
## [1] -0.3195262
## 
## $lower
##       2.5% 
## -0.5191457 
## 
## $high
##       97.5% 
## -0.09528449

O intervalo de confiança de 95% para theta e [-0,5260699, -0,1095998]. O intervalo mostra que o valor de theta provavelmente será negativo, indicando uma relação negativa entre as variáveis.