mgcv R包中的错误,取决于R版本

时间:2015-07-03 14:25:31

标签: r

以下程序与R \ 2.15.3完美配合使用mgcv包:

foo<-c(0.08901294, 0.04221170, 0.01608613, 0.04389676, 0.04102295, 0.03552413, 0.06571099, 0.11004966, 0.08380553, 0.09181121, 0.07422538,
        0.11494897, 0.18523257, 0.13809043, 0.13569868, 0.13433534, 0.16056145, 0.15559133, 0.22381149, 0.13998797, 0.02831030)
infant.gamfit<-gam(foo~s(c(1:21)), family=gaussian(link = "logit"))

但是对于R \ 3.1.1和3.1.2,它会产生以下错误:

  

重新制定(pav)时出错:'termlabels'必须是字符向量   长度至少为一个

这是我不明白的错误。 当然foo中的值是一个例子,但我对其他值有同样的问题。在样条曲线中固定k不会改变任何内容。

如果我不需要在超级计算机上大规模使用它,R的所有版本都会产生相同的错误,那就不会有问题...... (为了讨论起见,我在超级计算机上测试的R版本是:

  • R / 2.15.3-FOSS-2014A-默认;
  • R / 2.15.3-FOSS-2014A-ST;
  • R / 2.15.3英特尔-2014A-默认;
  • R / 3.0.2-FOSS-2014A-默认)

所以这不是一个超级计算机问题,但更多的问题与在不同版本的R中使用mgcv有关。

我在互联网上找不到任何答案 提前感谢您的帮助。
纪尧姆

1 个答案:

答案 0 :(得分:1)

当预测变量是表达式而不是命名变量时,看起来mgcv::gam的最新版本可能有点脆弱。这有效:

x <- 1:21
gam(foo~s(x), family=gaussian(link = "logit"))

就像这样:

x <- 1:21
gam(foo~s(x + 0), ...)

但这并不是:

x <- rep(0, 21)
gam(foo~s(x + 1:21), ...)

一般情况下,我建议您在使用gam时预先计算预测变量。

PS。具有logit链接的高斯族并不是很明智,但这是另一个问题。