“中的错误”;as.data.frame.default(x[[i]],optional=TRUE):无法强制类‘&引用;功能“’;到一个data.frame“;使用gamlss函数(或lme()时)

“中的错误”;as.data.frame.default(x[[i]],optional=TRUE):无法强制类‘&引用;功能“’;到一个data.frame“;使用gamlss函数(或lme()时),r,nlme,beta-distribution,gamlss,R,Nlme,Beta Distribution,Gamlss,我正在尝试使用gamlss包,使用以下代码拟合一个膨胀的Beta回归混合模型: # Minimal reproducible example: efficiency <- rbeta(n = 85, shape1 = 2, shape2 = 2, ncp = 2) # My actual variable contains several "ones", but it does not matter here distance <- rpois(n = 85, l

我正在尝试使用
gamlss
包,使用以下代码拟合一个膨胀的Beta回归混合模型

# Minimal reproducible example:
efficiency <- rbeta(n = 85, shape1 = 2, shape2 = 2, ncp = 2) # My actual variable contains several "ones", but it does not matter here
distance <- rpois(n = 85, lambda = 4)
manager_id <- c(rep(1, 10), rep(2, 2), 3:75)
manager_id <- as.factor(manager_id)
eff <- data.frame(efficiency, distance, manager_id)

mod1 <- gamlss::gamlss(efficiency~distance + gamlss::re(random = ~1|manager_id, method = "ML"),
                      data = eff, family = gamlss.dist::BEOI())
我相信错误来自
nlme::lme()
函数,该函数由
gamlss::re()
调用以适应随机效果,因为当我不包含这部分代码时,它工作正常。我也许可以使用
gamlss::random()
而不是
gamlss::re()
来适应随机效果,但这些函数的帮助页面指出,当响应变量的正常性假设无法满足时,应使用
re()


有人能帮我解决这个问题吗?

FYI,停止使用
data.frame(cbind(..)
,只使用
data.frame
;列名和数据基本相同,但使用当前方法时,因子会转换回字符串(请参见
str(eff)
,在我的控制台中显示
num
)。我不知道这是否会破坏随机效应,但这是分类变量和连续变量之间的外观差异
manager\u id
。(我没有安装
gamlss
,因此无法进一步测试。)祝你好运@谢谢你的评论,我会相应地修改代码。然而,在我的实际数据集中,
manager\u id
确实是一个
因素,因此错误是由其他因素触发的。如果在看起来正常之前使用
re()
而不使用
gamlss::
,实际上我不知道为什么,但我找不到re()源代码,也许我们不能从gamlss@BastienDucreux你说得对,谢谢!这确实很奇怪,但现在代码工作了(然而模型似乎不适合我的数据,但这是另一个问题)。
Error in as.data.frame.default(x[[i]], optional = TRUE) : 
  cannot coerce class ‘"function"’ to a data.frame