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

R中基于dplyr的向量化wilcox.test函数p值与原函数不一致原因问询

结果不一致的核心原因

  • 参数传递位置错误:你自定义函数中paired = TRUE参数错误传给了broom::tidy(),而不是wilcox.test(),相当于自定义函数实际执行的是非配对Wilcoxon秩和检验,和你后续调用原生函数用的配对检验逻辑完全不同。由于broom::tidy会静默忽略未定义的额外参数,这个错误不会触发报错,很难直接定位。
  • 次要原因:缺失值处理逻辑可显式声明,避免不同场景下默认处理规则不同带来的偏差,可在wilcox.test中增加na.action = na.omit参数明确成对删除含NA的观测。

修正后的自定义函数代码

vect_wilcox <- function(df, grouping_variable, x, y){
  df %>% 
    group_by({{grouping_variable}}) %>%  
    # 将paired参数移入wilcox.test的括号内
    group_map(~ broom::tidy(wilcox.test(pull(.x[x]), pull(.x[y]), paired = TRUE, na.action = na.omit))) %>%
    enframe %>%
    unnest(value) %>%
    mutate(df %>% distinct({{grouping_variable}}))
}

验证说明

运行修正后的函数后,输出的new_p.value和原生计算的old_p.value结果完全一致,可直接复现验证。

内容的提问来源于stack exchange,提问作者T. Walter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:57:02