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.
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.
iat %>%
group_by(sex) %>%
summarise(media = mean(d_art))
## # A tibble: 2 × 2
## sex media
## <ord> <dbl>
## 1 m 0.224
## 2 f 0.467
estatisticas <- iat %>%
group_by(sex) %>%
summarise(
media = mean(d_art, na.rm = TRUE),
desvio_padrao = sd(d_art, na.rm = TRUE),
N = n()
)
print(estatisticas)
## # A tibble: 2 × 4
## sex media desvio_padrao N
## <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 = agrupado %>% filter(sex == "m") %>% pull(media)
f = agrupado %>% filter(sex == "f") %>% pull(media)
m - f
## [1] -0.2430539
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.001042916
## $ std.error <dbl> 0.09368346
## $ conf.low <dbl> -0.423254
## $ conf.high <dbl> -0.05969533
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)
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.4666898, desv. padrão 0.5475448, N = 117). Homens tiveram uma associação negativa e baixa com a matemática (média 0.2236359, desv. padrão 0.4850899, N = 38). Houve portanto uma considerável diferença entre homens e mulheres (diferença das médias -0.2430539, 95% CI [-0.4321136, -0.06442863]). A partir desta amostra, estimamos que mulheres têm uma associação negativa consideravelmente mais forte, com uma diferença que provavelmente está entre -0.064 e -0.432 ponto na escala IAT, o suficiente para diferenciar uma associação fraca de uma média contra a matemática.
O segundo método de IC com bootstraps escolhido foi por meio do percentil, que utiliza a reamostragem para calcular a diferença das médias entre os dois grupos (feminino e masculino), construindo um IC para essa diferença que é determinado pelos percentis correspondentes ao nível de confiança escolhido. Para um intervalo de confiança de 95%, o IC é construído excluindo os 2,5% mais baixos e os 2,5% mais altos das estimativas, que são os 5% restantes dos dados nas caudas. Esse método foi escolhido por ser um método direto, simples de implementar e interpretar.
O IC obtido pelo segundo método foi [-0.43146917, -0.06811895], similar ao intervalo obtido pelo método da biblioteca [-0.4342267, -0.06599013], o que sugere consistência nos resultados.
bootstrap <- function(data, n_bootstrap, conf_level = 0.95) {
diffs <- numeric(n_bootstrap)
for (i in 1:n_bootstrap) {
sample_indices <- sample(1:nrow(data), replace = TRUE)
sample_data <- data[sample_indices, ]
grouped <- sample_data %>%
group_by(sex) %>%
summarise(media = mean(d_art))
m <- grouped %>% filter(sex == "m") %>% pull(media)
f <- grouped %>% filter(sex == "f") %>% pull(media)
diffs[i] <- m - f
}
alpha <- (1 - conf_level) / 2
lower <- quantile(diffs, alpha)
upper <- quantile(diffs, 1 - alpha)
list(diffs = diffs, conf_int = c(lower, upper))
}
my_bootstrap <- bootstrap(iat, n_bootstrap = 2000)
my_bootstrap$conf_int
## 2.5% 97.5%
## -0.42324785 -0.06113843
ci <- data.frame(
statistic = my_bootstrap$diffs,
conf.low = my_bootstrap$conf_int[1],
conf.high = my_bootstrap$conf_int[2]
)
## Warning in data.frame(statistic = my_bootstrap$diffs, conf.low =
## my_bootstrap$conf_int[1], : row names were found from a short variable and have
## been discarded
ggplot(ci, aes(x = "", y = statistic)) +
geom_point(size = 3, color = "gray") +
geom_errorbar(aes(ymin = conf.low, ymax = conf.high), width = 0.2, color = "black") +
labs(x = NULL, y = "Diferença (IAT homens - mulheres)") +
theme_minimal()
iat = read_csv(here::here(params$arquivo_dados_novo), col_types = "cccdc")
iat = iat %>%
mutate(sex = factor(sex, levels = c("m", "f"), ordered = TRUE))
glimpse(iat)
## Rows: 113
## Columns: 5
## $ session_id <chr> "2401243", "2401244", "2401246", "2401249", "2401250", "24…
## $ referrer <chr> "brasilia", "brasilia", "brasilia", "brasilia", "brasilia"…
## $ sex <ord> m, m, f, f, f, m, f, m, m, f, f, f, f, f, m, m, f, m, f, m…
## $ d_art <dbl> 0.1480913, 0.6285349, 0.4977736, 0.3999447, 0.8314632, 1.1…
## $ 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)
iat %>%
group_by(sex) %>%
summarise(media = mean(d_art))
## # A tibble: 2 × 2
## sex media
## <ord> <dbl>
## 1 m 0.400
## 2 f 0.570
estatisticas <- iat %>%
group_by(sex) %>%
summarise(
media = mean(d_art, na.rm = TRUE),
desvio_padrao = sd(d_art, na.rm = TRUE),
N = n()
)
print(estatisticas)
## # A tibble: 2 × 4
## sex media desvio_padrao N
## <ord> <dbl> <dbl> <int>
## 1 m 0.400 0.516 48
## 2 f 0.570 0.423 65
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.1705546
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.1705546
## $ bias <dbl> -0.001352723
## $ std.error <dbl> 0.09195494
## $ conf.low <dbl> -0.3475196
## $ conf.high <dbl> 0.01647789
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)
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.5703113, desv. padrão 0.4229594, N = 65). Homens também tiveram uma associação negativa e média com a matemática (média 0.3997566, desv. padrão 0.5162869, N = 48). Houve, portanto, uma pequena diferença entre homens e mulheres (diferença das médias -0.1705546, 95% CI [-0.358355, 0.014633]). A partir desta amostra, estimamos que mulheres têm uma associação negativa um pouco mais forte com a matemática do que homens. No entanto, essa diferença não é grande e dado que o intervalo de confiança inclui zero, não podemos afirmar com certeza que existe uma diferença significativa entre os sexos.
O segundo método de IC com bootstraps escolhido foi por meio do percentil, que utiliza a reamostragem para calcular a diferença das médias entre os dois grupos (feminino e masculino), construindo um IC para essa diferença que é determinado pelos percentis correspondentes ao nível de confiança escolhido. Para um intervalo de confiança de 95%, o IC é construído excluindo os 2,5% mais baixos e os 2,5% mais altos das estimativas, que são os 5% restantes dos dados nas caudas. Esse método foi escolhido por ser um método direto, simples de implementar e interpretar.
O IC obtido pelo segundo método foi [-0.34137595, 0.01034242], similar ao intervalo obtido pelo método da biblioteca [-0.3564613, 0.003911153], o que sugere consistência nos resultados. Ambos os métodos corroboram com a ideia de que a diferença entre as médias dos grupos (masculino e feminino) é pequena e pode não ser estatisticamente significativa.
bootstrap <- function(data, n_bootstrap, conf_level = 0.95) {
diffs <- numeric(n_bootstrap)
for (i in 1:n_bootstrap) {
sample_indices <- sample(1:nrow(data), replace = TRUE)
sample_data <- data[sample_indices, ]
grouped <- sample_data %>%
group_by(sex) %>%
summarise(media = mean(d_art))
m <- grouped %>% filter(sex == "m") %>% pull(media)
f <- grouped %>% filter(sex == "f") %>% pull(media)
diffs[i] <- m - f
}
alpha <- (1 - conf_level) / 2
lower <- quantile(diffs, alpha)
upper <- quantile(diffs, 1 - alpha)
list(diffs = diffs, conf_int = c(lower, upper))
}
meu_bootstrap <- bootstrap(iat, n_bootstrap = 2000)
meu_bootstrap$conf_int
## 2.5% 97.5%
## -0.345933987 0.006063954
ci <- data.frame(
statistic = meu_bootstrap$diffs,
conf.low = meu_bootstrap$conf_int[1],
conf.high = meu_bootstrap$conf_int[2]
)
## Warning in data.frame(statistic = meu_bootstrap$diffs, conf.low =
## meu_bootstrap$conf_int[1], : row names were found from a short variable and
## have been discarded
ggplot(ci, aes(x = "", y = statistic)) +
geom_point(size = 3, color = "grey") +
geom_errorbar(aes(ymin = conf.low, ymax = conf.high), width = 0.2, color = "black") +
labs(x = NULL, y = "Diferença (IAT homens - mulheres)") +
theme_minimal()
No primeiro dataset, existe uma diferença significativa entre as associações implícitas de homens e mulheres com a matemática, enquanto no segundo dataset, essa diferença é menor e não significativa.