Comment déterminer la taille d'effet d'un test de somme de rang de Wilcoxon dans R?

8

Je veux déterminer s'il y a une différence dans les valeurs p moyennes entre deux groupes. Pour ce faire, j'effectue un test de somme de rang de Wilcoxon (les données ne sont pas normalement distribuées). Jusqu'ici tout va bien. Enfin, je veux calculer la taille d'effet correspondante. Malheureusement, R ne fournit pas cela. Il ne fournit pas non plus de valeur az avec laquelle la taille de l'effet peut être facilement calculée en utilisant: taille de l'effet = z / sqrt (N)

voici un exemple de code R:

a=rep(0:1,each=20)                            #grouping variable
b=c(rnorm(20, .03,.01), rnorm(20, .02, .009)) #vector of p-values

d=cbind(a,b)

test = wilcox.test(b ~ a, data = d)     #perform Wilcoxon rank-sum test
test

Quelqu'un sait-il comment obtenir la taille de l'effet?

tapis
la source
3
Bienvenue chez SO. J'ai signalé votre question pour migration vers www.crossvalidated.com, car votre question est plus statistique qu'autre chose. En bref: le test Wilcoxon RANK fonctionne avec les rangs, donc je ne sais pas de quelle taille d'effet vous parlez. Évidemment, cela ne vous donne pas de valeur az, car celle-ci est liée aux tests paramétriques, pas à des tests non paramétriques comme Wilcoxon. Wilcoxon doit être interprété en termes de changement d'emplacement.
Joris Meys
4
Le test de somme de rang de Wilcoxon n'évalue pas une différence de moyennes : il teste l'inégalité stochastique. La mesure appropriée d'une taille d'effet est donc la probabilité que , moins la valeur nulle de . B>A1/2
whuber

Réponses:

13

L'estimateur qui correspond au test de Wilcoxon est l'estimateur de Hodges-Lehmann; il est retourné en wilcox.testutilisant l' conf.int=TRUEoption, sous "différence de lieu".

Pour votre exemple:

> wilcox.test(b~a,data=d, conf.int=TRUE)

    Wilcoxon rank sum test

data:  b by a 
W = 355, p-value = 6.914e-06
alternative hypothesis: true location shift is not equal to 0 
95 percent confidence interval:
 0.008657301 0.021523993 
sample estimates:
difference in location 
            0.01442617 

Pour en savoir plus sur le Wilcoxon et les hypothèses sous-jacentes, et ce qu'il teste réellement, et d'autres estimateurs non paramétriques, ce document est (peut-être) utile: www.stat.umn.edu/geyer/old03/5102/notes/rank.pdf

jbowman
la source
Donc, ce que vous dites, c'est que la taille de l'effet est wilcox.test(b~a,data=d, conf.int=TRUE)$estimate / sqrt(20)correcte?
2

Obtenez le z de votre formule en

library(coin)
mydf <- as.data.frame(d)
wilcoxsign_test(b ~ a, data = mydf, distribution="exact")

et calculez la taille de l'effet avec votre formule, en définissant N sur 40

Primigenius
la source
1
Je soupçonne que cette réponse serait plus intéressante si vous pouviez fournir des détails supplémentaires sur les raisons d'utiliser la coin::wilcoxsign_testfonction R. Parlez-vous également de la formule OP, ? effect size=z/N
chl
La raison pour laquelle j'utilise coin :: wilcoxsign_test est qu'il calcule une valeur az.
Primigenius
1
Une autre façon d'obtenir z à partir de wilcox.test standard est l'algorithme Andy Fields implémenté dans sa fonction rFromWilcox . Et oui, je faisais référence à la taille de l'effet = z / sqrt (N).
Primigenius
2
Merci pour la clarification, même si je ne suis toujours pas sûr que cette valeur z soit une mesure appropriée de la taille de l'effet. (+1)
chl