Un test exact donne-t-il toujours une valeur P plus élevée qu'un test approximatif?

8

J'ai exécuté une simulation à ce sujet pour le test mcnemar, et la réponse semblait être oui.

Je me demandais si cela pouvait toujours être dit que la valeur P exacte est supérieure (ou non inférieure) à la valeur p qui est obtenue par une approximation.

du code par exemple:

set.seed(234)
n <- 100 # number of total subjects
P <- numeric(100)
P_exact <- numeric(100)
for(i in 1:100)
{
x = table(sample(1:2, n, T), sample(1:2, n, T))
P[i] <- mcnemar.test(x, correct = F)$p.v
P_exact[i] <- binom.test(x[2,1],x[1,2]+x[2,1])$p.valu
}

#for different n - the level of problem is worse
#plot(jitter(P,0,.01), P_exact )
plot(P, P_exact )
abline(0,1)
Tal Galili
la source

Réponses:

14

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

  1. mettre toutes les valeurs observées dans un grand échantillon de tailleN=n1+n2
  2. classe ces valeurs parmi1,,N
  3. 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.LN+W=LN+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 .LN+n1n2(Nn1)z:=Ln+n1(N+1)/2(n1n2(N+1))/12N(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+jnjN+12)2(Nn1)(Nn1n2)χp12

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()t1F(t)tmm1F(tm1)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)).

entrez la description de l'image ici

#### 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.

caracal
la source
2
(+1) Belle réponse et code R très propre!
chl
Quelle réponse incroyable. Si je pouvais l'accepter deux fois - je le ferais. Merci caracal, j'ai beaucoup à apprendre ...
Tal Galili
4

Pas toujours bien que d'habitude. Je suppose que cela dépend du type de statistique, du test. Je viens de m'asseoir et d'essayer le chi carré Pearson et le chi carré du rapport de vraisemblance sur 20 à 100 jeux de données de cas. Pour Pearson, j'ai trouvé que la signification exacte était plus petite que la signification asymptotique environ 10% du temps. Pour LR - 0%. Vous trouverez ci-dessous un exemple de tableau de fréquence et les tests, où le chi carré Pearson a le sig exact. moindre que le sig asymptotique.

7   12   4
26  12  17
6   10   6

Chi-Square Tests
                    Value      df   Asymp. Sig. (2-sided)   Exact Sig. (2-sided)
Pearson Chi-Square  8.756(a)    4       .068                   .067
Likelihood Ratio    8.876       4       .064                   .073

a   0 cells (.0%) have expected count less than 5. The minimum expected count is 5.94.
ttnphns
la source