加性模型的拟合是通过一个迭代过程(向后拟合算法)对每个预测变量进行样条平滑。其算法要在拟合误差和自由度之间进行权衡最终达到最优。在R中可以利用mgcv包中的gam函数实现加性模型,我们仍以trees数据集作为例子,其中Volume为响应变量,Girth和Height为预测变量。
------------------------
model=gam(Volume~s(Girth)+s(Height),data=trees)
par(mfrow=c(1,2))
plot(model,se=T,resid=T,pch=16)
------------------------
上图显示的是各预测变量的偏残差图,表示了各预测变量对响应变量的独立影响,纵轴括号中的数字表示EDF(estimated degrees of freedom),Height的估计自由度为1,即是线性关系。建模结果存在model变量中,它同样可以用summary、predict、anova等泛型函数作进一步处理
------------------------
summary(model)
Approximate significance of smooth terms:
edf Ref.df F p-value
s(Girth) 2.693 3.368 203.8 < 2e-16 ***
s(Height) 1.000 1.000 16.0 0.000459 ***
R-sq.(adj) = 0.973 Deviance explained = 97.7%
GCV score = 8.4734 Scale est. = 7.1905 n = 31
------------------------
从上面的结果报告可以观察到各预测变量的EDF值,后面的P值表示平滑函数是否显著的减少了模型误差。伪判定系数R-sq显示了模型的解释能力为97.7%。
加性模型容易被误用往往是因为没有注意到其前提假设,在本例中树围和树高对树木体积的影响并非是可加性的,显然二者之间存在交互作用,应该用s(Girth,Height)作为预测变量。
gam函数中也能加入线性预测变量,构成半参数加性模型,还可以设置family参数实现广义加性模型。此外,加性模型的弱点在于其结果不象参数模型那样容易解释,但它用于探索性数据分析和预测工作时是非常有用的分析工具。如果把加性模型当作模型拟合工具而非探索性工具时,其平滑参数的设定就变得非常重要。
参考资料:
环境与生态统计--R语言的应用
没有评论:
发表评论