[R] Weighted Mann-Whitney-Wilcoxon-Test
Alexander Sommer
Alexander.Sommer at tu-dortmund.de
Tue Aug 26 15:28:38 CEST 2014
On Tuesday, August 19, 2014 9:46 PM Thomas Lumley <tlumley at uw.edu> wrote:
>> Is anyone aware of an(other) implementation in R?
> survey::svyranktest
Oh, that easy. Thanks a lot.
Actually, in my case the weights do not derive from some selection probabilities, but your test works anyway.
For completeness (and this time with a working example):
set.seed(seed = 123)
count.x <- NULL
count.y <- NULL
j <- 1
for (i in sample(x = 10:20, size = 20, replace = TRUE)){
count.x[j] <- sample(x = 0:i, size = 1)
count.y[j] <- i - count.x[j]
j <- j + 1
}
data <- data.frame(x.portion = (count.x/(count.x + count.y)),
y.portion = (count.y/(count.x + count.y)),
group = c(rep("A", 12), rep("B", 8)),
weight = (count.x + count.y)
)
I first considered the unweighted case with
library(package = survey)
design <- svydesign(ids = ~0, data = data)
svyranktest(formula = x.portion ~ group, design = design)
and compared it to the default Wilcoxon test by
wilcox.test(formula = x.portion ~ group, data = data, exact = FALSE, correct = FALSE)
Or, if you prefer
library(package = coin)
wilcox_test(formula = x.portion ~ group, data = data)
The resulting p-values differ, as I understood due to an approximation in package /survey/.
Now, finally, the weighted case:
design <- svydesign(ids = ~0, data = data, weights = ~weight)
svyranktest(formula = x.portion ~ group, design)
And, by the way, package /survey/ seems also to be the preferable way, if you want to go for a parametric test. Once again, the unweighted case first:
design <- svydesign(ids = ~0, data = data)
svyttest(formula = x.portion ~ group, design)
And, yet again, the results differ from the default t test
t.test(formula = x.portion ~ group, data = data)
This time, I guess, it is due to the way standard errors are computed.
Finally (this time for real), the weighted case:
design <- svydesign(ids = ~0, data = data, weights = ~weight)
svyttest(x.portion ~ group, design)
Note that function /wtd.t.test/ from package /weights/ depends on the scale of the weights, /svyttest/ not.
Thomas, one more time: thank you for your help.
Cheers,
Alex
--
Alexander Sommer
wissenschaftlicher Mitarbeiter
Technische Universität Dortmund
Fakultät Erziehungswissenschaft, Psychologie und Soziologie
Forschungsverbund Deutsches Jugendinstitut/Technische Universität Dortmund
Vogelpothsweg 78
44227 Dortmund
Telefon: +49 231 755-8189
Fax: +49 231 755-6553
E-Mail: Alexander.Sommer at tu-dortmund.de
WWW: http://www.forschungsverbund.tu-dortmund.de/
More information about the R-help
mailing list