嵌套后无法访问因变量以拟合 lmer 模型

问题描述 投票:0回答:1

我一直在尝试拟合这样的模型

mtcars %>% 
  mutate(vs = factor(vs), gear = factor(gear), carb = factor(carb), am = factor(am), 
         cyl = factor(cyl)) %>% nest_by(vs) %>% 
  do(fit = lmer(.,formula= mpg ~ cyl + disp + hp + (1 | am) +  (1 | vs)))

但不幸的是,我发现我无法访问 cyl 变量,正如我收到的错误中所报告的那样。

Error in eval(predvars, data, env) : object 'cyl' not found

任何人都可以帮我找出问题所在吗?

谢谢

r nested nest lme4
1个回答
2
投票

您可能想要拥抱整洁而忘记

do()
。您可能还想删除模型中的
vs
变量,因为您已选择为每个组执行单独的测试。

library(tidyverse)
library(lme4)
library(broom.mixed)
mtcars %>% 
  mutate(vs = factor(vs), gear = factor(gear), carb = factor(carb), am = factor(am), 
         cyl = factor(cyl)) %>% 
  # replacing nest_by with group_by
  group_by(vs) %>% 
  # either using nest_by or group_by, you may want to make sure that the "grouping variable" (vs) is not in the nested table
  # using group_modify is a cleaner way to do the job (with tidy)
  group_modify(~ broom::tidy(lmer(formula= mpg ~ cyl + disp + hp + (1 | am), data = .x)))

仅供参考,如果您坚持使用大部分代码。您应该让 do() 知道输入是输入数据框

data
.
列。

test <- mtcars %>% 
  mutate(vs = factor(vs), gear = factor(gear), carb = factor(carb), am = factor(am), 
         cyl = factor(cyl)) %>% nest_by(vs) %>% 
  do(fit = lmer(.$data,formula= mpg ~ cyl + disp + hp + (1 | am) ))

test$fit
© www.soinside.com 2019 - 2024. All rights reserved.