eval(object $ call $ data)中的错误:对象'。在gls模型对象上运行Anova时找不到

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

我已经成功浏览了由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。我无法解释此错误信息。在解释错误消息方面的任何帮助都将非常有用。

r purrr mutate anova least-squares
1个回答
0
投票

我遇到了同样的错误。 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创建

© www.soinside.com 2019 - 2024. All rights reserved.