R WRS ancova 函数:if (nuhat < 2) stop("The degrees of freedom must be greater than or equal to 2") 出错

R WRS ancova function: Error in if (nuhat < 2) stop("The degrees of freedom must be greater than or equal to 2")

我想 运行 来自 WRS2 包的强大的 ANCOVA (https://rdrr.io/cran/WRS2/man/ancova.html)。 'ratio' 是我的 DV,'bait' 是预测变量,'session' 是协变量。

我使用以下函数:

ancova_model = ancova(ratio ~ bait + session, data = training_data)

这是我的数据集:

但是,我收到以下错误消息:

if (nuhat < 2) stop("自由度必须大于或等于 2") 错误: 在 TRUE/FALSE 需要的地方缺少值 此外: 警告信息: 1: 在 min(sub[vecn >= 12]) 中: min 没有非遗漏参数;返回信息 2: 在 max(sub[vecn >= 12]) 中: max 没有非缺失参数;返回 -Inf

知道我做错了什么吗?

问题在于稳健的 ANCOVA 确定协变量的 5 个点,然后在每个点上对独立组执行 yuen t 检验。因此,我怀疑在如此小的样本中,协变量对两组具有完全相同的值,最终可能会发生在这些点中的每个点(因此 df < 2)对每个组进行一次观察。每组只有一个观察值,无法计算 t 检验,因此无法计算误差。

解决此问题的一种方法是,您可以尝试更改测量组比较的协变量点的数量和类型,如下所示:ancova(ratio ~ bait + session, data = training_data, pts = c(5,10))。这可能会给你一个结果,但也可能会抛出警告消息,表明测试是在太少的情况下进行的,这意味着你不能真正相信结果。

在我看来协变量无论如何都没有多大意义。如果我没记错的话,这只是表明两组(水果和兔子)是在同一会话中录制的。因此,这些群体实际上可能是依赖的。您可以使用函数 yuend.

代替相关的 yuen t 检验