You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中使用Wilcox检验时,如何获取z值?

获取Wilcox检验的z值(R语言)

嘿,这个问题我之前做统计分析的时候也纠结过!Base R里的wilcox.test()默认只会返回W统计量和p值,但z值其实是可以通过两种方式轻松拿到的:

方法1:手动计算z值(基于W统计量)

Wilcoxon秩和检验的z值是W统计量经过正态近似标准化后的结果,我们可以利用检验返回的W值,结合样本量和结的修正来计算:

先跑一个示例检验:

set.seed(123)
group1 <- rnorm(20)
group2 <- rnorm(20, mean = 0.5)
test_result <- wilcox.test(group1, group2)

然后按步骤计算z值:

# 提取W统计量
W <- unname(test_result$statistic)
# 获取两组样本量
n1 <- length(group1)
n2 <- length(group2)

# 处理结的情况(如果数据有重复值,需要修正方差)
all_ranks <- rank(c(group1, group2))
tie_counts <- table(all_ranks)
tie_correction <- sum(tie_counts^3 - tie_counts)

# 计算W的均值和调整后的标准差
mu_W <- n1 * (n1 + n2 + 1) / 2
sigma_W <- sqrt(
  (n1 * n2 / 12) * 
  ( (n1 + n2 + 1) - tie_correction / ((n1 + n2) * (n1 + n2 - 1)) )
)

# 计算z值(加入连续性修正,和wilcox.test的默认逻辑一致)
z <- (W - mu_W - sign(W - mu_W) * 0.5) / sigma_W

# 查看结果,你可以根据需求选择保留符号或取绝对值
z

方法2:用coin包直接获取z值

如果你不想手动计算,可以用coin包的wilcox_test()函数,它会直接返回标准化的z统计量:

# 先安装包(第一次用的话)
# install.packages("coin")
library(coin)

# 执行检验,distribution参数可选exact/approximate
coin_test <- wilcox_test(group1 ~ group2, distribution = approximate())

# 提取z值
coin_test@statistic@teststatistic

小提示:Base R默认不输出z值,是因为当样本量较小时,正态近似的z值参考性不强,更推荐用精确检验的p值。但如果你的样本量足够大,需要报告z值的话,上面两种方法都能搞定~

内容的提问来源于stack exchange,提问作者sheetal_158

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:47:11