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

R按Soll分组配对Wilcoxon检验代码正确性及语法差异疑问

问题1:现有代码是否符合检验逻辑

你的原有代码核心逻辑方向正确,但存在2个不符合需求的问题,是你结果困惑的主要原因:

  • 没有指定单侧检验参数:你的研究假设是湿度随距离增大显著下降,属于单侧检验,但wilcox.test默认执行双侧检验,和你的分析目标不匹配
  • 隐式依赖因子顺序:公式写法默认按Transtyp的因子水平顺序计算差值,你当前因子顺序为c("2", "5"),刚好对应「距离2的湿度 - 距离5的湿度」的比较方向,若因子顺序反转会得到完全相反的结果,建议显式确认避免出错

修正后的代码如下,增加alternative = "greater"参数,对应假设「距离2组的湿度显著大于距离5组的湿度」:

library(tidyverse)
df %>% 
  split(.$Soll) %>%
  map_df( ~broom::tidy(
    wilcox.test(Feuchte ~ Transtyp, 
                data = .x, 
                paired = TRUE,
                alternative = "greater"
                )), 
    .id = "Soll")

运行后可以看到结果:

  • Soll=1192的p值为1,实际数据中所有距离5的湿度都高于距离2,完全不符合你的研究假设
  • Soll=149的单侧p值为0.109,在0.1的显著性水平下边缘支持「湿度随距离增大下降」的假设
问题2:公式写法和逗号写法的区别

两种写法没有本质计算差异,仅适用场景不同:

  • 公式写法wilcox.test(因变量 ~ 分组变量, data = 数据框):适合长表结构数据,不需要手动拆分两组数值,会自动按分组因子的水平提取数据比较,代码更简洁,适配你当前按Soll分组迭代的场景
  • 逗号分隔写法wilcox.test(组1向量, 组2向量, paired = TRUE):适合已经拆分为两个等长向量的宽表数据,需要自行保证两个向量的配对顺序完全对应,若用在你的场景中需要先将数据转宽,步骤更繁琐

你当前的长表结构直接使用公式写法即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:57:03