百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

R数据分析:变量间的非线性关系,多项式,样条回归和可加模型

cac55 2024-10-12 02:28 53 浏览 0 评论

之前的文章中都是给大家写的变量间线性关系的做法,包括回归和广义线性回归,变量间的非线性关系其实是很常见的,今天给大家写写如何拟合论文中常见的非线性关系。包括多项式回归Polynomial regression和样条回归Spline regression。

多项式回归

首先看一个二次项拟合的例子,我现在想探讨苹果内容物apple content和苹果酸度cider acidity的关系,第一步应该是做出apple content和cider acidity关系的散点图,假如是下图:


那么我很直观地可以看出来,曲线(二次)对数据的拟合明显是好于线性拟合的。

上面的只是一个2次项拟合的例子,我们其实经常会遇到有可能高次式会把数据拟合的更好,社科论文中其实也常常见到做高次回归的,常见的1次,2次,3次,4次项英文论文中的表达,曲线形状如下:



拟合出来的一般模型表达式如下:


而且通常情况下,模型中所有的低次项都不应该被略去。就是我有了4次项,那么应该3,2,1次项都应该有。

含有二次及以上的模型就叫多项式回归模型。

样条回归

之前在机器学习的文章中有给大家写过拟合,我们做多次项拟合的时候,按道理你可以将项的次数调得很高,总是可以近乎完美的拟合我们的复杂的非线性关系,但是问题就是外推性就没有了,这也并不是我们想看到的结果:

High-degree polynomials allow us to capture complicated nonlinear relationships in the data but are therefore more likely to overfit the training set.

还有就是自变量和因变量之间的关系在自变量的不同取值范围也并非不变的,比如某个区间是线性的,某个区间是2次曲线,某个区间又成了3次曲线。

上面两个问题处理方法之一就是样条splines

所谓样条就是成片段的多次式,一个曲线分多段拟合,段与段之间的分割点叫做结knots

A spline is a piecewise polynomial function. This means it splits the predictor variable into regions and fits a separate polynomial within each region, which regions connect to each other via knots.


上图便是用两个结将我们的曲线分成了3个样条。

通过对关系曲线的划分,我们可以尽可能达到既拟合的好,又好解释的目的

我们在论文中还会有看到说限制性立方样条(restricted cubic splines),这个又是个啥呢?

就是我们正常做样条,有可能做出来就是这样的:虽然分段但是不连贯:

这样的情况下结点处,不连贯的地方解释起来就会很困难了嘛。

所以,我们更加期望能够得到一个平滑的曲线(增加可解释性),而且首尾都应该是线性的,从而保证预测准确性(减少过拟合的影响),像这样:


为了得到这么样的效果我们就会给样条加上限制,所以叫做限制性立方样条:

restrictions need to be imposed so that the spline is continuous (i.e., there is no gap in the spline curve) and “smooth” at each knot。A restricted cubic spline has the additional property that the curve is linear before the first knot and after the last knot.

样条数量的确定和结位置的选择也是有讲究的,结的个数可以自己定,但是一般不超过5个;结的位置需要尽可能在拐弯的地方

The number of knots used in the spline is determined by the user, but in practice we have found that generally five or fewer knots are sufficient. The location of the knots also needs to be specified by the user, but it is common that the knot with the smallest value is relatively close to the smallest value of the variable being modelled (e.g., the 5th percentile), while the largest knot is in the neighbourhood of the largest value of the variable being modelled (e.g., the 95th percentile).

广义可加模型

上面写的内容,无论是直接拟合,还是分段拟合,我们都是在拟合一个完整的曲线或直线方程,广义可加模型则是将自变量的单独模型相加,下图式子即为一般线性模型和可加模型:

我们看下图,下图中对于x和y关系的拟合是通过x的3个基础函数相加得到的:

GAMs automatically learn a nonlinear relationship between each predictor variable and the outcome variable, and then add these effects together linearly, along with the intercept.

就是说广义可加的原理就是,先弄几个好解释的基础函数,这个基础函数可以是一次的,也可以是多次的,然后再将这些基础函数进行线性组合,从而达到更好地拟合数据的目的

通过广义可加模型可以同时实现模型的可解释性Interpretability,灵活性flexibility和正则化regularization。

怎么理解呢,我们先看可解释性,假如一个可加模型是如下形式的基础函数相加得到的:

x2的作用我们就可以解释为在其它变量不变的情况下,x2和结局之间的关系是线性的,xp对左边的结局在某个点之前也基本是线性增加的,然乎某个点之后xp对结局就无影响了,这个就是将模型相加后才可能实现的解释性。

灵活性在于,可加模型可以将所有自变量单独建模后相加,我们甚至不需要提前知道xy的关系,完全由数据说话的非参数形式,就比整体的多项式和样条更灵活。

正则化则可以避免过拟合,可加模型是有一个超参λ的,这个超参决定了曲线的歪扭程度,英文叫做wiggliness,通过对超参的控制就可以很方便地实现方差偏差折中,见下图:

The level of smoothness is determined by the smoothing parameter, which we denote by λ. The higher the value of λ, the smoother the curve


当然还有一个问题就是我到底该用多少个基础函数呢?基础函数越多模型就可以越灵活。见下图,这个大家在具体操作的时候也是可以自己设定的:

实例操练

我现在手上有如下数据

我想探究medv和lstat之间的关系,先做个图:

ggplot(train.data, aes(lstat, medv) ) +
  geom_point() +
  stat_smooth()


可以看到这两个变量间是非常明显的非线性关系,此时我们需要考虑给自变量加上多次项拟合。

在R语言中我们可以使用I()来加上变量的高次项,比如我要加二次项,我就可以写出I(x^2)

lm(medv ~ lstat + I(lstat^2), data = train.data)

模型结果如下:


上面就是多次项回归的做法,接下来给大家写写如何做样条回归

刚刚有写我们做样条的时候是需要设定结的,比如我就设定自变量的第25,50,75百分位为结:

knots <- quantile(train.data$lstat, p = c(0.25, 0.5, 0.75))

做一个立方样条回归(默认就是做立方样条),代码如下:

model <- lm (medv ~ bs(lstat, knots = knots), data = train.data)

模型输出结果如下:

我们接着看广义可加模型的R语言做法,我手上有数据如下:

我现在想弄明白x3与y的关系,但是假如我现在已经知道,x1和x2与y的关系为非线性的,我们是不是要把这个非线性关系控制掉来看我们x3和y的关系呀。所以我们跑一个可加模型来瞅瞅:

b1 <- gam(y ~ s(x1, bs='ps', sp=0.6) + s(x2, bs='ps', sp=0.6) + x3, data = dat)
summary(b1)

上面的代码中bs设定平滑方法,sp设定λ。

运行上面的代码后得到结果如下:

就是说在控制了x1和x2的曲线效应后,我们x3对y其实是没有影响的。

小结

今天给大家写了多项式回归,样条回归和可加模型,希望能给到大家以启发,感谢大家耐心看完,自己的文章都写的很细,重要代码都在原文中,希望大家都可以自己做一做,请转发本文到朋友圈后私信回复“数据链接”获取所有数据和本人收集的学习资料。如果对您有用请先记得收藏,再点赞分享。

也欢迎大家的意见和建议,大家想了解什么统计方法都可以在文章下留言,说不定我看见了就会给你写教程哦,有疑问欢迎私信。

如果你是一个大学本科生或研究生,如果你正在因为你的统计作业、数据分析、模型构建,科研统计设计等发愁,如果你在使用SPSS, R,Python,Mplus, Excel中遇到任何问题,都可以联系我。因为我可以给您提供最好的,最详细和耐心的数据分析服务。

如果你对Z检验,t检验,方差分析,多元方差分析,回归,卡方检验,相关,多水平模型,结构方程模型,中介调节,量表信效度等等统计技巧有任何问题,请私信我,获取详细和耐心的指导。

If you are a student and you are worried about you statistical #Assignments, #Data #Analysis, #Thesis, #Reports, #Composing, #Quizzes, Exams.. And if you are facing problem in #SPSS, #R-Programming, #Excel, Mplus, then contact me. Because I could provide you the best services for your Data Analysis.

Are you confused with statistical Techniques like z-test, t-test, ANOVA, MANOVA, Regression, Logistic Regression, Chi-Square, Correlation, Association, SEM, multilevel model, mediation and moderation etc. for your Data Analysis...??

Then Contact Me. I will solve your Problem...

加油吧,打工人!

往期精彩

R数据分析:用R语言做潜类别分析LCA

R数据分析:贝叶斯定理的R语言模拟

R数据分析:什么是人群归因分数Population Attributable Fraction

R语言:利用caret的dummyVars函数设置虚拟变量

R数据分析:倾向性评分匹配完整实例(R实现)

R数据分析:有调节的中介

R数据分析:如何用R做验证性因子分析及画图,实例操练

R数据分析:如何用R做多重插补,实例操练

R文本挖掘:中文词云生成,以2021新年贺词为例

R文本挖掘:中文文本聚类

R数据分析:临床预测模型的样本量探讨及R实现

R数据分析:多分类逻辑回归

R数据分析:列线图的做法及解释

R数据分析:混合效应模型实例

R数据分析:随机截距交叉滞后RI-CLPM与传统交叉滞后CLPM

R数据分析:生存分析的做法与解释续

R数据分析:多水平模型详细说明

R数据分析:如何做潜在剖面分析Mplus

R数据分析:竞争风险模型的做法和解释二

R数据分析:多元逻辑斯蒂回归的做法

R数据分析:探索性因子分析

R数据分析:层次聚类实操和解析,一看就会哦

R数据分析:交叉滞后模型非专业解释

R数据分析:潜在剖面分析LPA的做法与解释

R数据分析:中介作用与调节作用的分析与解释

R数据分析:非专业解说潜变量增长模型

R数据分析:双分类变量的交互作用作图

R数据分析:如何给结构方程画路径图,tidySEM包详解

R数据分析:潜增长模型LGM的做法和解释,及其与混合模型对比

R数据分析:结构方程模型画图以及模型比较,实例操练

R数据分析:混合效应模型的可视化解释,再不懂就真没办法

R数据分析:结构方程模型的分组比较,实例解析

R数据分析:工具变量回归与孟德尔随机化,实例解析

R数据分析:潜类别轨迹模型LCTM的做法,实例解析

R数据分析:如何用层次聚类分析做“症状群”,实例操练

相关推荐

高中生又来卷我们了!手搓 Android 浏览器,可高度定制+脚本支持

回想一下,你曾经的暑假,是怎么度过的?可能是无尽的娱乐时光,或者是懒洋洋的休息日。然而,对于这位Gitee上的高中生来说,他选择在这个暑假里独立开发一款Android浏览器——Vie浏览器,...

网页加载CAD图纸的两个方案对比说明(网页浏览编辑DWG)

一.说明梦想控件提供两种技术在网页中加载CAD图纸,一个是OCX技术方案,另一个是HTML5技术方案,它们各有优缺点,用户需根据实际情况进行选择,下边分别说明一下。1、ocx技术方案(1)OCX技术是...

前后端分离的开源在线考试系统调试实战

开篇在我们的教育生涯中,或多或少的都接触过在线考试系统。例如大学里最常见的各种软件考试,上机考试等,那么有没有开源的这样的系统呢?当然是有了,今天就来调试个开源的在线考试系统。本文重点是调试,因为很多...

网友:小松鼠长大了!UC浏览器推出18周年专版logo引热议

近日,互联网厂商logo更新再次引发热议。作为国内手机浏览器的代表性厂商,UC浏览器的标志性logo小松鼠悄然发生了变化,在网友中引发了关注和讨论。依照UC微博官方账号的说法,这个全新的形象是UC18...

超多案例!谷歌AI模型Nano Banana的5个实用+趣味玩法

再不用这个AI修图神器,你的同行明天就把订单抢光了。谷歌刚放出的NanoBanana,能在一张照片里把背景、姿势、衣服一次换完,脸还是那张脸。实测把地铁照改成海边大片,只用一句话,三秒出图,不用PS来...

2025年最佳Windows数据恢复软件解决方案前5名

您是否正在寻找互联网上排名前五的WindowsPC最佳数据恢复软件解决方案?其实,网上有很多工具可以恢复已删除的文件。但并非所有应用程序都值得使用。值得信赖的文件恢复工具可以帮助您快速检索丢失、删...

电脑数据恢复软件推荐:10个顶级数据恢复软件分享

在数字化的工作与生活中,电脑文件误删除的情况时有发生,这不仅会引发我们的焦虑情绪,更可能导致重要数据的丢失。不过,幸运的是,借助正确的数据恢复软件,我们仍有机会找回那些被误删的文件。10个顶级数据恢复...

更懂国内APP的开源智能体!感知定位推理中文能力全面提升

更懂国内APP的开源智能体!感知定位推理中文能力全面提升“帮我点外卖,别点到广告位。”一句话,说出了多少人对手机自动化的真实期待。浙大和美团刚扔出来的开源项目UItron,就是冲着这句吐槽来的——它真...

美光首家推出采用EUV技术的1γ DDR5 DRAM芯片

美光科技宣布已开始向部分生态系统合作伙伴和客户出货1γ(1-gamma)16GbitDDR5DRAM芯片。美光声称,它是第一个采用1-gamma(1γ)节点的公司,该节点指的是DRAM工艺技术的第...

DDR4的PCB设计及仿真_ddr pcb

以下文章来源于鼎阳硬件智库,作者王彦武DDR4关键技术和方法分析1.1DDR4与DDR3不同之处相对于DDR3,DDR4首先在外表上就有一些变化,比如DDR4将内存下部设计为中间稍微突出,边缘变...

DDR4和DDR5内存的性能差距有哪些?

DDR4和DDR5内存的性能差距主要体现在带宽、延迟、能效及未来扩展性上,以下是关键差异的总结及选择建议:1.带宽与频率DDR4:主流频率为2133MHz–3600MHz,带宽约25.6–30.2...

DDR5内存一根和两根的区别,建议收藏观看。

大家好,我是海韵,DDR5内存条,单条和双条有什么区别,如何选择,DDR5单条和双条内存在性能上存在差距,单条内存保持在64个通道,但内部升级为32乘以2,虽然出口速度相同,但内部运行略有提升,...

Kingston FURY叛逆者DDR5 RGB CUDIMM内存评测 强势突破9000MT/s!

【ZOL中关村在线原创评测】当8000MT/s从当年的液氮超频艰难达成,到如今XMP轻松开启,DDR5内存频率的极限探索似乎看不到终点。在早先,我们曾为大家带来KingstonFURY品牌的叛逆者D...

SK海力士将在年内推出1bnm 32Gb DDR5内存颗粒

IT之家4月25日消息,据韩媒NEWSIS报道,SK海力士在今日的2024年一季度财报电话会议上表示将在年内推出1bnm32GbDDR5内存颗粒。32Gb颗粒意味着消费级的...

DRAM史上最大代际倒挂继续:三星将延长DDR4生产期限至2026年

IT之家8月6日消息,韩媒TheElec今天(8月6日)发布博文,报道称三星决定延长DDR41zDRAM的生产期限至2026年,一方面在DRAM史上最大代际倒挂中进...

取消回复欢迎 发表评论: