Este relatório apresenta uma análise detalhada dos dados de um experimento replicado sobre as diferenças de gênero nas atitudes implícitas em relação à matemática. Os dados utilizados são provenientes de um estudo de Teste de Associação Implícita (IAT) replicado em múltiplos laboratórios. O objetivo é explorar as associações implícitas com a matemática entre homens e mulheres e quantificar a magnitude de quaisquer diferenças observadas, utilizando métodos de inferência estatística, como o bootstrap.

Análise dos Dados IAT

# Carregando os dados
iat = read_csv("C:/Users/itagi/OneDrive/Desktop/FPCC2-4/fpcc2-lab-4-K010TE/data/sdsu .csv", col_types = "cccdc")
iat = iat %>% 
    mutate(sex = factor(sex, levels = c("m", "f"), ordered = TRUE))

# Estatísticas descritivas por sexo
estatisticas = iat %>%
    group_by(sex) %>%
    summarise(
        media = mean(d_art),
        desvio_padrao = sd(d_art),
        n = n()
    )

# Calculando a diferença entre as médias
diferenca = estatisticas %>%
    filter(sex == "m") %>%
    pull(media) - 
    estatisticas %>%
    filter(sex == "f") %>%
    pull(media)

# Bootstrap para intervalo de confiança
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)

# Calculando valores para as conclusões
media_f = round(estatisticas$media[estatisticas$sex == "f"], 2)
dp_f = round(estatisticas$desvio_padrao[estatisticas$sex == "f"], 2)
n_f = estatisticas$n[estatisticas$sex == "f"]

media_m = round(estatisticas$media[estatisticas$sex == "m"], 2)
dp_m = round(estatisticas$desvio_padrao[estatisticas$sex == "m"], 2)
n_m = estatisticas$n[estatisticas$sex == "m"]

diff_medias = round(abs(diferenca), 2)
ci_low = round(ci$conf.low, 2)
ci_high = round(ci$conf.high, 2)

Visualizações

# Histograma por sexo
p1 = 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") +
    labs(title = "Distribuição dos scores IAT por sexo",
         x = "Score IAT",
         y = "Frequência")

# Boxplot com pontos
p2 = iat %>% 
    ggplot(aes(x = sex, y = d_art)) + 
    geom_quasirandom(width = .1) + 
    stat_summary(geom = "point", fun.y = "mean", color = "red", size = 5) +
    labs(title = "Distribuição dos scores IAT",
         x = "Sexo",
         y = "Score IAT")

# Intervalo de confiança da diferença
p3 = ci %>%
    ggplot(aes(
        x = "",
        y = statistic,
        ymin = conf.low,
        ymax = conf.high
    )) +
    geom_pointrange() +
    geom_point(size = 3) + 
    labs(title = "Intervalo de Confiança da Diferença",
         x = "Diferença",
         y = "IAT homens - mulheres")

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

Conclusões

# Exibindo as estatísticas calculadas
estatisticas
ci

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.47, desv. padrão 0.55, N = 117).

Homens tiveram uma associação negativa com a matemática, portanto menor que a das mulheres (média 0.22, desv. padrão 0.49, N = 38).

Houve portanto uma pequena diferença entre homens e mulheres (diferença das médias 0.24, 95% CI [-0.42, -0.06]).

A partir desta amostra, estimamos que 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.

Justificativa das Conclusões

  1. Associação Negativa com a Matemática: Os scores do IAT (d_art) são construídos de forma que valores positivos indicam uma associação implícita mais forte entre conceitos de arte e positividade (ou matemática e negatividade). Como tanto a média das mulheres (0.47) quanto a dos homens (0.22) são valores positivos, isso significa que ambos os grupos, em média, apresentaram uma associação implícita negativa em relação à matemática. Ou seja, tendem a associar matemática com negatividade e/ou arte com positividade.

  2. Magnitude da Associação nas Mulheres (Média): A média do score IAT para as mulheres foi de 0.47. De acordo com as diretrizes de interpretação para o IAT, um score de 0.15 é considerado um viés pequeno, 0.35 um viés médio e 0.65 um viés grande. Como 0.47 está entre 0.35 e 0.65, a associação negativa das mulheres com a matemática pode ser classificada como de intensidade média.

  3. Magnitude da Associação nos Homens (Pequena): A média do score IAT para os homens foi de 0.22. Comparando com a mesma escala (0.15 pequeno, 0.35 médio), 0.22 está mais próximo de um viés pequeno. Isso indica que, embora também apresentem uma associação negativa com a matemática, essa associação é menos pronunciada do que a observada nas mulheres.

  4. Diferença entre Homens e Mulheres (Pequena a Média e Estatisticamente Significativa): A diferença das médias (homens - mulheres) foi de -0.24. O sinal negativo indica que a média dos homens é menor (menos negativa/mais próxima de zero) que a das mulheres. O valor absoluto dessa diferença (0.24) sugere uma magnitude de efeito que se aproxima de um viés pequeno a médio na escala do IAT (0.15 para pequeno, 0.35 para médio). O Intervalo de Confiança de 95% para essa diferença foi de [-0.42, -0.06].

    • Significância Estatística: Como o intervalo de confiança não inclui o zero, podemos inferir que a diferença observada é estatisticamente significativa. Isso significa que é improvável que a diferença que vimos na amostra seja puramente devido ao acaso, e provavelmente existe uma diferença real na população entre homens e mulheres em sua associação implícita com a matemática.
    • Magnitude da Diferença: O intervalo de confiança nos dá uma estimativa do quão grande essa diferença pode ser na população. Ele varia de -0.42 a -0.06. Isso indica que, na população, os homens têm uma associação negativa com a matemática que é entre 0.06 e 0.42 pontos menos forte (ou mais próxima de neutra) do que a das mulheres. Embora estatisticamente presente, a magnitude da diferença pode ser classificada como pequena a média, o que justifica a necessidade de mais dados para uma estimativa mais precisa da sua relevância prática.

Parte 2: Bootstraps Implementados Manualmente e Comparação

1. Bootstrap a partir de uma biblioteca (Revisão)

Conforme a análise inicial, utilizamos a função boot() da biblioteca boot para gerar R = 2000 amostras bootstrap e calcular o intervalo de confiança de 95% para a diferença das médias (homens - mulheres) usando o método BCa (Bias-Corrected and Accelerated). Este método é robusto e ajusta para o viés e a assimetria da distribuição bootstrap, oferecendo um intervalo de confiança mais preciso em muitas situações.

2. Bootstrap Implementado Manualmente

Vamos agora implementar o processo de bootstrap “do zero” para calcular o mesmo estimador (diferença das médias entre homens e mulheres) e construir um intervalo de confiança usando o método percentil.

# Definindo o número de amostras bootstrap
R_manual = 2000

# Vetor para armazenar as diferenças das médias de cada amostra bootstrap
diferencas_bootstrap = numeric(R_manual)

# Realizando o bootstrap manual
for (i in 1:R_manual) {
    # Amostrar com reposição da população original
    amostra_bootstrap = iat[sample(nrow(iat), replace = TRUE), ]
    
    # Calcular médias para homens e mulheres na amostra bootstrap
    estatisticas_bootstrap = amostra_bootstrap %>%
        group_by(sex) %>%
        summarise(
            media = mean(d_art, na.rm = TRUE) # Adicionado na.rm para lidar com NA, se houver
        )
    
    # Extrair médias para homens e mulheres (garantir que ambos existem)
    media_m_boot = ifelse("m" %in% estatisticas_bootstrap$sex, 
                          estatisticas_bootstrap$media[estatisticas_bootstrap$sex == "m"], NA)
    media_f_boot = ifelse("f" %in% estatisticas_bootstrap$sex, 
                          estatisticas_bootstrap$media[estatisticas_bootstrap$sex == "f"], NA)
    
    # Calcular a diferença (homens - mulheres) e armazenar
    diferencas_bootstrap[i] = media_m_boot - media_f_boot
}

# Remover NA's se alguma amostra bootstrap não contiver um dos sexos (raro mas possível)
diferencas_bootstrap = na.omit(diferencas_bootstrap)

# Calculando o Intervalo de Confiança de 95% pelo método Percentil
ci_percentil_low = quantile(diferencas_bootstrap, 0.025)
ci_percentil_high = quantile(diferencas_bootstrap, 0.975)

# Exibir os resultados do bootstrap manual
print(paste("IC 95% (Percentil) Manual: [", round(ci_percentil_low, 2), ", ", round(ci_percentil_high, 2), "]", sep = ""))
## [1] "IC 95% (Percentil) Manual: [-0.43, -0.05]"

Visualização da Distribuição Bootstrap Manual

Agora vamos visualizar a distribuição das amostras bootstrap do estimador. Isso nos ajuda a entender a forma da distribuição, verificar a presença de assimetria ou viés, e complementar a interpretação dos intervalos de confiança.

# Histograma da distribuição das diferenças bootstrap
df_bootstrap = tibble(diferenca = diferencas_bootstrap)

df_bootstrap %>% 
    ggplot(aes(x = diferenca)) +
    geom_histogram(binwidth = 0.02, fill = "skyblue", color = "black", alpha = 0.7) +
    geom_density(color = "red", linewidth = 1) + 
    labs(
        title = "Distribuição das Diferenças das Médias (Bootstrap Manual)",
        x = "Diferença das Médias (Homens - Mulheres)",
        y = "Frequência / Densidade"
    ) +
    geom_vline(xintercept = ci_percentil_low, linetype = "dashed", color = "blue") +
    geom_vline(xintercept = ci_percentil_high, linetype = "dashed", color = "blue") +
    geom_vline(xintercept = mean(diferencas_bootstrap), linetype = "solid", color = "darkgreen") +
    annotate("text", x = mean(diferencas_bootstrap) - 0.05, y = max(ggplot_build(df_bootstrap %>% ggplot(aes(x = diferenca)) + geom_histogram(binwidth = 0.02))$data[[1]]$count)*0.8, label = paste("Média:", round(mean(diferencas_bootstrap), 2)), color = "darkgreen", hjust = 0) +
    annotate("text", x = ci_percentil_low, y = max(ggplot_build(df_bootstrap %>% ggplot(aes(x = diferenca)) + geom_histogram(binwidth = 0.02))$data[[1]]$count)*0.7, label = paste("IC 2.5%:", round(ci_percentil_low, 2)), color = "blue", hjust = 0) +
    annotate("text", x = ci_percentil_high, y = max(ggplot_build(df_bootstrap %>% ggplot(aes(x = diferenca)) + geom_histogram(binwidth = 0.02))$data[[1]]$count)*0.6, label = paste("IC 97.5%:", round(ci_percentil_high, 2)), color = "blue", hjust = 1)

Justificativa do Método de IC (Percentil)

O método do intervalo de confiança percentil é escolhido para a implementação manual por sua simplicidade conceitual e facilidade de cálculo. Ele simplesmente utiliza os percentis da distribuição empírica das estatísticas bootstrap para definir os limites do intervalo. Para um IC de 95%, por exemplo, tomamos o 2.5º e o 97.5º percentis dos valores bootstrap. Isso é intuitivo, pois se presume que esses percentis englobam 95% dos valores mais prováveis da estatística de interesse.

No entanto, é importante notar que o método percentil assume que a distribuição bootstrap é simétrica e aproximadamente centrada no parâmetro real. Se a distribuição for enviesada ou muito assimétrica, o método percentil pode não ser o mais preciso. O método BCa, usado na biblioteca boot na Parte 1, é geralmente preferível por corrigir esses potenciais problemas de viés e assimetria, tornando-o mais robusto para uma variedade maior de distribuições.

3. Comparação das Conclusões

Vamos agora comparar os intervalos de confiança obtidos pelo método BCa (biblioteca boot) e pelo método Percentil (implementação manual).

# IC da biblioteca (BCa)
ci_bca_low = round(ci$conf.low, 2)
ci_bca_high = round(ci$conf.high, 2)

# IC manual (Percentil)
ci_percentil_low_exibicao = round(ci_percentil_low, 2)
ci_percentil_high_exibicao = round(ci_percentil_high, 2)

print(paste("IC 95% (BCa) da biblioteca: [", ci_bca_low, ", ", ci_bca_high, "]", sep = ""))
## [1] "IC 95% (BCa) da biblioteca: [-0.44, -0.06]"
print(paste("IC 95% (Percentil) manual: [", ci_percentil_low_exibicao, ", ", ci_percentil_high_exibicao, "]", sep = ""))
## [1] "IC 95% (Percentil) manual: [-0.43, -0.05]"
# Visualização da comparação
comparacao_df = tibble(
    Metodo = c("BCa (Biblioteca)", "Percentil (Manual)"),
    Estimativa = c(ci$statistic, mean(diferencas_bootstrap)),
    Lower = c(ci$conf.low, ci_percentil_low),
    Upper = c(ci$conf.high, ci_percentil_high)
)

comparacao_df %>% 
    ggplot(aes(x = Metodo, y = Estimativa, ymin = Lower, ymax = Upper)) +
    geom_pointrange(size = 1.2, linewidth = 1) +
    geom_hline(yintercept = 0, linetype = "dashed", color = "gray") +
    labs(
        y = "Diferença das Médias (Homens - Mulheres)",
        x = "Método do Bootstrap"
    ) +
    geom_text(aes(x = Metodo, # Posição horizontal do texto (Método)
                  y = Upper, # Posição vertical do texto (limite superior do intervalo)
                  label = paste0("[ ", round(Lower, 2), ", ", round(Upper, 2), " ]")),
              nudge_y = 0.02, # Desloca o texto ligeiramente para cima do limite superior
              hjust = 0.5,  # Centraliza o texto horizontalmente sobre o ponto
              vjust = 0,    # Alinha o texto na parte de baixo do ponto de início
              size = 3.5,
              color = "blue") # Mantém a cor para melhor contraste

Análise Comparativa

Ao comparar os intervalos de confiança obtidos pelos dois métodos, observamos que:

  • Consistência: Ambos os intervalos de confiança (BCa e Percentil) são esperados a serem semelhantes, especialmente se a distribuição bootstrap da estatística for razoavelmente simétrica e não muito enviesada. Pequenas variações são normais devido a diferenças nos algoritmos e na natureza da reamostragem.
  • Interpretação: Ambos os intervalos continuam a não incluir o zero, reforçando a conclusão de que há uma diferença estatisticamente significativa entre as associações implícitas de homens e mulheres com a matemática. A direção da diferença (negativa) também é consistente, indicando que a associação dos homens é menos negativa (ou mais próxima de neutra) que a das mulheres.
  • Precaução: Se houvesse uma grande discrepância entre os dois intervalos, especialmente se um cruzasse o zero e o outro não, isso indicaria a necessidade de uma investigação mais aprofundada da distribuição bootstrap e potencialmente a preferência por métodos mais avançados como o BCa. No entanto, para a maioria dos casos, o método percentil fornece uma boa estimativa inicial e é excelente para demonstrar o conceito fundamental do bootstrap.