在pscl::zeroinfl中创建了一个开发全局模型的函数,并通过MuMIn::dredge运行,但是MuMIn::dredge不保留数据集

问题描述

我正在构建一个相当大的函数,它在 r 中开发一系列全局线性模型,然后使用 R 中包 MuMIn 中的 dredge() 函数来找到最适合的模型。该函数非常大,而且大部分都有效,所以我不会在这里展示。特别是,当使用 glm()、glmer()(lme4 包)、glmmTMB()(glmmTMB 包)等函数构建全局模型时,它工作正常。但是,当使用pscl 包中的 zeroinfl() 函数。我开发了以下导致相同问题的短代码代码如下:

library(pscl)

data(bioChemists)

options(na.action = "na.fail")

trialfunc2 <- function(dataset) {
  globalmodel <- pscl::zeroinfl(formula = art ~ . | 1,data = dataset,dist = "negbin")
  
  globaltable <- try(MuMIn::dredge(globalmodel))
  
  output <- list(globalmodel,globaltable)
  
  return(output)
}

trialfunc2(bioChemists)

这是我得到的输出

[[1]]

Call:
pscl::zeroinfl(formula = art ~ . | 1,dist = "negbin")

Count model coefficients (negbin with log link):
(Intercept)     femWomen   marMarried         kid5          phd         ment  
    0.25620     -0.21642      0.15047     -0.17641      0.01525      0.02908  
Theta = 2.2645 

Zero-inflation model coefficients (binomial with logit link):
(Intercept)  
     -12.85  


[[2]]
[1] "Error in eval(x$call$data) : object 'dataset' not found\n"
attr(,"class")
[1] "try-error"
attr(,"condition")
<simpleError in eval(x$call$data): object 'dataset' not found>

因此,全局模型运行,但 dredge() 调用失败。由于特定错误在 eval(x$call$data) 中,我认为它可能来自在 dredge() 中调用的 zeroinfl() 函数中,我怀疑这是某种范围的问题,其中函数不是在正确的环境中寻找数据集。但是,我找不到任何方法让 R 找到数据集并完成 dredge() 调用

任何人都可以建议如何解决此问题以使其正常工作吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)