Não, o valor p de uma distribuição assintoticamente válida nem sempre é menor que um valor p exato. Considere dois exemplos de testes "não paramétricos" tradicionais:
Teste Wilcoxon Rank-Sum para mudança de local (por exemplo, mediana) para duas amostras independentes de tamanho n1 e n2 calcula a estatística de teste da seguinte maneira:
- coloque todos os valores observados em uma grande amostra de tamanho N=n1+n2
- classifique esses valores de 1 , … , N
- somar as classificações para o primeiro grupo, chame isso eu+N. Freqüentemente, a estatística do teste é definida comoW=eu+N-n1(n1+ 1 )2 (essa estatística de teste é idêntica à U de Mann-Whitney), mas isso não importa para o formato da distribuição.
A distribuição exata para eu+N para fixo n1 e n2é encontrado gerando todas as combinações possíveis de classificações para o primeiro grupo e calculando a soma em cada caso. A aproximação assintótica usa , isto é, uma aproximação normal-normal da estatística de teste transformada em .(Nn1)z: =eu+n-n1( N+ 1 ) / 2(n1n2( N+ 1 ) ) / 12√∼ N( 0 , 1 )z
Da mesma forma, o teste de Kruskal-Wallis-H para mudança de localização (por exemplo, mediana) para amostras independentes de usa uma estatística de teste baseada nas somas de classificação em cada grupo : . Novamente, a distribuição exata de H é encontrada gerando todas as combinações de classificações para os grupos. Para 3 grupos, existem dessas combinações. A aproximação assintótica usa uma .pR+ jjH: =12N( N+ 1 )∑j = 1p1nj(R+ j-njN+ 12)2(Nn1) (N-n1n2)χ2p - 1
Agora podemos comparar as formas de distribuição em termos da função de distribuição cumulativa para determinados tamanhos de grupo. O valor p (do lado direito) para um dado valor da estatística de teste é igual a para a distribuição contínua. No caso discreto, o valor p para (o -ésimo valor possível para a estatística de teste) é . O diagrama mostra que a distribuição exata produz valores p às vezes maiores, às vezes menores, no teste H: para (o 32º de 36 possíveis valores H), o valor p exato é 0,075 ( com o código abaixo ), enquanto o valor p aproximado é 0,082085 ( ). ParaF( )t1 - F( T )tmm1 - F(tm - 1)H= 5sum(dKWH_08[names(dKWH_08) >= 5])
1-pchisq(5, P-1)
H= 2(15º valor possível), o valor p exato é 0,425 ( sum(dKWH_08[names(dKWH_08) >= 2])
), o aproximado é igual a 0,3678794 ( 1-pchisq(2, P-1)
).
#### Wilcoxon-Rank-Sum-Test: exact distribution
n1 <- 5 # group size 1
n2 <- 4 # group size 2
N <- n1 + n2 # total sample size
ranks <- t(combn(1:N, n1)) # all possible ranks for group 1
LnPl <- apply(ranks, 1, sum) # all possible rank sums for group 1 (Ln+)
dWRS_9 <- table(LnPl) / choose(N, n1) # exact probability function for Ln+
pWRS_9 <- cumsum(dWRS_9) # exact cumulative distribution function for Ln+
muLnPl <- (n1 * (N+1)) / 2 # normal approximation: theoretical mean
varLnPl <- (n1*n2 * (N+1)) / 12 # normal approximation: theoretical variance
#### Kruskal-Wallis-H-Test: exact distribution
P <- 3 # number of groups
Nj <- c(3, 3, 2) # group sizes
N <- sum(Nj) # total sample size
IV <- rep(1:P, Nj) # factor group membership
library(e1071) # for permutations()
permMat <- permutations(N) # all permutations of total sample
getH <- function(rankAll) { # function to calc H for one permutation
Rj <- tapply(rankAll, IV, sum)
H <- (12 / (N*(N+1))) * sum((1/Nj) * (Rj-(Nj*(N+1) / 2))^2)
}
Hscores <- apply(permMat, 1, getH) # all possible H values for given group sizes
dKWH_08 <- table(round(Hscores, 4)) / factorial(N) # exact probability function
pKWH_08 <- cumsum(dKWH_08) # exact cumulative distribution function
Note que eu calculo a distribuição exata de H gerando todas as permutações, nem todas as combinações. Isso é desnecessário e computacionalmente muito mais caro, mas é mais simples escrever no caso geral ... Agora, faça o gráfico comparando as formas das funções.
dev.new(width=12, height=6.5)
par(mfrow=c(1, 2), cex.main=1.2, cex.lab=1.2)
plot(names(pWRS_9), pWRS_9, main="Wilcoxon RST, N=(5, 4): exact vs. asymptotic",
type="n", xlab="ln+", ylab="P(Ln+ <= ln+)", cex.lab=1.4)
curve(pnorm(x, mean=muLnPl, sd=sqrt(varLnPl)), lwd=2, n=200, add=TRUE)
points(names(pWRS_9), pWRS_9, pch=16, col="red")
abline(h=0.95, col="blue")
legend(x="bottomright", legend=c("exact", "asymptotic"),
pch=c(16, NA), col=c("red", "black"), lty=c(NA, 1), lwd=c(NA, 2))
plot(names(pKWH_08), pKWH_08, type="n", main="Kruskal-Wallis-H, N=(3, 3, 2):
exact vs. asymptotic", xlab="h", ylab="P(H <= h)", cex.lab=1.4)
curve(pchisq(x, P-1), lwd=2, n=200, add=TRUE)
points(names(pKWH_08), pKWH_08, pch=16, col="red")
abline(h=0.95, col="blue")
legend(x="bottomright", legend=c("exakt", "asymptotic"),
pch=c(16, NA), col=c("red", "black"), lty=c(NA, 1), lwd=c(NA, 2))
Observe que esses testes exigem que as distribuições tenham a mesma forma em cada grupo, caso contrário, não são um teste apenas para localização.