Die Permutationsverteilung Ihrer Teststatistik ist nicht garantiert symmetrisch, daher können Sie dies nicht auf diese Weise tun. Stattdessen fügen Sie beide Schwänze hinzu. In Ihrem Fall von zwei unabhängigen Stichproben lautet die Nullhypothese, dass die beiden Standortparameter gleich sind. Unter der Annahme kontinuierlicher Verteilungen und gleicher Streuung in beiden Gruppen haben wir Austauschbarkeit unter der Nullhypothese. Die Teststatistik ist die Mittelwertdifferenz mit unter der Null.TE(T)=0
Der Wert für in der ursprünglichen Stichprobe ist und seine Werte für die Permutationen . ist die Abkürzung für "Anzahl" von etwas, z. B. ist die Anzahl der Permutationsteststatistiken. Dann ist der Wert für die zweiseitige Hypothese , wobeiTTempT⋆♯(⋅)♯(T⋆)ppts=pleft+pright
pleft=♯(T⋆<=min(Temp,−Temp))♯(T⋆)
pright=♯(T⋆>=max(Temp,−Temp))♯(T⋆)
(vorausgesetzt, wir haben die vollständige Permutationsverteilung). Vergleichen wir beide Ansätze für den Fall zweier unabhängiger Stichproben, wenn wir die genaue (vollständige) Permutationsverteilung berechnen können.
set.seed(1234)
Nj <- c(9, 8) # group sizes
DVa <- rnorm(Nj[1], 5, 20)^2 # data group 1
DVb <- rnorm(Nj[2], 10, 20)^2 # data group 2
DVab <- c(DVa, DVb) # data from both groups
IV <- factor(rep(c("A", "B"), Nj)) # grouping factor
idx <- seq(along=DVab) # all indices
idxA <- combn(idx, Nj[1]) # all possible first groups
# function to calculate test statistic for a given permutation x
getDM <- function(x) { mean(DVab[x]) - mean(DVab[!(idx %in% x)]) }
resDM <- apply(idxA, 2, getDM) # test statistic for all permutations
diffM <- mean(DVa) - mean(DVb) # empirical stest statistic
Berechnen Sie nun die Werte und validieren Sie die vorgeschlagene Lösung mit der Implementierung in Rs Paket. Beachten Sie, dass , also ist es wichtig, wie Sie berechnen .pcoin
pleft≠prightpts
> (pL <- sum(resDM <= min(diffM, -diffM)) / length(resDM)) # left p-value
[1] 0.1755245
> (pR <- sum(resDM >= max(diffM, -diffM)) / length(resDM)) # right p-value
[1] 0.1585356
> 2*pL # doubling left p-value
[1] 0.351049
> 2*pR # doubling right p-value
[1] 0.3170712
> pL+pR # two-sided p-value
[1] 0.3340601
> sum(abs(resDM) >= abs(diffM)) / length(resDM) # two-sided p-value (more concise)
[1] 0.3340601
# validate with coin implementation
> library(coin) # for oneway_test()
> oneway_test(DVab ~ IV, alternative="two.sided", distribution="exact")
Exact 2-Sample Permutation Test
data: DVab by IV (A, B)
Z = 1.0551, p-value = 0.3341
alternative hypothesis: true mu is not equal to 0
PS Für den Monte-Carlo-Fall, in dem wir nur aus der Permutationsverteilung abtasten, würden die Werte wie folgt definiert:p
pleft=♯(T⋆<=min(Temp,−Temp))+1♯(T⋆)+1
pright=♯(T⋆>=max(Temp,−Temp))+1♯(T⋆)+1
pts=♯(abs(T⋆)>=abs(Temp))+1♯(T⋆)+1
Der Grund für das intuitive Hinzufügen eines weiteren extremen Permutationsfalls ist, dass wir auch die empirische Stichprobe zählen müssen. Andernfalls könnte der Permutations- Wert 0 sein, was im kontinuierlichen Fall nicht möglich ist (siehe hier , Hinweis: Einige Texte empfehlen diese Korrektur, andere nicht).p