【问题标题】:Why does using cluster= argument in mgcv::bam() result in an error?为什么在 mgcv::bam() 中使用 cluster= 参数会导致错误?
【发布时间】:2019-03-20 09:03:50
【问题描述】:

我正在尝试重现此处给出的示例:

https://stat.ethz.ch/R-manual/R-devel/library/mgcv/html/mgcv-parallel.html

具体来说,在 mgcv::bam() 中使用 cluster= 参数。

可重现的例子:

require(mgcv)
require(parallel) 

    k <- 13;bs <- "cr"; set.seed(9)
    dat <- gamSim(1,n=6000,dist="poisson",scale=.1)

    nc <- 2   ## cluster size, set for example portability
    if (detectCores()>1) { ## no point otherwise
      cl <- makeCluster(nc) 
    } else cl <- NULL

    system.time(b3 <- bam(y ~ s(x0,bs=bs,k=7)+s(x1,bs=bs,k=7)+s(x2,bs=bs,k=k)
                ,data=dat,family=poisson(),chunk.size=5000,cluster=cl))

这导致我的机器出现以下错误:

checkForRemoteErrors(val) 中的错误:2 个节点产生错误;第一的 错误:没有适用于“预测”的方法应用于 “gam”类计时停止于:0.31 0 0.37

其他可能有用的信息:

R version 3.4.4 (2018-03-15)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

我的机器有 4 个内核和 16 GB RAM。

谢谢。

【问题讨论】:

  • 我无法用parallel 3.5.1mgcv 1.8.27R 3.5.1 重现错误,我得到了正确的结果。也许更新软件包可能会有所帮助?

标签: r parallel-processing gam mgcv


【解决方案1】:

我无法重现错误并得到了这个输出。

> b3

Family: poisson 
Link function: log 

Formula:
y ~ s(x0, bs = bs, k = 7) + s(x1, bs = bs, k = 7) + s(x2, bs = bs, 
    k = k)

Estimated degrees of freedom:
3.64 4.05 9.95  total = 18.64 

fREML score: 8563.705     

尝试更新软件包,看看是否有帮助。否则,一些更深入的了解会很有用。

【讨论】:

  • 谢谢你和@thothal 更新软件包的想法。我更新了 mgcv 但这似乎有帮助。我想我需要更新我的 R 版本(当前为 3.4.4)以更新并行库,因为这是一个核心包。在等待我的 IT 部门在我的机器上更新 R 时(因为我没有管理权限),我使用 Louis Aslett 的 RStudio AMI 通过 Amazon EC2 实例运行代码,它运行良好,没有错误。所以我的 R 安装肯定有问题。 R版本更新时会更新!
  • 似乎将 R 更新到最新版本有所帮助,因为我不再收到错误消息。至于为什么会出现那个特定的错误消息,对我来说仍然有点神秘。我不确定这个问题是否得到了“回答”,所以也许暂时搁置一下,以防其他人遇到这个问题?
猜你喜欢
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多