Ergibt ein exakter Test immer einen höheren P-Wert als ein angenäherter Test?

8

Ich habe eine Simulation für den mcnemar-Test durchgeführt, und die Antwort schien ja zu sein.

Ich habe mich gefragt, ob dies immer der Fall sein kann, dass der genaue P-Wert höher (oder nicht kleiner) ist als der p-Wert, der durch eine Näherung erreicht wird.

ein Code zum Beispiel:

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
quelle

Antworten:

14

Nein, der p-Wert einer asymptotisch gültigen Verteilung ist nicht immer kleiner als ein exakter p-Wert. Betrachten Sie zwei Beispiele aus traditionellen "nicht parametrischen" Tests:

Der Wilcoxon-Rang-Summen-Test für die Ortsverschiebung (z. B. Median) für zwei unabhängige Stichproben der Größe und berechnet die Teststatistik wie folgt: n 2n1n2

  1. Geben Sie alle beobachteten Werte in eine große Stichprobe der GrößeN=n1+n2
  2. Rang diese Werte von1,,N
  3. Summiere die Ränge für die erste Gruppe und nenne dies . Oft wird die Teststatistik definiert als (diese Teststatistik ist dann identisch mit Mann-Whitneys U. ), aber das spielt für die Verteilungsform keine Rolle. W = L + N - n 1 ( n 1 + 1 )LN+W=LN+n1(n1+1)2

Die genaue Verteilung für für festes und wird ermittelt, indem alle möglichen Kombinationen von Rängen für die erste Gruppe generiert und die Summe berechnet werden in jedem Fall. Die asymptotische Näherung verwendet , dh eine Standard-Normal-Approximation der transformierten Teststatistik. n 1 n 2LN+n1n2(Nn1)z:=Ln+n1(N+1)/2(n1n2(N+1))/12N(0,1)z

In ähnlicher Weise verwendet der Kruskal-Wallis-H-Test für die Ortsverschiebung (z. B. Median) für unabhängige Stichproben eine Teststatistik basierend auf den Rangsummen in jeder Gruppe : . Wiederum wird die genaue Verteilung für H gefunden, indem alle Kombinationen von Rängen für die Gruppen erzeugt werden. Für 3 Gruppen gibt es solche Kombinationen. Die asymptotische Näherung verwendet eine -Verteilung.pR+jj(N.H:=12N(N+1)j=1p1nj(R+jnjN+12)2χ2p-1(Nn1)(Nn1n2)χp12

Jetzt können wir die Verteilungsformen hinsichtlich der kumulativen Verteilungsfunktion für gegebene Gruppengrößen vergleichen. Der (rechtsseitige) p-Wert für einen gegebenen Wert der Teststatistik entspricht für die kontinuierliche Verteilung. Im diskreten Fall ist der p-Wert für (der te mögliche Wert für die Teststatistik) . Das Diagramm zeigt, dass die exakte Verteilung im H-Test manchmal größere, manchmal kleinere p-Werte erzeugt: Für (der 32. von 36 möglichen H-Werten) beträgt der exakte p-Wert 0,075 ( mit dem folgenden Code ), während der ungefähre p-Wert 0,082085 ( ) beträgt . Fürt 1 - F ( t ) t m m 1 - F ( t m - 1 ) H = 5 H = 2F()t1F(t)tmm1F(tm1)H=5sum(dKWH_08[names(dKWH_08) >= 5])1-pchisq(5, P-1)H=2(15. möglicher Wert) beträgt der genaue p-Wert 0,425 ( sum(dKWH_08[names(dKWH_08) >= 2])), der ungefähre Wert 0,3678794 ( 1-pchisq(2, P-1)).

Geben Sie hier die Bildbeschreibung ein

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

Beachten Sie, dass ich die genaue Verteilung für H berechne, indem ich alle Permutationen und nicht alle Kombinationen generiere. Dies ist unnötig und rechenintensiver, aber im allgemeinen Fall einfacher aufzuschreiben ... Führen Sie nun den Plot aus, in dem die Funktionsformen verglichen werden.

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))

Beachten Sie, dass diese Tests erfordern, dass die Verteilungen in jeder Gruppe dieselbe Form haben, andernfalls handelt es sich nicht nur um einen Standorttest.

Karakal
quelle
2
(+1) Schöne Antwort und sehr sauberer R-Code!
Chl
Was für eine erstaunliche Antwort. Wenn ich es zweimal akzeptieren könnte - würde ich. Danke Caracal, ich muss noch viel lernen ...
Tal Galili
4

Nicht immer, obwohl normalerweise. Ich denke, es hängt von der Art der Statistik ab, dem Test. Ich saß nur da und probierte Pearson Chi-Quadrat und Likelihood Ratio Chi-Quadrat an Datensätzen mit 20 bis 100 Fällen aus. Für Pearson war die genaue Signifikanz in etwa 10% der Fälle geringer als die asymptotische Signifikanz. Für LR - 0%. Unten finden Sie eine beispielhafte Häufigkeitstabelle und die Tests, bei denen das Pearson-Chi-Quadrat das genaue Sig hat. kleiner als das asymptotische Sig.

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
quelle