样条的解释

机器算法验证 r 广义加法模型 样条 毫克CV
2022-04-18 02:41:38

请看以下简单示例,了解如何使用一条样条将 GAM 拟合到数据集,

library("ggplot2")
theme_set(theme_bw())
library("mgcv")

df <- data.frame(one   = 1*(1:20),
                 two   = c(1,6,2,8,7,4,9,8,5,4, c(1,6,2,8,7,4,3,8,5,4)/2))
m <- gam(two ~ s(one, k = 8, pc=5), data = dfOne)

dev.off()
plot(m)
ggplot(dfOne, aes(x = one, y = two)) + geom_point(colour="blue") + geom_line(colour="red",aes(y=fitted(m))) + theme_bw()

数据和拟合具有以下形式

在此处输入图像描述

而样条曲线采用形式

在此处输入图像描述

我的问题很基本:s(one)在这个简单的例子中,估计的样条曲线和模型之间有什么关系?显然它们具有相同的形状,但是当估计样条的值为-3.78one=15,它与模型的预测值2.51有什么关系one=15是否有将这些与值联系在一起的函数?

2个回答

为了给@Glen_b 的答案添加一点内容,mgcv 中的标准样条曲线受到约束以启用它们的识别,因为它们与模型截距项混淆。

mgcv使用的约束是

ifj(xij)=0   j

这是总和为零的约束,其中是样条函数,个变量个观察值。fjxijij

此约束导致样条以零为中心。与其他可识别性约束相比,它还可以在估计的平滑函数上产生更好的置信区间。

如果你有一个单一的平滑,你可以使用shift参数来plot.gam()添加截距以响应单位缩放 y 轴(假设family = gaussian);对于非高斯模型,您还需要使用trans参数在添加后应用链接函数的逆shift

唯一的区别在于截距项。这是此类模型中具有平滑项的标准。

取两个图并将红色的大小调整为与另一个相同的比例,然后移动 y 轴以对齐两者:

两个图的叠加版本

我们可以看到它们在其他方面是相同的——一个只是另一个的偏移(好吧,事实上,红色的只在数据点上进行评估,而黑色的已经在细网格上进行了评估)。