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

R中执行多变量Shapiro test出现unused argument报错如何解决

报错原因及解决方法

报错原因

shapiro.test() 函数仅接受单个数值向量作为输入参数,不支持直接接收dplyr管道传递的分组数据框,也不支持将列名作为第二个参数传入,你的写法不符合函数的参数要求,因此触发了参数未使用的报错。

实现代码

你可以结合dplyr的分组功能完成分组Shapiro检验,支持单变量、多变量分组两种场景:

基础写法(无需额外安装包)

仅按Gender分组检验PCV正态性

library(dplyr)

macquarie %>%
  group_by(Gender) %>%
  summarise(
    shapiro_stat = shapiro.test(PCV)$statistic,
    p_value = shapiro.test(PCV)$p.value
  )

同时按Gender、Year双变量分组检验PCV正态性

只需修改group_by的入参即可:

macquarie %>%
  group_by(Gender, Year) %>%
  summarise(
    shapiro_stat = shapiro.test(PCV)$statistic,
    p_value = shapiro.test(PCV)$p.value
  )

结构化输出写法(搭配broom包)

如果需要输出更规整的完整检验结果,可以搭配broom包的tidy()函数使用:

library(dplyr)
library(broom)

# 双变量分组示例
macquarie %>%
  group_by(Gender, Year) %>%
  group_modify(~ tidy(shapiro.test(.x$PCV))) %>%
  ungroup()

注意事项

  • Shapiro-Wilk检验对样本量限制严格,若分组子集的样本量超过5000,函数会直接报错,此时建议改用QQ图、直方图结合经验判断正态性,不需要强制做统计检验。
  • 如果你要分析Gender、Year对PCV的影响,Shapiro检验只是判断方差分析/线性回归前提假设的步骤,完成正态性检验后,你可以拟合线性模型lm(PCV ~ Gender * Year, data = macquarie)进一步分析变量的影响效应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:15:03