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

如何在R Studio中批量对多变量执行Wilcoxon检验

多变量两组Wilcoxon检验解决方案

可以通过将宽格式数据转换为长格式,配合rstatix::wilcox_test和dplyr的分组操作,一次性得到所有变量的检验统计量和p值,无需创建多个数据框。

完整代码示例

# 加载所需包(如果未安装先运行 install.packages(c("dplyr", "rstatix", "tidyr")))
library(dplyr)
library(rstatix)
library(tidyr)

# 假设你的数据框名为df(替换成你实际的数据集名称)
df <- structure(list(Sample = c("Full", "Full", "Full", "Full", "Full", "Full", "Full", "Full", "Full", "Full", "Full", "Full", "Full", "Full", "Full", "Full", "Full", "Full", "Full", "Full", "Control", "Control", "Control", "Control", "Control", "Control", "Control", "Control", "Control", "Control", "Control", "Control", "Control", "Control", "Control", "Control", "Control", "Control", "Control", "Control"), EBITDA = c(7027, 9521, 926, 7085, 739, 3055, 1084, 7051, 90.2, 1863, 3567, 1514, 15212, 921.9, 15222, 336, 128.52, 21.93, 118.09, 1019.4, 4732.8, 17776, 940.45, 5265, 659.3, 4590.1, 1014.9, 3198, 72.51, 2083, 4277, 433.29, 9653, 628, 7706, 108, 118.07, 98.19, 52.39, 1138), SALES = c(30638, 25636, 6100, 25392, 10321, 24114, 10573, 44152, 700.68, 11588, 40682, 39434, 71203, 1233.9, 45503, 3553, 1198.01, 120.1, 349.62, 4460.4, 22532, 42384, 5295.86, 43800, 10704.4, 30427.8, 9051.2, 35555, 857.08, 14125, 60613, 3302.25, 66639, 1583, 28878, 3967, 1216.73, 819.28, 327.41, 5065), Net.Income = c(5648, 2363, 29, 2603, 9, 748, 580, 2983, 26.84, 324, 2669, 99, 2269, 214.1, 3810, -675, 78.17, 11.56, 30.25, 530.5, 2767.5, 5768, 401.55, 1378, 143, 1461, 265.2, 1311, 18.46, 856, 885, 281.22, -561, 313, 2198, -446, 55.6, 34.5, 29.15, 593), Total.Assets = c(53362, 1181372, 8000, 56666, 16175, 30690, 11459, 75357, 1071.75, 18649, 68198, 72137, 281640, 7279, 94276, 6482, 776.36, 121.9, 1198.02, 6776.6, 32063, 1965283, 9194.81, 43395, 7871.5, 49544.5, 9038.8, 37694, 643.75, 18135, 68975, 8427.42, 158499, 10323, 58993, 3539, 1031.06, 717.73, 568.18, 7577), ROA = c(0.105843109, 0.002000217, 0.003625, 0.045935835, 0.000556414, 0.02437276, 0.050615237, 0.039584909, 0.025043107, 0.017373586, 0.039136045, 0.001372389, 0.008056384, 0.029413381, 0.040413255, -0.104134526, 0.10068486, 0.094845124, 0.025249098, 0.078284095, 0.086314443, 0.002934946, 0.043671054, 0.03175481, 0.018166804, 0.029488642, 0.029340178, 0.034780071, 0.028681942, 0.047201544, 0.012830736, 0.03337013, -0.003539455, 0.030320643, 0.037258658, -0.126024301, 0.053925296, 0.048068282, 0.051307594, 0.078263165)), class = "data.frame", row.names = c(NA, -40L))

# 转换为长格式并执行Wilcoxon检验
test_results <- df %>%
  pivot_longer(cols = -Sample, names_to = "Variable", values_to = "Value") %>%
  group_by(Variable) %>%
  wilcox_test(Value ~ Sample, detailed = TRUE) %>%
  select(Variable, statistic, p) # 选择需要的列(统计量、p值)

# 查看结果
print(test_results)

代码解释

  1. pivot_longer(cols = -Sample, ...):将除Sample外的所有变量转换为长格式,生成Variable(变量名)和Value(对应数值)两列,让所有变量的观测值都在同一列中。
  2. group_by(Variable):按变量分组,确保每个变量单独执行检验。
  3. wilcox_test(Value ~ Sample, detailed = TRUE):对每组变量执行Wilcoxon秩和检验,detailed=TRUE会返回完整的检验统计量(默认只返回p值)。
  4. select(...):筛选出需要的结果列,你可以根据需求添加其他列(如效应量、置信区间等)。

结果示例

输出会是类似这样的数据框,包含每个变量的检验统计量和p值:

# A tibble: 5 × 3
  Variable     statistic     p
  <chr>           <dbl> <dbl>
1 EBITDA            199 0.924
2 SALES             203 0.825
3 Net.Income        187 0.602
4 Total.Assets      200 0.901
5 ROA               211 0.589

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:10:24