我已经成功浏览了由amelia
使用以下代码生成的估算数据集
mod <- impute_data %>% mutate(gls_mod = data %>% purrr::map(~nlme::gls(resp_var ~ pred_var1 + pred_var2 + pred_var2), data = .)))
现在,我想运行car::Anova
来测试每个预测变量的重要性。为此,我使用了:
Anova_mod <- mod %>% mutate(gls.Anova = mod_gls %>% purrr::map(print(~car::Anova(.))))
并收到以下错误消息:Error in eval(object$call$data) : object '.' not found
但是,如果我通过car::Anova
分别运行每个估算数据集,则效果很好(但是我不想单独运行每个数据集)。如果我将先前的代码更改为mod %>% mutate(gls.Anova = mod_gls %>% purrr::map(print(~anova(.))))
也可以。但是,我需要car::Anova
才能获得II型SS。我无法解释此错误信息。在解释错误消息方面的任何帮助都将非常有用。
我遇到了同样的错误。 Error in eval(object$call$data) : object '.'
与通过map
进行的模型估计有关,并且源于data = .
。例如,从.
切换到.x
,即运行mod <- impute_data %>% mutate(gls_mod = data %>% purrr::map(~nlme::gls(resp_var ~ pred_var1 + pred_var2 + pred_var2), data = .x)))
会将错误消息更改为Error in eval(object$call$data) : object '.x'
。换句话说,car::Anova
正在寻找一个找不到的data
对象。我很确定几个月前我也遇到了这个问题,但是我不记得我是如何解决的。 ):
一个简单的解决方案也将使用“老式” for循环来估计模型。以.
作为示例数据,除以mtcars
并使用公式cyl
:
mpg ~ hp
由library(dplyr)
df_list <- mtcars %>%
split(.$cyl)
mod_gls_loop <- list()
for (i in seq_along(df_list)) {
mod_gls_loop[[i]] <- nlme::gls(mpg ~ hp, data = df_list[[i]])
}
Anova_gls <- mod_gls_loop %>% purrr::map(~ print(car::Anova(.)))
#> Analysis of Deviance Table (Type II tests)
#>
#> Response: mpg
#> Df Chisq Pr(>Chisq)
#> hp 1 3.3976 0.06529 .
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> Analysis of Deviance Table (Type II tests)
#>
#> Response: mpg
#> Df Chisq Pr(>Chisq)
#> hp 1 0.0821 0.7745
#> Analysis of Deviance Table (Type II tests)
#>
#> Response: mpg
#> Df Chisq Pr(>Chisq)
#> hp 1 1.0498 0.3055
(v0.3.0)在2020-03-11创建