Capítulo 21 Cálculo amostral no R

O cálculo do tamanho da amostra é fundamental para garantir a validade estatística de um estudo. No R, esse cálculo pode ser realizado de forma prática utilizando diversos pacotes.

21.1 Principais Pacotes para Cálculo Amostral

  • pwr: Utilizado para análise de poder estatístico e cálculo do tamanho da amostra para diferentes testes (t-test, ANOVA, correlação, etc.).
  • epiDisplay: Oferece funções para cálculos amostrais em estudos epidemiológicos.
  • epiR: Bastante utilizado em epidemiologia, com funções para diferentes desenhos de estudo.
  • samplesize: Possui métodos para cálculo de tamanho amostral em diferentes contextos.

21.2 Exemplo de cálculo amostral para teste t

# Instale o pacote se necessário
# install.packages("pwr")
library(pwr)

# Cálculo do tamanho da amostra para detectar um efeito de tamanho médio (d = 0.5)
# com poder de 80% e nível de significância de 5%
pwr.t.test(d = 0.5, power = 0.8, sig.level = 0.05, type = "two.sample")

O uso de funções e pacotes específicos no R torna o cálculo amostral mais acessível, permitindo maior precisão no planejamento de estudos. Sempre leve em conta os parâmetros do seu estudo, como efeito esperado, variância, poder e nível de significância.

No exemplo os seguintes parâmetros foram utilizados:

  • d = 0.5
    Tamanho do efeito (Effect size): Representa a magnitude da diferença que se espera detectar entre as médias dos grupos, em unidades de desvio padrão. Quanto maior o efeito, mais fácil é detectá-lo com uma amostra menor.
    • O tamanho do efeito pode ser estimado a partir de dados prévios, estudos semelhantes ou com base em uma suposição informada.
    • Categorias comuns: pequeno (~0,2), médio (~0,5) e grande (~0,8).
  • power = 0.8
    Poder estatístico (Power): É a probabilidade de detectar uma diferença real quando ela de fato existe (ou seja, de rejeitar corretamente a hipótese nula se ela for falsa).
    • Poder = 1 - β, onde β é a probabilidade de erro tipo II (falso negativo).
    • O valor padrão mais utilizado é 0,80 (ou 80%).
  • sig.level = 0.05
    Nível de significância (α): É a probabilidade de rejeitar a hipótese nula quando ela é verdadeira (erro tipo I, falso positivo).
    • O valor padrão é 0,05 (ou 5%), indicando que aceitamos até 5% de chance de um falso positivo.
  • type = “two.sample”
    Indica que estamos comparando dois grupos independentes (teste t para duas amostras).

Interpretação dos Resultados

Ao rodar o comando acima, o R retorna o tamanho mínimo de amostra necessário em cada grupo para que seja possível detectar uma diferença de tamanho de efeito d = 0.5 com 80% de poder e 5% de nível de significância, usando um teste t para duas amostras.

Por exemplo, o resultado pode ser algo assim:

     Two-sample t test power calculation 

              n = 63.76561
              d = 0.5
      sig.level = 0.05
          power = 0.8
    alternative = two.sided

NOTE: n is number in *each* group

Explicação:

  • n ≈ 64: Você precisaria de pelo menos 64 participantes em cada grupo para ter 80% de chance de detectar uma diferença de tamanho médio (0,5 desvios padrão) entre os grupos, com risco de 5% de um falso positivo.

Considerações

  • O tamanho da amostra depende diretamente do tamanho do efeito esperado, do poder estatístico desejado e do nível de significância escolhido.
  • Quanto maior o efeito esperado, menor precisa ser a amostra.
  • Quanto maior o poder ou menor o nível de significância, maior será o tamanho da amostra necessária.
  • Use dados prévios, literatura ou cálculos exploratórios para definir o tamanho do efeito.

21.3 O que é o d de Cohen?

O d de Cohen é uma medida padronizada do tamanho do efeito para comparar a diferença entre duas médias, levando em conta a variabilidade dos dados. Ele é muito utilizado para quantificar o quão grande é a diferença entre dois grupos em termos de desvios padrão.

21.3.1 Fórmula Geral

\[ d = \frac{\bar{X}_1 - \bar{X}_2}{s_p} \]

Onde:

  • \(\bar{X}_1\) = média do grupo 1
  • \(\bar{X}_2\) = média do grupo 2
  • \(s_p\) = desvio padrão combinado (pooled) dos dois grupos

Como calcular o desvio padrão combinado

\[ s_p = \sqrt{ \frac{(n_1-1)s_1^2 + (n_2-1)s_2^2}{n_1 + n_2 - 2} } \]

Onde:

  • \(n_1\), \(n_2\) = tamanhos das amostras dos grupos 1 e 2
  • \(s_1\), \(s_2\) = desvios padrão dos grupos 1 e 2

21.3.2 Exemplo prático em R

Suponha:

  • Grupo 1: média = 10, desvio padrão = 2, n = 30
  • Grupo 2: média = 8, desvio padrão = 2.5, n = 35
media1 <- 10
media2 <- 8
sd1 <- 2
sd2 <- 2.5
n1 <- 30
n2 <- 35

# Desvio padrão combinado
sp <- sqrt( ((n1-1)*sd1^2 + (n2-1)*sd2^2) / (n1 + n2 - 2) )

# d de Cohen
d <- (media1 - media2) / sp
d
## [1] 0.8758557

Valores típicos para d de Cohen:

  • 0.2: efeito pequeno
  • 0.5: efeito médio
  • 0.8: efeito grande

Assim, quanto maior o valor de d, maior a diferença entre os grupos em relação à variabilidade dos dados.

Explicação didática:

Pense no d de Cohen como uma régua que compara a diferença entre as médias de dois grupos, levando em conta o quanto os dados variam dentro desses grupos.

  • Se d é pequeno, significa que a diferença entre as médias dos grupos é pequena em relação à “bagunça” (variação) dos dados – ou seja, os grupos são parecidos.
  • Se d é grande, significa que a diferença entre as médias é grande em comparação com a variação dos dados – ou seja, os grupos são bem diferentes.

Resumindo:

Um valor alto de d indica que os grupos são realmente diferentes entre si, enquanto um valor baixo mostra que eles são muito parecidos, considerando o quanto os dados “dispersam” dentro de cada grupo.

21.4 Exemplos práticos

A seguir, apresento exemplos práticos para Medicina, Psicologia e Educação Física.

21.4.1 Medicina: Comparação de dois tratamentos para dor

Cenário:
Um estudo clínico quer comparar dois medicamentos para dor crônica.

  • Tamanho do efeito esperado (Cohen’s d): 0.2 (pequeno)
  • Poder desejado: 0.80
  • Nível de significância: 0.05
library(pwr)
# Calculando o tamanho da amostra necessária para cada grupo
pwr.t.test(d = 0.2, power = 0.8, sig.level = 0.05, type = "two.sample")
## 
##      Two-sample t test power calculation 
## 
##               n = 393.4057
##               d = 0.2
##       sig.level = 0.05
##           power = 0.8
##     alternative = two.sided
## 
## NOTE: n is number in *each* group

Tamanho da amostra: 394 em cada grupo

21.4.2 Psicologia: Intervenção para redução de ansiedade

Cenário:
Um psicólogo quer testar se uma nova terapia reduz a ansiedade em relação ao tratamento padrão.

  • Tamanho do efeito esperado (Cohen’s d): 0.6 (médio/grande)
  • Poder desejado: 0.80
  • Nível de significância: 0.05
library(pwr)
# Calculando o tamanho da amostra necessária para cada grupo
pwr.t.test(d = 0.6, power = 0.8, sig.level = 0.05, type = "two.sample")
## 
##      Two-sample t test power calculation 
## 
##               n = 44.58577
##               d = 0.6
##       sig.level = 0.05
##           power = 0.8
##     alternative = two.sided
## 
## NOTE: n is number in *each* group

Tamanho da amostra: 45 em cada grupo

21.4.3 Educação Física: Efeito de um programa de treinamento na performance de corrida

Cenário:
Um preparador físico quer comparar a performance de alunos submetidos a dois programas de treinamento diferentes.

  • Tamanho do efeito esperado (Cohen’s d): 0.8 (grande)
  • Poder desejado: 0.80
  • Nível de significância: 0.05
library(pwr)
# Calculando o tamanho da amostra necessária para cada grupo
pwr.t.test(d = 0.8, power = 0.8, sig.level = 0.05, type = "two.sample")
## 
##      Two-sample t test power calculation 
## 
##               n = 25.52458
##               d = 0.8
##       sig.level = 0.05
##           power = 0.8
##     alternative = two.sided
## 
## NOTE: n is number in *each* group

Tamanho da amostra: 26 em cada grupo

  • O resultado de cada função indica o número mínimo de participantes em cada grupo para atingir o poder estatístico desejado.

21.5 Como calcular o poder do teste quando você já tem o tamanho da amostra

O pacote pwr do R não serve apenas para calcular o tamanho da amostra necessário. Ele também permite descobrir o poder do teste caso você já saiba quantos participantes terá em cada grupo.

21.5.1 Exemplo

Suponha que você fez um estudo com 26 participantes em cada grupo e espera encontrar um tamanho de efeito grande (d = 0.8). O nível de significância que você escolheu é o padrão, 0,05. Você quer saber: com essa amostra, qual é o poder do meu teste?

Você pode usar:

pwr.t.test(n = 26, d = 0.8, power = NULL, sig.level = 0.05, type = "two.sample")
## 
##      Two-sample t test power calculation 
## 
##               n = 26
##               d = 0.8
##       sig.level = 0.05
##           power = 0.8074866
##     alternative = two.sided
## 
## NOTE: n is number in *each* group

Explicação dos parâmetros

  • n = 20: tamanho da amostra em cada grupo já definido.
  • d = 0.8: tamanho do efeito (Cohen’s d), aqui considerado grande.
  • sig.level = 0.05: nível de significância (chance máxima de um falso positivo).
  • type = "two.sample": teste t para dois grupos independentes.
  • power = NULL: ao deixar o parâmetro power em NULL, você está dizendo ao R para calcular qual é o poder do teste com esses valores.

Nesse caso o poder do teste é de 70%.

O que acontece nesse cálculo?

O R resolve a equação para o poder estatístico usando os valores que você forneceu. Ou seja, ele vai informar a probabilidade de detectar uma diferença real (de tamanho d = 0.8) entre os grupos, com 26 participantes em cada grupo, considerando o nível de significância especificado.

Por que isso é útil?

  • Se o poder calculado for menor que 0,80 (80%), pode ser interessante aumentar a amostra para garantir maior chance de detectar diferenças reais.
  • Se o poder já for maior que 0,80, seu estudo tem boa sensibilidade para o efeito esperado.

Resumindo

  • Você pode usar pwr.t.test para calcular o poder do teste, bastando informar n e deixar power = NULL.
  • Isso é útil para analisar experimentos já realizados ou planejar com base em restrições de amostra.

21.6 Cálculo do Tamanho da Amostra para Testes t Pareado e Wilcoxon

Além do teste t para amostras independentes, você pode calcular o tamanho da amostra para outras situações, como o teste t pareado e os testes não paramétricos de Wilcoxon (para amostras pareadas ou não pareadas). Para os testes não paramétricos, recomenda-se aumentar o tamanho da amostra em 15% em relação ao cálculo do teste t correspondente.

21.6.1 Teste t Pareado

Cenário:
Você quer testar se uma intervenção reduz o nível de estresse dos mesmos participantes antes e depois do tratamento.

  • Tamanho do efeito esperado (d de Cohen): 0.5
  • Poder desejado: 0.80
  • Nível de significância: 0.05
library(pwr)
# Tamanho da amostra para teste t pareado
pwr.t.test(d = 0.5, power = 0.8, sig.level = 0.05, type = "paired")
## 
##      Paired t test power calculation 
## 
##               n = 33.36713
##               d = 0.5
##       sig.level = 0.05
##           power = 0.8
##     alternative = two.sided
## 
## NOTE: n is number of *pairs*

Observe o argumento type = “paired” indicando que o cálculo é para amostras pareadas.

21.6.2 Teste de Wilcoxon para Amostras Não Pareadas

Cenário:
Você deseja comparar dois grupos de pacientes com dados não normalmente distribuídos.

  • Tamanho do efeito esperado (d de Cohen): 0.5
  • Poder desejado: 0.80
  • Nível de significância: 0.05
library(pwr)
# Tamanho da amostra para teste t de duas amostras
pwr.t.test(d = 0.5, power = 0.8, sig.level = 0.05, type = "two.sample")
## 
##      Two-sample t test power calculation 
## 
##               n = 63.76561
##               d = 0.5
##       sig.level = 0.05
##           power = 0.8
##     alternative = two.sided
## 
## NOTE: n is number in *each* group
# Acrescentar 15% para o teste de Wilcoxon
63.76 * 1.15
## [1] 73.324

Acrescentando 15% ao cálculo amostral realizado com o pwr.t.test, são necessárias 74 amostras. Os testes não paramétricos, como o teste de Wilcoxon, geralmente apresentam menor poder estatístico em comparação aos testes paramétricos. Para compensar essa diferença e obter um poder semelhante ao dos testes paramétricos, recomenda-se aumentar o tamanho da amostra em cerca de 15%. Assim, o teste não paramétrico passa a ter uma chance semelhante de detectar um efeito real, caso ele exista.

21.6.3 Teste de Wilcoxon Pareado

Cenário:
Você avalia o desempenho dos mesmos alunos antes e depois de um programa de treinamento, com dados não normalmente distribuídos.

  • Tamanho do efeito esperado (d de Cohen): 0.5
  • Poder desejado: 0.80
  • Nível de significância: 0.05
library(pwr)
# Tamanho da amostra para teste t pareado
pwr.t.test(d = 0.5, power = 0.8, sig.level = 0.05, type = "paired")
## 
##      Paired t test power calculation 
## 
##               n = 33.36713
##               d = 0.5
##       sig.level = 0.05
##           power = 0.8
##     alternative = two.sided
## 
## NOTE: n is number of *pairs*
# Acrescentar 15% para o teste de Wilcoxon
34 * 1.15
## [1] 39.1

Acrescentando 15% ao cálculo amostral realizado com o pwr.t.test, são necessárias aproximadamente 40 amostras.