r - 判断公式是否包含随机效应的最佳方法?

标签 r function lm lme4

我有一个公式列表,我想使用函数将其放入循环中。其中一些公式是随机效应模型,而另一些则是直接的线性模型。我希望该函数检测模型是否包含随机效应,如果是,请使用 lmer() 来拟合模型。否则,它应该使用 lm()。有关如何检查此条件的任何建议(除了将公式转换为字符串并检查括号)?在这个阶段,他们有相同的类(class),所以我不能只检查。我还可以使用错误处理来捕获 lmer() 从没有随机效应的模型返回错误并重新路由到常规 lm() 时,但这似乎也不必要地困惑.

下面的例子:

fit_models <- function(formula_list) {
  models <- list()
    for(ii in seq_along(formula_list)) {
      if(formula_list[[ii]] is lmer) { # Enter condition here
        print("lmer")
      } else {
        print("lm")
      }
  }
}

f1 <- formula(y ~ x)
f2 <- formula(y ~ 1 + x + (1 + x | z))
formulas <- c(f1, f2)

fit_models(formulas)

最佳答案

我会说

length(lme4::findbars(f))>0

应该可靠地检测包含随机效应组件的公式(在 lme4 意义上)。

From the right hand side of a formula for a mixed-effects model, determine the pairs of expressions that are separated by the vertical bar operator.

这是(隐含地)在 lme4 代码 here 中完成的测试...

关于r - 判断公式是否包含随机效应的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65204089/

相关文章:

r - 如何从 R 检查 OS X 版本?

r - 如何找到密码子的特定频率?

php - 在 PHP 中将方法作为参数传递

javascript - js 将值重新分配给函数中多个已声明的变量

r - 拆分因数、sapply 和 lm

python - statsmodels 线性回归 - patsy 公式以包含模型中的所有预测变量

c++ - 为什么函数参数在调用堆栈上比返回地址更早推送?

r - 如何在 lm 中指定参数估计之间的关系?

r - 使用 abline 将线性回归线添加到散点图中的每组点时出现编码错误

r - 最大化包含 pbivnorm 的似然函数