La distribution de permutation de votre statistique de test n'est pas garantie d'être symétrique, vous ne pouvez donc pas le faire de cette façon. Au lieu de cela, vous ajoutez les deux queues. Dans le cas de deux échantillons indépendants, l'hypothèse nulle est que les deux paramètres de localisation sont égaux. En supposant des distributions continues et une répartition égale dans les deux groupes, nous avons une interchangeabilité sous l'hypothèse nulle. La statistique de test est la différence de moyennes, avec sous le zéro.E ( T ) = 0TE(T)=0
La valeur de dans l'échantillon d'origine est , et ses valeurs pour les permutations . est l'abréviation de "nombre de" quelque chose, par exemple, est le nombre de statistiques de test de permutation. La valeur de l'hypothèse bilatérale est alors , oùT emp T ⋆ ♯ ( ⋅ ) ♯ ( T ⋆ ) p p ts = p gauche + p droiteTTempT⋆♯(⋅)♯(T⋆)ppts=pleft+pright
pleft=♯(T⋆<=min(Temp,−Temp))♯(T⋆)
pright=♯(T⋆>=max(Temp,−Temp))♯(T⋆)
(en supposant que nous avons la distribution de permutation complète). Comparons les deux approches pour le cas de deux échantillons indépendants lorsque nous pouvons calculer la distribution de permutation exacte (complète).
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
Maintenant, calculez les valeurs et validez la solution proposée avec l'implémentation dans le package de R. Observez que , donc il importe de quelle façon vous calculez .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 Pour le cas de Monte-Carlo où nous n'échantillons qu'à partir de la distribution de permutation, les valeurs de seraient définies comme ceci: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
La raison de l'ajout intuitif d'un cas de permutation extrême supplémentaire est que nous devons également compter l'échantillon empirique. Sinon, la valeur de permutation pourrait être 0, ce qui ne peut pas se produire dans le cas continu (voir ici , remarque: certains textes recommandent cette correction, d'autres non).p