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

使用rstatix::anova_test遇列不存在或报错的问题咨询

解决方法与分析

1. 报错根源

  • 你的数据框是分组数据框(grouped_df),分组变量为Total_Devices,调用anova_test时函数会遍历每个分组子数据框,但子数据框中已不包含Total_Devices列,这是第一个报错的核心原因。
  • 直接传递df$size_range这类向量给dv/within参数不符合rstatix::anova_test的语法要求,该函数需要接收列名(符号或字符串)而非直接向量,这引发了第二个报错。

2. 修复ANOVA测试的代码

先取消数据框分组,再正确调用函数:

# 取消分组
df_ungrouped <- dplyr::ungroup(df)

# 运行单因素ANOVA(Total_Devices是独立分组,用between参数)
res_anova <- rstatix::anova_test(data = df_ungrouped, dv = size_range, between = Total_Devices)

# 查看结果
print(res_anova)

注意:这里用between而非within,因为Total_Devices是独立分组(每个观测仅属于2或3中的一组),不是重复测量的组内变量。

3. 是否改用t-test?

完全可以。因为你的Total_Devices只有2个水平(2和3),此时独立样本t-test和单因素ANOVA的结果完全等价:ANOVA的F值等于t值的平方,两者的p值一致。

若选择t-test,代码如下:

# 取消分组并剔除缺失值
df_clean <- df %>%
  dplyr::ungroup() %>%
  tidyr::drop_na(size_range)

# 运行独立样本t-test
res_ttest <- rstatix::t_test(df_clean, size_range ~ Total_Devices)

# 查看结果
print(res_ttest)

补充说明

  • 数据中size_range存在NA值,建议先用drop_na()剔除,避免缺失值干扰统计结果。
  • 若后续Total_Devices扩展到3个及以上水平,ANOVA会更适合;仅两组时,t-test的结果解读更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:52:39