0

我绘制了一个s(... bs = "fs")mgcv包中构建的因子平滑交互图。然而,似乎 的xlimmain参数(以及一些其他参数)plot.gam()无法正常工作,尽管用于绘制其他类型平滑的相同参数也有效。

这是一个例子。

更新:我修改了示例以更好地反映我遇到的问题(2014 年 12 月 2 日)。

library(mgcv)

# create toy data
set.seed(1)
d <- data.frame(
 x = runif(10 * 100),
 f = rep(paste0("f", 1:10), each = 100)
)
d$y <- 2 * d$x + 10 + rnorm(10 * 100)

# build a model
model <- gam(y ~ s(x) + s(x, f, bs = "fs"), data = d)

以下代码生成与上述s(x)术语相对应的图,限制 x 轴并按预期放置标题。

plot(model, select = 1, xlim = c(0.4, 0.6), main = "Title")

但是,以下代码生成与上述术语对应的绘图s(x, f, bs = "fs"),不会限制 x 轴或生成标题。

plot(model, select = 2, xlim = c(0.4, 0.6), main = "Title")

我怀疑mgcv::plot.gam()未能将(某些)论点传递给mgcv:::plot.fs.interaction()mgcv:::plot.mgcv.smooth()在某些情况下,但无法弄清楚它为什么会发生以及如何解决它。我将不胜感激任何帮助。

4

1 回答 1

0

我承认这有点蛮力的方法,基本上不会“修复 mgcv”,但我认为修复 mgcv 超出了我的能力。

with(d, plot(X=           seq(0,1,length=100), 
             gamPred.x2 = predict(model, 
                     newdata=data.frame(x1=mean(x1),
                                        x2=seq(0,1,length=100),
                                        f="f5")
        )))
于 2014-12-01T22:47:41.627 回答