在之前的文章中,我写了变量之间的线性关系,包括回归和广义线性回归。 变量之间的非线性关系其实很常见。 今天就写一下论文中常见的非线性关系如何拟合。 关系。 包括多项式回归Polynomial regression和样条回归Spline regression。

多项式回归

首先,让我们看一个二次拟合的例子。 现在我想探讨一下苹果含量和苹果酒酸度之间的关系。 第一步应该是制作苹果含量与苹果酒酸度之间关系的散点图。 如果是下图:

双样本t检验 方差假设_方差分析和t检验的区别和联系_t检验等方差假设

然后我可以直观地看到,曲线(二次)拟合数据明显优于线性拟合。

以上只是二次项拟合的一个例子。 事实上,我们经常会遇到高阶公式会更好地拟合数据的可能性。 事实上,社会科学论文中经常看到高阶回归。 常见的1次、2次、3次、4次用英文论文表示方差分析和t检验的区别和联系,曲线形状如下:

双样本t检验 方差假设_方差分析和t检验的区别和联系_t检验等方差假设

t检验等方差假设_双样本t检验 方差假设_方差分析和t检验的区别和联系

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

方差分析和t检验的区别和联系_t检验等方差假设_双样本t检验 方差假设

通常,不应省略模型中的所有低阶项。 也就是说,如果我有4个项目,那么应该有3个、2个和1个项目。

具有二次或更多二次的模型称为多项式回归模型。

样条回归

我之前在机器学习的文章里写过fitting for you。 我们在做多项拟合的时候,可以把项数调的很高,总能拟合我们复杂的非线性关系,但是问题是外推没有了,这不是我们想看到的结果:

高次多项式允许我们捕获数据中复杂的非线性关系,但因此更有可能过度拟合训练集。

此外,自变量与因变量之间的关系在自变量的不同取值范围内并不是一成不变的。 比如某个区间是线性的,某个区间是2度曲线,某个区间是3度曲线。 曲线。

处理以上两个问题的方法之一就是样条

所谓样条就是将多条线段形式化。 一条曲线拟合成多个段。 线段之间的分割点称为节点。

样条是分段多项式函数。 这意味着它将预测变量分成多个区域,并在每个区域内拟合一个单独的多项式,这些区域通过结相互连接。

双样本t检验 方差假设_t检验等方差假设_方差分析和t检验的区别和联系

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

通过对关系曲线进行划分,可以尽可能达到拟合好、解释容易的目的。

我们还将在论文中看到受限三次样条(restricted cubic splines)。 这是什么?

也就是我们正常制作样条,有可能制作成这样:虽然是分段的,但是不连贯:

方差分析和t检验的区别和联系_t检验等方差假设_双样本t检验 方差假设

在这种情况下,将很难解释节点处不连贯的地方。

因此,我们期望得到一条平滑的曲线(增加可解释性),并且开始和结束都应该是线性的,以保证预测的准确性(减少过拟合的影响),像这样:

t检验等方差假设_双样本t检验 方差假设_方差分析和t检验的区别和联系

为了得到这样的效果,我们要给样条加上限制条件,所以叫受限三次样条:

需要施加限制,以便样条是连续的(即,样条曲线中没有间隙)并且在每个节点处“平滑”。 受限三次样条具有附加属性,即曲线在第一个结之前和最后一个结之后是线性的。

样条数目的确定和节点位置的选择也有讲究。 结数可以自己定,但一般不要超过5个; 打结的位置尽量靠近角:

样条中使用的结数由用户决定,但在实践中我们发现通常五个或更少的结就足够了。 节点的位置也需要由用户指定,但通常具有最小值的节点相对接近被建模变量的最小值(例如,第 5 个百分位数),而最大的节点是在建模变量的最大值附近(例如,第 95 个百分位数)。

广义相加模型

上面写的内容,不管是直接拟合还是分段拟合,我们都是在拟合一个完整的曲线或者直线方程,而广义相加模型就是把自变量的单独模型相加。 下图 即一般线性模型和加性模型:

方差分析和t检验的区别和联系_双样本t检验 方差假设_t检验等方差假设

我们看下图。 下图中x和y关系的拟合,是将x的三个基本函数相加得到的:

GAM 自动学习每个预测变量和结果变量之间的非线性关系,然后将这些影响与截距一起线性添加。

也就是说,广义加法的原理是先得到几个容易解释的基本函数。 这个基本函数可以是一次性的,也可以是多次的,然后将这些基本函数线性组合起来,达到更好的模拟效果。 数据的目的。

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

怎么理解呢,我们先来看可解释性,如果通过添加如下形式的基本函数得到加性模型:

双样本t检验 方差假设_方差分析和t检验的区别和联系_t检验等方差假设

x2的作用可以理解为在其他变量不变的情况下,x2与结局是线性关系,而xp对于某一点之前左边的结局基本上是线性增加的,但是到了某一点之后,xp就没有作用了最后,这就是添加模型后才能实现的可解释性。

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

正则化可以避免过拟合。 加法模型有一个超参数 λ。 这个超参数决定了曲线的失真程度。 英文叫做wiggliness。 通过控制超参数,可以很容易地实现方差偏差。 ,见下图:

平滑度由平滑参数决定,我们用 λ 表示。 λ值越大,曲线越平滑

t检验等方差假设_方差分析和t检验的区别和联系_双样本t检验 方差假设

当然,另一个问题是我应该使用多少基本功能? 基函数越多,模型就越灵活。 见下图,具体操作时也可以自行设置:

实践

我现在手头有以下数据

方差分析和t检验的区别和联系_双样本t检验 方差假设_t检验等方差假设

想探究一下medv和lstat的关系,先上个图:

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

双样本t检验 方差假设_方差分析和t检验的区别和联系_t检验等方差假设

可以看出,这两个变量之间存在着非常明显的非线性关系。 这时候我们就需要考虑在自变量中加入多项。

在R语言中,我们可以使用I()来添加变量的高阶项。 例如,如果我想添加二次项,我可以写 I(x^2)

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

模型结果如下:

双样本t检验 方差假设_t检验等方差假设_方差分析和t检验的区别和联系

以上就是多元回归的实践,接下来我会写如何做样条回归

我刚刚写道,当我们制作样条曲线时,我们需要设置结。 例如,我将自变量的第 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)

模型的输出如下:

t检验等方差假设_方差分析和t检验的区别和联系_双样本t检验 方差假设

下面看看广义可加模型的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设置λ。

运行上述代码后,结果如下:

方差分析和t检验的区别和联系_t检验等方差假设_双样本t检验 方差假设

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

概括

今天给大家写了多项式回归、样条回归和加法模型。 我希望它能启发你。 感谢您耐心阅读。 我的文章写的很详细,重要的代码都在原文中。 我希望每个人都能阅读它们。 自己动手吧,请转发本文至朋友圈,并私信回复“资料链接”,获取自己收集的所有资料和学习资料。 如果对你有用,记得先收藏,再点赞分享。

也欢迎大家提出意见和建议。 想了解什么统计方法可以在文章下方留言。 也许我会在看到它之后为您写一个教程。 如有任何疑问,欢迎私信。

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

关于Z检验、t检验、方差分析、多变量方差分析、回归、卡方检验、相关性、多水平模型、结构方程模型、中介调整、量表信效度等如有疑问请私信给我留言,详细耐心指导。

如果您是一名学生,并且担心统计#Assignments、#Data #Analysis、#Thesis、#Reports、#Composing、#Quizzes、Exams.. 如果您在#SPSS、#R-Programming 中遇到问题, #Excel,Mplus,然后联系我。 因为我可以为您的数据分析提供最好的服务。

您是否对用于数据分析的 z 检验、t 检验、方差分析、多元方差分析、回归、逻辑回归、卡方、相关性、关联、SEM、多级模型、调解和调节等统计技术感到困惑…? ?

然后联系我。 我会解决你的问题…

加油,打工人!

精彩过往

R 数据分析:潜在类分析 LCA with R language

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 数据分析:竞争风险模型 II 的实践和解释

R数据分析:多元Logistic回归的实践

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

R数据分析:层次聚类实践与分析,一看就懂

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

R数据分析:Latent Profile Analysis LPA实践与解读

R 数据分析:中介和调节效应的分析和解释

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

R 数据分析:两个分类变量的交互作图

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

R数据分析:潜在增长模型LGM的实践与解读,以及与混合模型的对比

R数据分析:结构方程模型绘制与模型比较,实例练习

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

R数据分析:结构方程模型的分组比较方差分析和t检验的区别和联系,案例分析

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

R数据分析:潜在类轨迹模型LCTM的实践,实例分析

R数据分析:如何使用层次聚类分析制作“症状群”,实例练习