如何在 GAM 中可视化自然三次样条曲线 (ns)


> # simulate some data... 
> dat <- gamSim(1,n=400,dist="normal",scale=2)
> # fit model&plot
> library(mgcv)
> library(splines)
> b0 <- gam(y~s(x1),data=dat)
> plot(b0) 

按照上面的代码,我可以得到这样的情节:在此处输入图像描述

现在,我想使用 GAM 中的 ns() 函数获得类似的绘图:

> b1 <- gam(y ~ ns(x1), data=dat)
> plot(b1)

但是当我在R中运行代码时,它显示">没有要绘制的项",所以我想知道如何绘制这张图片?谢谢!

因为ns()不是s()te()t2()ti()表示的(惩罚)样条,所以它不是类"mgcv.smooth"的成员。打印拟合的 GAM 对象时,代码会查看是否有任何要绘制的 mgcv 平滑。模型中的所有其他项都是参数项,包括自然样条。如果执行summary(b1)将在输出的"参数化效果"部分看到ns()项。

基本上,gam()只是看着你的模型,就好像它是一堆线性参数项一样。它不知道模型矩阵中的这些项映射到基函数,因此映射到自然样条。

可视化并不容易;plot(b1, all.terms = TRUE)绘制每个基函数的线性效应,所以至少你看到了一些东西,但通常这不是你想要的。您必须从模型中预测协变量x1的范围,然后根据x1值网格绘制预测值。

这就引出了一个问题:你期望gam()如何处理ns()基础?

相关内容

  • 没有找到相关文章

最新更新