Teste dos sinais
O teste dos sinais é o teste não paramétrico mais simples. Ele usa apenas a direção de cada observação em relação a um valor de referência (positivo ou negativo), ignorando magnitudes completamente. Isso o torna extremamente robusto, mas também menos poderoso do que alternativas que aproveitam mais os dados.
Como funciona
Dadas \(n\) observações (ou diferenças), registre o sinal de cada uma em relação à mediana hipotética \(M_0\):
- \(+\) se a observação está acima de \(M_0\).
- \(-\) se a observação está abaixo de \(M_0\).
- Empates (igualdade exata a \(M_0\)) são descartados.
Sob \(H_0\) (a verdadeira mediana é \(M_0\)), cada observação não empatada tem igual probabilidade de ser positiva ou negativa, então o número de sinais positivos \(S^+\) segue uma distribuição \(\text{Binomial}(n, 0{,}5)\).
| Teste | \(H_0\) | \(H_1\) | valor-p |
|---|---|---|---|
| Bilateral | \(M = M_0\) | \(M \neq M_0\) | \(2 \times P(X \leq \min(S^+, S^-))\) |
| Unilateral à direita | \(M = M_0\) | \(M > M_0\) | \(P(X \geq S^+)\) |
| Unilateral à esquerda | \(M = M_0\) | \(M < M_0\) | \(P(X \leq S^+)\) |
em que \(X \sim \text{Binomial}(n, 0{,}5)\) e \(n\) é o número de observações não empatadas.
Exemplos
Exemplo 1: dados pareados (método de ensino)
Dez estudantes fazem uma prova antes e depois de uma nova intervenção pedagógica. Diferenças nos escores (depois - antes):
\[+3,\; +1,\; -2,\; +4,\; +2,\; 0,\; -1,\; +3,\; +1,\; -2\]
Passo 1: descarte a diferença zero. \(n = 9\).
Passo 2: conte os sinais. \(S^+ = 6\) (positivos), \(S^- = 3\) (negativos).
Passo 3: valor-p bilateral a partir de \(X \sim \text{Binomial}(9, 0{,}5)\):
\[p = 2 \times P(X \leq 3) = 2 \times \sum_{k=0}^{3} \binom{9}{k} 0{,}5^9 = 2 \times 0{,}254 = 0{,}508\]
Decisão: \(p = 0{,}508 > 0{,}05\), não rejeitamos \(H_0\).
Nenhuma evidência significativa de que o método de ensino mudou a mediana dos escores. A divisão 6-3 nos sinais não é inusual sob \(H_0\).
Exemplo 2: teste de uma amostra para a mediana
Um serviço de entregas afirma que seu tempo mediano de entrega é de 48 horas. Um grupo de consumidores registra 15 entregas: 11 demoraram mais de 48 horas, 3 demoraram menos, e 1 demorou exatamente 48 horas.
Passo 1: descarte o empate. \(n = 14\), \(S^+ = 11\), \(S^- = 3\).
Passo 2: teste unilateral à direita (\(H_1: M > 48\)). Valor-p:
\[p = P(X \geq 11) = \sum_{k=11}^{14} \binom{14}{k} 0{,}5^{14} = 0{,}029\]
Decisão: \(p = 0{,}029 < 0{,}05\), rejeitamos \(H_0\).
Há evidência significativa de que o tempo mediano real de entrega excede 48 horas.

Teste dos sinais vs. teste de Wilcoxon de postos sinalizados
Ambos são alternativas não paramétricas ao teste \(t\) pareado, mas usam quantidades diferentes de informação:
| Teste dos sinais | Wilcoxon de postos sinalizados | |
|---|---|---|
| Usa a direção | Sim | Sim |
| Usa a magnitude | Não | Sim (via postos) |
| Assume diferenças simétricas | Não | Sim |
| Poder | Menor | Maior |
| Melhor para | Dados ordinais, outliers, assimetria forte | Diferenças contínuas, aproximadamente simétricas |
⚠️ Use Wilcoxon de postos sinalizados quando puder
O teste dos sinais descarta toda a informação sobre magnitude, o que custa poder. Para os mesmos dados, o teste de Wilcoxon de postos sinalizados é quase sempre mais poderoso porque ordena as diferenças absolutas e considera seus tamanhos relativos.
Use o teste dos sinais quando:
- Os dados são ordinais e as diferenças não têm uma magnitude significativa (por exemplo, preferências ordenadas).
- As diferenças são tão fortemente assimétricas ou têm outliers tão extremos que até os postos são pouco confiáveis.
- Você precisa do mínimo absoluto de suposições.
Na maioria das situações com dados pareados contínuos, o teste de Wilcoxon de postos sinalizados é a melhor escolha.
Executando o teste em R
Não há uma função sign.test() dedicada no R base. A abordagem mais fácil usa o teste binomial diretamente:
# Example 2: delivery times
# S+ = 11 successes out of n = 14 non-tied observations
binom.test(x = 11, n = 14, p = 0.5, alternative = "greater")
# For paired data: compute differences first
diffs <- c(3, 1, -2, 4, 2, -1, 3, 1, -2) # excluding the zero
s_plus <- sum(diffs > 0)
n <- sum(diffs != 0)
binom.test(s_plus, n, p = 0.5, alternative = "two.sided")
# The BSDA package also provides sign.test()
library(BSDA)
sign.test(diffs, md = 0, alternative = "two.sided")
💡 Aproximação para amostras grandes
Para \(n > 25\), a distribuição binomial sob \(H_0\) é bem aproximada por uma distribuição normal:
\[Z = \frac{S^+ - n/2}{\sqrt{n/4}} \sim N(0,1)\]
Isso é útil para cálculos rápidos manuais. Para valores-p exatos com qualquer \(n\), use a binomial diretamente como mostrado acima.