gpt4 book ai didi

r - R 中 wilcox.test 的替代方案

转载 作者:行者123 更新时间:2023-12-02 09:44:53 28 4
gpt4 key购买 nike

我正在尝试在 R 中使用 wilcox.test 进行显着性测试。我想基本上测试一个值 x 是否在分布内/外显着 d.

我正在执行以下操作:

d = c(90,99,60,80,80,90,90,54,65,100,90,90,90,90,90)
wilcox.test(60,d)



Wilcoxon rank sum test with continuity correction

data: 60 and d
W = 4.5, p-value = 0.5347
alternative hypothesis: true location shift is not equal to 0

Warning message:
In wilcox.test.default(60, d) : cannot compute exact p-value with ties

基本上,我测试的大范围数字的 p 值是相同的。

我已经尝试过 coin 包中的 wilcox_test(),但我无法让它根据发行版测试值。

是否有替代此测试的方法,可以执行相同的操作并且知道如何处理关系?

最佳答案

您对不准确的结果有多担心?我猜想对于这种大小的数据集来说,近似值是合理的。 (我确实设法让 coin::wilcox_test 工作,并且结果并没有太大不同......)

d <- c(90,99,60,80,80,90,90,54,65,100,90,90,90,90,90)
pfun <- function(x) {
suppressWarnings(w <- wilcox.test(x,d)$p.value)
return(w)
}
testvec <- 30:120
p1 <- sapply(testvec,pfun)
library("coin")
pfun2 <- function(x) {
dd <- data.frame(y=c(x,d),f=factor(c(1,rep(2,length(d)))))
return(pvalue(wilcox_test(y~f,data=dd)))
}
p2 <- sapply(testvec,pfun2)
library("exactRankTests")
pfun3 <- function(x) {wilcox.exact(x,d)$p.value}
p3 <- sapply(testvec,pfun3)

图片:

par(las=1,bty="l")
matplot(testvec,cbind(p1,p2,p3),type="s",
xlab="value",ylab="p value of wilcoxon test",lty=1,
ylim=c(0,1),col=c(1,2,4))
legend("topright",c("stats::wilcox.test","coin::wilcox_test",
"exactRankTests::wilcox.exact"),
lty=1,col=c(1,2,4))

enter image description here

(exactRankTests 按请求添加,但鉴于它不再维护并推荐 coin 包,我不确定它的可靠性。您是您自己找出这些过程之间的差异以及最好使用哪个...)

这里的结果是有道理的——问题只是你的力量很低。如果您的值完全超出数据范围,对于 n=15,则概率类似于 2*(1/16)=0.125 [即您的样本最终成为排列中第一个或最后一个元素的概率],这与此处的最小值不太相同(wilcox.test:p=0.105,wilcox_test: p=0.08),但这可能是一个近似问题,或者我可能有一些细节错误。尽管如此,它的大致情况是正确的。

关于r - R 中 wilcox.test 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25918867/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com