繁体   English   中英

eval(predvars, data, env) 中的错误:找不到对象“有用”

[英]Error in eval(predvars, data, env) : object 'helpfulness' not found

>hyp1.model1<-clmm(helpfulness~reflectiontype+session+(1+reflectiontype|participant),data=hyp1data)
>summary(hyp1.model1) #summary was produced but I won't replicate it here
>anova(hyp1.model1,type="II")
Error in eval(predvars,data,env):object 'helpfulness' not found

我想在 hyp1.model1 上运行 anova - 该模型最初运行良好,并且在我使用此变量的任何其他代码中都没有出现“乐于助人”的问题。 到目前为止,R 与数据集的链接完全正确,并且数据集中的变量列标题和 R 中的变量标签之间似乎没有区别(因此所有其他代码都已识别出它)。

当我想运行 anova 时,为什么这会突然成为一个问题?

我的猜测是您的数据框hyp1data没有helpfulness 当您在第一行中创建模型时,它会在本地环境中找到(您在 R 中创建的所有变量)。 但是,当您运行第三行时,代码会专门查找您指定的数据框中的helpfulness信息。 如果它不存在,它会像这样失败。

尝试:

hyp1data$helpfulness <- helpfulness

那能解决吗?

我遇到了同样的错误,但觉得答案可以更具描述性。 我相信错误的出现是因为stats::anova() car::Anova() stats::anova()car::Anova()函数没有识别ordinal::clmm模型的方法。

要使用ordinal::clmm()运行累积链接混合模型并获取后续偏差表,请确保同时加载ordinalRVAideMemoire包。 RVAideMemoire提供了使用Anova.clmm()获取偏差表的方法。

# fake data
set.seed(5)
hyp1data <- data.frame(
  participant = c(paste0("id", 1:50),paste0("id", 1:50), paste0("id", 1:50),paste0("id", 1:50)),
  session = c(rep(1, 50), rep(2,50), rep(1, 50), rep(2,50)),
  reflectiontype = c(rep(1, 100), rep(2, 100)),
  helpfulness = sample(1:7, 100, replace = TRUE))

hyp1data[,1:3] <- lapply(hyp1data[,1:3], factor)
hyp1data$helpfulness <- factor(hyp1data$helpfulness, ordered = TRUE)

# load libraries
library(ordinal)
library(RVAideMemoire)

# use RVAideMemoire::Anova.clmm
hyp1.model1<-clmm(helpfulness~reflectiontype+session+(1+reflectiontype|participant),data=hyp1data)
summary(hyp1.model1) 
RVAideMemoire::Anova.clmm(hyp1.model1,type="II")

只是要注意另一个可能的解决方案:当我的数据被称为df时,我遇到了同样的问题——在函数调用的某个地方,这一定与 df 函数混淆了。 重命名我的数据框解决了它。

我找到了一种使用“RVAideMemoire”包和“car”包进行方差分析的方法:

法比安·布罗斯 (2019)。 使用混合效应模型分析可接受性评级数据。 版本 1.0。 咪咪。 在线:www.fabianbross.de/mixedmodels.pdf。

最后的部分很好地描述了如何以这种方式跟踪 clmm 模型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM