Распределение перестановки вашей тестовой статистики не обязательно будет симметричным, поэтому вы не можете сделать это таким образом. Вместо этого вы добавляете оба хвоста. В вашем случае двух независимых выборок нулевая гипотеза состоит в том, что два параметра местоположения равны. Предполагая непрерывные распределения и равный разброс в обеих группах, мы имеем взаимозаменяемость при нулевой гипотезе. Тестовая статистика - это разница в средних значениях, где E ( T ) = 0 под нулем.TЕ( Т)= 0
Значение для в исходном образце равно T emp , а его значения для перестановок T ⋆ . ♯ ( ⋅ ) - это сокращение от «количества» чего-либо, например, ♯ ( T ⋆ ) - это число тестовых статистик перестановок. Тогда p- значение для двусторонней гипотезы равно p ts = p left + p right , гдеTTэйT⋆♯ ( ⋅ )♯( Т⋆)ппТ.С.= роставил+ рправильно
поставил= ♯ ( Т⋆< =мин ( тэй, - Тэй) )♯ ( Т⋆)
пправильно= ♯ ( Т⋆> =Макс ( Тэй, - Тэй) )♯ ( Т⋆)
(при условии, что у нас есть полное распределение перестановок). Давайте сравним оба подхода для случая двух независимых выборок, когда мы можем вычислить точное (полное) распределение перестановок.
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
пcoin
поставил≠ рправильнопт с
> (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
п
поставил= ♯ ( Т⋆< =мин ( тэй, - Тэй) ) + 1♯ ( Т⋆)+1
пправильно= ♯ ( Т⋆> =Макс ( Тэй, - Тэй) ) + 1♯ ( Т⋆)+1
пТ.С.= ♯ ( абс ( Т⋆)> =абс ( Тэй) )+1♯ ( Т⋆) + 1
п