Ошибка в eval (объект $ call $ data): объект '.' не найден при запуске Anova на объекте модели gls - PullRequest
1 голос
/ 11 марта 2020

Я успешно запустил gls для вмененного набора данных, сгенерированного 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, чтобы получить SS типа II. Я не могу интерпретировать это сообщение об ошибке. Любая помощь в интерпретации сообщения об ошибке будет отличной.

1 Ответ

0 голосов
/ 11 марта 2020

Я получил ту же ошибку (используя mtcars, см. Ниже). Error in eval(object$call$data) : object '.' not found относится к оценке моделей через 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' not found. Иными словами, car::Anova ищет data объект с именем ., который он не может найти. Я вполне уверен, что у меня была эта проблема несколько месяцев go, но я не могу вспомнить, как я решил ее. ):

Простым решением было бы использование «старой школы» для -l oop для оценки моделей. Используя mtcars в качестве примера данных, разделив на cyl и используя формулу mpg ~ hp. Не так элегантно, как map, но работает:

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

Создано в 2020-03-11 пакетом Представить (v0.3.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...