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

R中调用eta_squared计算重复测量ANOVA效应量报aovlist类错误

报错原因说明

这个报错的触发逻辑非常直接:

  • 你用aov()搭配Error()子句拟合重复测量ANOVA时,输出的结果不是普通的aov类对象,而是特殊的aovlist(嵌套列表结构的方差分析对象)
  • 你调用的eta_squared(包括已弃用的eta_sq)函数,内部会先调用基础R的通用anova()函数从输入对象中提取方差分析表,但这个通用函数没有针对aovlist类的适配逻辑,找不到对应的处理方法,就会抛出“无适用方法”的错误。

额外说明:你目前写的模型公式其实不符合重复测量ANOVA的结构要求,Error(factor(id))的写法没有明确“每个被试下有3个重复测量时间点”的嵌套关系,就算效应量计算不报错,输出的F值和p值也是不准的。

可直接落地的解决方案
  • 第一步:修正依赖加载和模型公式
    先补充必要的包加载,调整误差项的嵌套写法,保证基础ANOVA结果正确:
    # 加载依赖包
    library(tidyverse) # 对应你用到的read_csv、数据长表转换功能
    library(effectsize) # 对应你要计算的eta平方
    library(car) # 用来做aovlist类的方差表提取
    
    filename = 'testdata.csv'
    testdata <- read_csv(filename)
    # 为每个独立观测/被试生成唯一id
    testdata$id <- factor(seq(nrow(testdata)))
    
    # 把宽表转成长表,适配aov的输入要求
    testdata <- testdata %>%
      pivot_longer(cols = c(c1, c2, c3),
                   names_to = "time",
                   values_to = "amplitude")
    testdata$time <- factor(testdata$time)
    
    # 修正重复测量的误差项写法,明确被试内的嵌套误差
    res.aov <- aov(amplitude ~ time + Error(id/time), data = testdata)
    # 先验证基础ANOVA结果可以正常输出
    summary(res.aov)
    
  • 第二步:适配aovlist结构计算效应量,避免类不匹配报错
    不要直接把res.aov(aovlist类)传给eta_squared,可以任选一种可行方案:
    1. 用car包的大写Anova()函数从aovlist中提取标准方差表,再计算效应量:
      # 从aovlist中提取规范的ANOVA表,自动适配重复测量的误差结构
      anova_result <- Anova(res.aov)
      # 传入提取好的方差表计算eta平方,不会触发方法不匹配的报错
      eta2 <- eta_squared(anova_result)
      
    2. 换用afex包的重复测量专用拟合接口,返回的对象天生兼容效应量计算函数,不需要手动适配:
      # 安装并加载afex包
      # install.packages("afex")
      library(afex)
      res.rm <- aov_car(amplitude ~ time + Error(id/time), data = testdata)
      # 直接计算效应量即可
      eta2 <- eta_squared(res.rm)
      
  • 零包依赖的手动计算方式
    如果不想额外加载其他包,也可以直接根据summary(res.aov)输出的平方和结果手动计算eta平方:
    单因素被试内的η²计算公式 = 目标因素的离均差平方和 /(目标因素的离均差平方和 + 对应嵌套层的残差平方和)
    从summary输出里找到time行的SS值,以及id/time误差层下的残差SS值,代入公式即可算出效应量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 03:45:07