Non, la valeur p d'une distribution asymptotiquement valide n'est pas toujours inférieure à une valeur p exacte. Prenons deux exemples de tests "non paramétriques" traditionnels:
Le test de Wilcoxon Rank-Sum pour le décalage de localisation (par exemple, la médiane) pour deux échantillons indépendants de taille et calcule la statistique de test comme suit:n1n2
- mettre toutes les valeurs observées dans un grand échantillon de tailleN=n1+n2
- classe ces valeurs parmi1,…,N
- additionnez les rangs du premier groupe, appelez ceci . Souvent, la statistique de test est définie comme (cette statistique de test est alors identique à U de Mann-Whitney ), mais cela n'a pas d'importance pour la forme de distribution.L+NW=L+N−n1(n1+1)2
La distribution exacte de pour et fixes est trouvée en générant toutes les combinaisons possibles de rangs pour le premier groupe et en calculant la somme dans chaque cas. L'approximation asymptotique utilise , c'est-à-dire une approximation standard-normale de la statistique de test transformée en .L+Nn1n2(Nn1)z:=L+n−n1(N+1)/2(n1n2(N+1))/12√∼N(0,1)z
De même, le test de Kruskal-Wallis-H pour le changement de localisation (par exemple, la médiane) pour échantillons indépendants utilise une statistique de test basée sur les sommes de rang dans chaque groupe : . Encore une fois, la distribution exacte de H est trouvée en générant toutes les combinaisons de rangs pour les groupes. Pour 3 groupes, il existe ces combinaisons. L'approximation asymptotique utilise une .pR+jjH:=12N(N+1)∑j=1p1nj(R+j−njN+12)2(Nn1)(N−n1n2)χ2p−1
Maintenant, nous pouvons comparer les formes de distribution en termes de fonction de distribution cumulative pour des tailles de groupe données. La valeur de p (côté droit) pour une valeur donnée de la statistique de test est égale à pour la distribution continue. Dans le cas discret, la valeur de p pour (la ème valeur possible pour la statistique de test) est . Le diagramme montre que la distribution exacte produit des valeurs de p parfois plus grandes, parfois plus petites, dans le test H: Pour (la 32e des 36 valeurs H possibles), la valeur p exacte est de 0,075 ( avec le code ci-dessous ), tandis que la valeur p approximative est de 0,082085 ( ). PourF()t1−F(t)tmm1−F(tm−1)H=5sum(dKWH_08[names(dKWH_08) >= 5])
1-pchisq(5, P-1)
H=2(15e valeur possible), la valeur de p exacte est de 0,425 ( sum(dKWH_08[names(dKWH_08) >= 2])
), la valeur approximative est de 0,36678794 ( 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
Notez que je calcule la distribution exacte de H en générant toutes les permutations, pas toutes les combinaisons. C'est inutile, et beaucoup plus cher en termes de calcul, mais c'est plus simple à écrire dans le cas général ... Maintenant, faites le tracé en comparant les formes des fonctions.
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))
Notez que ces tests nécessitent que les distributions aient la même forme dans chaque groupe, sinon elles ne sont pas un test pour l'emplacement seul.