单链表多项式相加_R软件:广义相加模型(GAM)

01

解决何种问题

      前面一期和大家分享如何运用样条回归处理遇到的非线性问题,但这适合处理单个因变量Y对应一个自变量X的问题,而现实情况是,我们常常要处理多个自变量和一个因变量之间的关系,除此以外,虽然通过做散点图能发现非线性关系,但很难归属它的形式,广义线性模型中的多项式回归,由于其不好解释的系数,降低了模型实用性。

        因此本章分享的广义相加模型提供了一种优选方案,它可以研究多个自变量与一个因变量之间关系,同时不需要预先知晓因变量和自变量的关系,而使用非线性平滑项来拟合模型。

02

GAM模型说明

       广义相加模型(GAM:Generalized Additive Model),它模型公式如下:有p个自变量,其中X1与y是线性关系,其他变量与y是非线性关系,我们可以对每个变量与y拟合不同关系,对X2可以拟合局部回归,X3采用光滑样条,不必采用统一的关系,而最终结果‘加’在一起就可以了。

e45ae32cd52abf3b633b63d30ba5598b.png

      1. 该函数有两个组成部分,β0+β1X1部分属于参数部分,后半部分属于非参数平滑部分,因此该模型又称为半参数模型。参数部分等同于线性项或广义线性项,非参数平滑部分,则是广义相加模型的关键部分。模型的左侧与广义线性模型一样,可以是因变量本身,也可以是对因变量进行变换后的结果。

       2.什么是非参数平滑项?

      经样条函数变化后的自变量也被称作非参数平滑项,常见的样条函数如:光滑样条(可参见前述内容)、自然样条和局部样条等。总结起来,为了尽可能多地捕捉回归模型中的非线性因素对因变量的影响,我们采用样条函数来灵活地将自变量拟合为平滑的曲线;同时又相对不那么“灵活”,能有效防止过度拟合。

       3.关于样条函数,需要确定多少个节点合适?怎么选取合适的函数?

       节点的个数直接和函数中自由度df挂钩,函数中的自由度df=节点数+4,通常可以通过1)AIC,根据AIC最小确定自由度;2)广义交叉验证;3)根据残差独立原则,最小化残差自相关确定自由度。

        3.1 AIC法:GAM的比较可以用aov(model1,model2,test="Chisq")或者AIC(model1,model2)来比较。通过比较选出最优节点数量。该法还可以通过观察模型中非参数平滑函数的自由度改变对解释变量的影响大小来评判模型是否稳健。

       3.2 广义交叉验证(GCV:Generalized Cross Validation)。这种方法的基本思路是,a)取出一部分数据;b)用某一数量的节点使样条拟合剩下的这些数据;c)用样条拟合之前取出的数据;d)重复a)~c),直到每个观察值都被取出过一次,计算整个交叉验证过程的均方根误差(RMSE:Root Mean Square Error);e)针对不同数量的节点重复a)~d),最后选择最小RMSE时的节点数量。一般可以分成10份重复此过程

       样条函数是具有m-1个连续导数的m阶分段多项式,例如三次样条函数指的就是具有连续性、且一阶和二阶连续的三阶分段多项式。在实际研究中,我们一般使用三次样条函数;除此之外,也可选择自然三次样条函数(增加了三次样条函数在边界区域的平滑性)、薄板样条函数(可同时平滑多个变量,因此一般在研究多个变量的交互作用时使用)等。

03

R代码及解读

     第一部分:结局是连续变量

library(ISLR)library(splines)library(gam)data(Wage)gam2 5) + s(year,gam3 5) + year+ education,plot(gam2,se=T,col=c('blue'))###gam5 5) + lo(year,span=

6baf00cd7db889ae17bb246a1aeea6f3.png

1579211118824809e55d5fd80b7cee6b.png

a64127a3e10ce4377c49d9fb9b632262.png

     结果说明:

   1)采用summary(gam2),查看模型结果,该结果分为参数部分和非参数部分,其中非参数中的year变量,p值大于0.05,说明该变量不适合做非线性拟合,而education这个变量没有做非线性拟合,因为在非参数部分没有其结果。将year这个变量采用线性回归拟合,其拟合结果是显著的,感兴趣的小伙伴可以跑下模型。

   2)采用plot()可以将模型画出来,图一的图横坐标为自变量X,纵坐标为因变量Y,表示随着年龄的变量,收入是先增长,然后降低的。图二中间的图意思是随着年份的增加,收入一直呈增长状态,中间有两年下降了,图三则是随着教育程度的升高,收入越来越高。其他的图解释以此类推。

  3)s()是样条函数,括号里面的数字是定义的自由度,除了使用回归样条,还能使用局部样条lo()函数,得到的结果与上面的结果十分类似。

    第二部分:结局是分类变量

     当Y是分类变量时,GAM同样适用。比如:

gam4 250) ~ ns(age,5) + year + education,data=Wage,family = binomial)plot(gam4,se=T,col=c('blue'))

84a6accc9207b56634c28e17613de2a3.png

  结果说明:

   1)采用I(),将wage变量处理成二分类变量,模型的写法和第一部分稍有变化。

   2)采用plot()可以将模型画出来,上图横坐标为自变量X,纵坐标表示概率,这个跟第一部分不太一样,小伙伴注意区分,上图第一个表的解释是:随着年龄的增加,收入超过250的可能性先增加后降低,其他的图解释以此类推。

    各位小伙伴儿,码了这么多字,期望能够帮助各位更好的理解和使用这些模型。

04

总结

    GAM模型存在的缺点:       

    1.由于模型是可加的,这在很大程度上限制了模型的灵活性,变量间的相互作用常被忽略,虽然模型本身可以考察交互作用。

     2.由于是基于非线性的模型,因此GAM模型的系数依然难以准确解释和描述。

      后面会有GAM结合时间序列研究的分享,敬请关注!

05

参考文献

  1. 薛毅等.统计建模与R软件.清华大学出版社

  2. 孙振球等.医学统计学.人民卫生出版社

作者介绍:医疗大数据统计分析师,擅长R语言。

欢迎各位在后台留言,恳请斧正!

更多阅读:

R语言:样条回归

R语言:多水平统计模型

R语言:广义估计方程(GEE)

如何进行高维变量筛选和特征选择(一)?Lasso回归

e1a19ad34d47cb4af7f0f333db8983f7.png

2eb8f4678cf57445554f05f3fcbfb7d8.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值