星期三, 十二月 07, 2011

加性模型(Additive Model)在R中的实现

加性模型是一种非参数模型,如果说二维散点图的平滑是简单线性回归模型的一般化,那么加性模型就是多元回归模型的一般化。加性模型非常具有灵活性,因为它不象参数模型那样需要假设某种函数形式,只要预测变量对响应变量的影响是独立即可,也称为可加和假设。

加性模型的拟合是通过一个迭代过程(向后拟合算法)对每个预测变量进行样条平滑。其算法要在拟合误差和自由度之间进行权衡最终达到最优。在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语言的应用

没有评论:

发表评论