一、广义相加模型有什么作用?

讨论线性模型时,我们假设自变量x和因变量y之间为线性关系。实际上,在线性模型中,我们也可以通过引入多项式的方法拟合x和y之间的非线性关系。但我们只能在可以清楚地看到二者之间的关系时才能这样做,例如散点图显示y近似是x的二次函数。

然而,在许多情况下,我们从散点图中看到了非线性关系,但很难知晓它的形式。此外,在线性模型中,多项式系数的解释变得非常困难,降低了其实用性。

广义相加模型(GAM:Generalized Additive Model)提供了一种替代方法,它允许我们在预先不知晓因变量与自变量之间关系的情况下,使用非线性平滑项来拟合模型。

二、广义相加模型介绍

  1. 假设

    之间为线性关系,而

    之间为复杂的曲线关系。拟合广义相加模型为:

模型有两个部分:参数项

和非参数平滑项

其中,参数项等同于最小二乘回归模型以及广义线性模型中可以包含的所有参数项,例如线性项或多项式项。另外,还包括了非参数平滑项,这是广义相加模型的关键部分。模型的左侧与广义线性模型一样,可以是因变量本身,也可以是对因变量进行变换后的结果。

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

简单线性回归和多项式回归的拟合都是全局性的,即使用相同的回归方程来预测自变量的每一个值所对应的因变量。然而,在自变量和因变量之间为形状不明确的非线性关系时,即,随着自变量取值的变化,其与因变量之间的关系也是在不断变化时,用一个回归方程来预测所有自变量所对应的因变量就不太合理了。

一种可行的改进方法是把该自变量划分成多个连续的区间,每一个区间都用单独的线性函数或非线性的低阶多项式函数来拟合。这种方法被称为样条函数(Spline),其生成的回归线为平稳、光滑的曲线,因此经样条函数变化后的自变量也被称作非参数平滑项。

3. 由此可知,样条函数是非参数平滑项的关键,其具体内容包括:应该把数据分成几个连续区间?每个区间该如何确定拟合函数?

1)首先来看应该把数据分成几个连续区间,也就是说在拟合样条函数时,我们该选择几个节点?

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

2)确定节点数量后,这些节点应该放在什么位置?

可以放在数据中的剧烈变化区域,如大气污染情况突然转好(如2015年北京的阅兵蓝)或突然加重(如伦敦烟雾事件)的时间点;也可以在数据变化复杂的地方多设置节点,在看起来更稳定的地方少设置节点,比如研究大气污染的健康效应时,在暴露反应关系可能存在拐点的地方设置节点。但实际上,为便于操作,一般会截取长度相同的区间设置节点。

3)接下来,看看每个区间该如何确定拟合函数?

一般来说,如果我们在整个自变量范围内设置了k个不同的节点,我们最终将拟合k+1个不同的多项式。我们要为每个区间拟合不同的函数,理论上可以用任意低阶多项式拟合某个单独区间。所以最终得到的模型就是分段多项式。能拟合目标区间数据的函数有很多,但分段多项式不能随便设定,它有两个限制条件。

  • 由于分段,相邻区间的函数可能会出现不连续的现象。为了避免这种情况,一个必要的限制就是多项式在节点处应该是连续的。
  • 之后,虽得到了一条连续的曲线,但其连接处过度很不自然,为了使节点处更平滑,我们需要增加一个新约束:相邻多项式的导数必须相同(具体地讲,如果拟合的是m阶多项式,则应保证相邻多项式的一阶导数至m-1阶导数均相等)。

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

至此,广义相加模型的基本知识点就介绍完了。总结起来就是,为了尽可能多地捕捉回归模型中的非线性因素对因变量的影响,我们采用样条函数来灵活地将自变量拟合为平滑的曲线;同时又相对不那么“灵活”,能有效防止过度拟合。

三、广义相加模型在R中的实现

1. 在R中,拟合广义相加模型的包是mgcv,函数是gam()。

举例:

##三次样条

式中,

  • death_cases为因变量,PM2.5和Temperature为自变量。
  • PM2.5为参数部分,s()为非参数平滑项。
  • s()中,bs代表样条函数类型,我们选择cr即为三次样条函数,对于三次样条函数,自由度(节点数)一般由函数自动生成,无需我们手动设定;三次样条函数的自由度为节点数+3。如想使用自然样条函数,则s()应替换为ns();df代表自然样条函数的自由度,除用GCV法外,也可参考相关文献的选择;自然样条函数的自由度为节点数+1。
  • family为因变量的分布类型;data为建模所需数据。

2. 查看模型,语句为summary(model),可查看自变量参数的点估计值、参数项和非参数项是否为有意义的预测因子、评价模型预测情况的GCV值(越小越好)。为平滑项绘图,语句为plot(model)。

参考文献:

https://cran.r-project.org/web/packages/gam/gam.pdf

https://www.r-bloggers.com/generalized-addictive-models-and-mixed-effects-in-agriculture/

https://www.andrew.cmu.edu/user/achoulde/95791/lectures/lecture02/lecture02-95791.pdf

ZHANG Xiyang, NING Xi, MO Yaqian, GUI Duan, LIU Jianchang, CHEN Hongying, WU Yuping. A Study on the Habitat Preference of Sousa chinensis in Pearl River Estuary Based on the Generalized Additive Models. Sichuan Journal of Zoology, 2015, 34(6): 824-831.

线性关系r范围_广义相加模型及其R实现相关推荐

  1. R语言构建广义相加模型(GAM:Generalized Additive Model)实战

    R语言构建广义相加模型(GAM:Generalized Additive Model)实战 目录 R语言构建广义相加模型(GAM:Generalized Additive Model)实战

  2. 广义相加模型(GAM)及R实现

    当解释变量与效应变量间关系不明确时,通常可以使用广义相加模型来检测比变量间是否具有非线性关系. 广义相加模型通过光滑样条函数 .核函数或者局部回归光滑函数,对变量进行拟合.GAM采用模型中的每个预测变 ...

  3. 在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析

    广义相加模型(GAM:Generalized Additive Model),它模型公式如下:有p个自变量,其中X1与y是线性关系,其他变量与y是非线性关系,我们可以对每个变量与y拟合不同关系,对X2 ...

  4. R语言GAM(广义相加模型)对物业耗电量进行预测

    人们对于电力的需求与依赖随着生活水平的提高而不断加深,用电负荷预测工作开始变得越来越重要,如果可以发现用电负荷的规律性,我们就可以合理安排用电负荷.我们使用某商业物业两个星期的电耗数据进行分析. 最近 ...

  5. 广义相加模型(GAM)与向前逐步选择算法(基于R语言)

    广义相加模型(GAM)与向前逐步选择算法(基于R语言) 一.题目 (a)使用College数据集,以Outstate作为响应变量,其余作为预测变量,使用逐步回归得到一组合适的预测变量的子集. (b)将 ...

  6. R语言用GAM广义相加模型研究公交专用道对行程时间变异度数据的影响

    全文链接:http://tecdat.cn/?p=30508 现实情况是,我们经常要处理多个自变量和一个因变量之间的关系,此外,虽然通过做散点图可以发现非线性关系,但很难归因其形式,多项式回归在广义线 ...

  7. GAM(广义相加模型)概要及R程序实现

    国内关于GAM方面的资料不是一般的少,基本上都要往国外找.我光顾了没100都有50个网站,翻查了不少论文及资料,研究整理出下文,欢迎一同讨论. GAM 广义相加模型Generalized additi ...

  8. R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类...

    原文链接:http://tecdat.cn/?p=21379 本文我们对逻辑回归和样条曲线进行介绍. logistic回归基于以下假设:给定协变量x,Y具有伯努利分布, 目的是估计参数β. 回想一下, ...

  9. R语言中的广义线性模型(GLM)和广义相加模型(GAM):多元(平滑)回归分析保险资金投资组合信用风险敞口

    最近我们被客户要求撰写关于信用风险敞口的研究报告,包括一些图形和统计输出. 在之前的课堂上,我们已经看到了如何可视化多元回归模型(带有两个连续的解释变量).在此,目标是使用一些协变量(例如,驾驶员的年 ...

最新文章

  1. 目前流行的源程序版本管理软件和项目管理软件都有哪些?各有什么优缺点?...
  2. 深入理解java虚拟机之类文件结构以及加载
  3. 视频加速方案的最优解 - Xilinx硬件加速技术专场(深圳站)
  4. kaptcha配置java_kaptcha 配置
  5. 32位mysql安装包_MySQL安装指南(CPT103)
  6. Ubuntu下用apache+perl搭建最简单的聊天室
  7. 【Python CheckiO 题解】Probably Dice
  8. 学成在线--13.RabbitMQ工作模式
  9. python控件随窗口变化而适配_python pyqt5 设置控件随窗体拉伸
  10. Apache MiNa 实现多人聊天室
  11. WPF备忘录(7)WPF图片资源路径介绍
  12. Linux用管道移动文件夹,linux常用命令(示例代码)
  13. MYSQL8.0 OCP考试题库(如需完整版请留言)
  14. 苦逼程序猿的求职经历
  15. matlab 直流无刷电机,无刷直流电机的matlab仿真.pdf
  16. 向 Dockerfile 传参 --build-arg 遇到的一些小坑
  17. 立创商城中的元件应用到AD中的一些经验
  18. 关于节日文化的HTML网页设计-----二十四节气
  19. 关于右键自定义 vue-contextmenu
  20. 归并排序算法代码实现

热门文章

  1. 04.粘滞定位.html
  2. python中ch是什么_Python中的函数
  3. react项目实战 1 项目介绍、项目搭建
  4. 通信历史和原理科普:电话和手机是如何打通的?
  5. 线段树合并(HDU-5575 Discover Water Tank)
  6. php替换视频教程,替换掉视频运动中的文字 | 修改视频文字的内容(附带软件与详细教程)...
  7. 洛谷4438 [HNOI/AHOI2018]道路
  8. C语言PAT刷题 - 1023 组个最小数
  9. 关于USB4/雷电转PCIE GEN4*4(ASM2464PD Data Sheet)学习及应用整理
  10. 【Image Restoration】Restormer: Efficient Transformer for High-Resolution Image Restoration