我一直在使用一个非常大的全局模型的包 MuMIn 作为垫脚石来运行挖泥机,最终目标是获取每个变量的重要性值。挖泥机确实在 2 天内成功运行,但后来我需要添加 2 个变量,并且在添加后它还没有运行完成。它在 R 崩溃之前第一次运行了 7 天(我假设),因为当我接下来检查它时,R 已经关闭,当我再次启动 RStudio 时没有错误消息,这是一个新窗口。我再次启动代码,这次它运行了 8 天,然后才做同样的事情。
我将解释我的全局模型和子集,以便清楚为什么代码需要这么长时间才能运行:它是一个具有 19 个变量和 4 个交互项的游戏(除“年份”之外的所有数字都是分类的)。有些变量不能一起出现在模型中,因为一个是另一个的替代版本,所以我有这些的子集。交互项使事情变得更加复杂,因为当交互项在模型中时,项的平滑版本不能成为主要影响,因为该项的未平滑版本会自动包含在内,该项的未平滑版本也不会显示为当交互项不在模型中时的主要影响,因为可能已经存在该项的平滑版本。任一选项都会导致模型中一个术语的双重表示,因此我也将这些选项子集化了。这是显示挖泥船的全局模型和代码的代码:
library(MuMIn)
options(na.action = "na.fail")
real.model2 <- gam(resqpa ~ factor(year) + s(elev) + factor(year)*elev +
s(bf1) + s(bf2) + s(bf3) + s(open) + s(water) + s(bfbs1) + s(bfbs2) +
s(bfbs3) + s(bs2) + s(bs3) + s(mix) + s(cs1) + s(cs2) + factor(year)*bfbs2 +
factor(year)*bfbs3 + factor(year)*bs2 + factor(year)*bs3 + s(allbf) + s(ct1)
+ s(ct2) + s(allcs), family=binomial(link="cloglog"))
fits6 <- dredge(real.model2, subset = (!("s(allbf)" & "s(bf1)"))
& (!("s(allbf)" & "s(bf2)"))
& (!("s(allbf)" & "s(bf3)"))
& (!("s(ct1)" & "s(bf1)"))
& (!("s(ct1)" & "s(bfbs1)"))
& (!("s(ct2)" & "s(bf2)"))
& (!("s(ct2)" & "s(bfbs2)"))
& (!("s(ct2)" & "s(bs2)"))
& (!("s(allcs)" & "s(cs1)"))
& (!("s(allcs)" & "s(cs2)"))
& (!(`s(elev)` & "elev:factor(year)")) & (!elev | `elev:factor(year)`)
& (!(`s(bfbs2)` & "bfbs2:factor(year)")) & (!bfbs2 | `bfbs2:factor(year)`)
& (!(`s(bfbs3)` & "bfbs3:factor(year)")) & (!bfbs3 | `bfbs3:factor(year)`)
& (!(`s(bs2)` & "bs2:factor(year)")) & (!bs2 | `bs2:factor(year)`)
& (!(`s(bs3)` & "bs3:factor(year)")) & (!bs3 | `bs3:factor(year)`))
在 R 第二次崩溃后,我进行了诊断;但是,错误的时间戳与 R 崩溃的时间不匹配,所以我不知道这是否提供信息。
24 Sep 2018 03:06:26 [rdesktop] ERROR system error 231 (All pipe instances
are busy); OCCURRED AT: virtual void
rstudio::core::http::NamedPipeAsyncClient::connectAndWriteRequest()
这是需要更多计算能力的问题,还是有更简洁/更正确的方法来编写此代码以使其完成?提前感谢您对此的任何帮助!