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.
iats <-
list.files(here::here("data"), pattern = "*.csv") %>%
map_df(~read_csv(here::here("data", .), col_types = "cccdc"))
iats = iats %>%
mutate(sex = factor(sex, levels = c("m", "f"), ordered = TRUE))
glimpse(iats)
## Rows: 5,930
## Columns: 5
## $ session_id <chr> "2400853", "2400856", "2400860", "2400868", "2400872", "24…
## $ referrer <chr> "abington", "abington", "abington", "abington", "abington"…
## $ sex <ord> f, f, f, m, m, f, m, m, f, f, f, f, f, f, f, f, f, f, f, f…
## $ d_art <dbl> 0.36016146, 0.58144485, 0.13148464, 0.74446333, 0.01153370…
## $ iat_exclude <chr> "Include", "Include", "Include", "Include", "Include", "In…
iats %>%
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")
iats %>%
ggplot(aes(x = sex, y = d_art)) +
geom_violin(size = .7, alpha = .4) +
geom_boxplot(width = .1, coef = 1000)
## 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.
iats %>%
ggplot(aes(x = sex, y = d_art)) +
geom_quasirandom(width = .25) +
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.
iats %>%
group_by(referrer, sex) %>%
summarise(media = mean(d_art), n = n())
## `summarise()` has regrouped the output.
## ℹ Summaries were computed grouped by referrer and sex.
## ℹ Output is grouped by referrer.
## ℹ Use `summarise(.groups = "drop_last")` to silence this message.
## ℹ Use `summarise(.by = c(referrer, sex))` for per-operation grouping
## (`?dplyr::dplyr_by`) instead.
## # A tibble: 72 × 4
## # Groups: referrer [36]
## referrer sex media n
## <chr> <ord> <dbl> <int>
## 1 abington m 0.0808 24
## 2 abington f 0.454 53
## 3 brasilia m 0.400 48
## 4 brasilia f 0.570 65
## 5 charles m 0.340 22
## 6 charles f 0.735 58
## 7 conncoll m 0.359 29
## 8 conncoll f 0.578 57
## 9 csun m 0.314 32
## 10 csun f 0.320 144
## # ℹ 62 more rows
theta1 <- function(d, s) {
m = mean(d[s == "m"])
f = mean(d[s == "f"])
m - f
}
diferencas = iats %>%
group_by(referrer) %>%
summarise(diff = theta1(d_art, sex))
diferencas %>%
ggplot(aes(x = reorder(referrer, diff), y = diff)) +
geom_point() +
coord_flip()
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
}
nested = iats %>%
group_by(referrer) %>%
mutate(n = n()) %>%
filter(n > 10) %>%
ungroup() %>%
nest(-referrer)
## Warning: Supplying `...` without names was deprecated in tidyr 1.0.0.
## ℹ Please specify a name for each selection.
## ℹ Did you want `data = -referrer`?
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
boots = nested %>%
mutate(booted = map(data, ~ boot(.x,
statistic = theta,
R = 200)))
boots = boots %>%
mutate(ci = map(
booted,
~ tidy(
.x,
conf.level = .95,
conf.method = "basic",
conf.int = TRUE
)
)) %>%
unnest(ci)
glimpse(boots)
## Rows: 35
## Columns: 8
## $ referrer <chr> "abington", "brasilia", "charles", "conncoll", "csun", "help…
## $ data <list> [<tbl_df[77 x 5]>], [<tbl_df[113 x 5]>], [<tbl_df[80 x 5]>]…
## $ booted <list> [-0.3732753, -0.36215652, -0.33804902, -0.32103507, -0.3629…
## $ statistic <dbl> -0.373275323, -0.170554614, -0.394922977, -0.218267740, -0.0…
## $ bias <dbl> -0.005274008, 0.008299462, -0.001492351, -0.006247744, -0.00…
## $ std.error <dbl> 0.11840274, 0.09403762, 0.09532519, 0.09931618, 0.08980240, …
## $ conf.low <dbl> -0.6047608, -0.3466602, -0.6096038, -0.4322964, -0.1759482, …
## $ conf.high <dbl> -0.142505688, 0.011801326, -0.204310694, -0.037376990, 0.169…
boots %>%
ggplot(aes(
x = referrer,
y = statistic,
ymin = conf.low,
ymax = conf.high
)) +
geom_pointrange() +
geom_point(size = 3) +
labs(x = "Diferença",
y = "IAT homens - mulheres") +
coord_flip()
##Conclusões
Interpretação do quadro geral dos 35 labs
juntando todos os 35 laboratórios com mais de 10 participantes e
calculando a diferença e o intervalo de confiança de cada um
separadamente (é basicamente o gráfico do tipo “floresta” que aparece no
final desse arquivo, com um ponto e uma barra de erro para cada
laboratório). Isso me dá uma visão bem mais completa do que olhar só um
ou três laboratórios isolados. a minha interpretação é a seguinte:
O padrão mais forte: a direção nunca muda
Dos 35 laboratórios, todos os 35 mostram a mesma direção: homens com uma
associação implícita menos positiva com a matemática do que mulheres.
Não teve nenhum caso em que o sinal virou, nem um laboratório sequer
onde os homens tiveram associação mais forte que as mulheres. Isso é um
resultado bem raro em replicações de psicologia, normalmente você espera
ver pelo menos alguns laboratórios indo na direção oposta, só por
variação amostral. Aqui, não. Isso pesa bastante a favor de que o efeito
é real, não é um artefato de um laboratório específico.
Mas a força do efeito varia bastante
A diferença entre os laboratórios vai de quase zero (csun, com -0.006)
até mais de meio ponto na escala do IAT (uva, com -0.524). Isso é uma
faixa enorme. Se você tivesse rodado só o csun, ia parecer que não
existe efeito nenhum. Se tivesse rodado só o uva, ia parecer um efeito
gigantesco. Nenhum dos dois sozinho te dá o quadro certo, é olhando o
conjunto que a coisa fica clara.
O que separa os que “cruzam zero” dos que não
cruzam
De 35 laboratórios, 10 têm intervalo de confiança que passa por zero (ou
seja, tecnicamente não dá pra descartar “diferença nenhuma” nesses
casos: csun, wl, tilburg, tamuon, help, swps, qccuny, brasilia, wku,
msvu). Mas repara numa coisa: praticamente todos esses são laboratórios
pequenos, a maioria com 60 a 100 participantes, e vários com bem poucos
homens na amostra (o msvu, por exemplo, tem só 9 homens). Não é que o
efeito não exista nesses lugares, é que a amostra é pequena demais pra
afirmar isso com confiança. Já os laboratórios grandes, como pi (1236
pessoas) e mturk (894 pessoas), têm intervalos bem apertados e
claramente abaixo de zero.
Juntando todo mundo numa conta só
Se você põe as 5842 pessoas de todos os laboratórios numa única análise
(o que dá pra fazer, já que juntamos os dados de world), a diferença
fica em -0.260, com intervalo de confiança de 95% entre -0.286 e -0.233.
Um intervalo estreitíssimo, porque agora você tem uma amostra gigante.
Isso confirma o que os laboratórios individuais já estavam sugerindo: o
efeito é real, tem magnitude moderada (bem entre o limiar de pequeno,
0.15, e o de grande, 0.65, mais perto do meio do caminho) e não é coisa
de um lugar específico.
A interpretação equilibrada
Juntando tudo, dá pra afirmar com bastante segurança que existe uma diferença consistente entre homens e mulheres na associação implícita com a matemática, com mulheres associando a matemática a algo mais negativo (e as artes a algo mais positivo) do que os homens. Essa diferença tem tamanho moderado, em torno de 0.25 a 0.26 pontos na escala do IAT, quando olhamos a amostra completa. O que muda de laboratório pra laboratório não é a existência do efeito, é o quanto cada amostra individual consegue captar com precisão esse tamanho, e isso depende quase inteiramente do número de participantes, principalmente de quantos homens entraram na amostra, que costuma ser o grupo menor em quase todos os laboratórios.
O ponto mais interessante para levar para conclusão deste lab é esse: Olhar um único laboratório pequeno pode te dar uma falsa impressão de que o efeito é fraco ou inexistente (é o caso do csun ou do tamuon), quando na verdade o problema não é o efeito ser fraco, é a amostra ser pequena demais pra enxergar ele com clareza. A força da replicação em múltiplos laboratórios é justamente essa: ela separa o que é limitação da amostra do que é sinal real nos dados.