原文链接:http://tecdat.cn/?p=208821导言
这篇文章探讨了为什么使用广义相加模型 是一个不错的选择 。 为此 , 我们首先需要看一下线性回归 , 看看为什么在某些情况下它可能不是最佳选择 。
2回归模型 假设我们有一些带有两个属性Y和X的数据 。 如果它们是线性相关的 , 则它们可能看起来像这样:
- a<-ggplot(my_data, aes(x=X,y=Y))+
- geom_point()+
文章图片
为了检查这种关系 , 我们可以使用回归模型 。 线性回归是一种使用X来预测变量Y的方法 。 将其应用于我们的数据将预测成红线的一组值:
a+geom_smooth(col="red", method="lm")+
文章图片
这就是“直线方程式” 。 根据此等式 , 我们可以从直线在y轴上开始的位置(“截距”或α)开始描述 , 并且每个单位的x都增加了多少y(“斜率”) , 我们将它称为x的系数 , 或称为β) 。 还有一点自然的波动 , 如果没有的话 , 所有的点都将是完美的 。 我们将此称为“残差”(?) 。 数学上是:
文章图片
或者 , 如果我们用实际数字代替 , 则会得到以下结果:
文章图片
文章图片
这篇文章通过考虑每个数据点和线之间的差异(“残差)然后最小化这种差异来估算模型 。 我们在线的上方和下方都有正误差和负误差 , 因此 , 通过对它们进行平方并最小化“平方和” , 使它们对于估计都为正 。 这称为“普通最小二乘法”或OLS 。
3非线性关系如何? 因此 , 如果我们的数据看起来像这样 , 我们该怎么办:
文章图片
我们刚刚看到的模型的关键假设之一是y和x线性相关 。 如果我们的y不是正态分布的 , 则使用广义线性模型 (Nelder&Wedderburn , 1972) , 其中y通过链接函数进行变换 , 但再次假设f(y)和x线性相关 。 如果不是这种情况 , 并且关系在x的范围内变化 , 则可能不是最合适的 。 我们在这里有一些选择:
- 我们可以使用线性拟合 , 但是如果这样做的话 , 我们会在数据的某些部分上面或者下面 。
- 我们可以分为几类 。 我在下面的图中使用了三个 , 这是一个合理的选择 。 同样 , 我们可能处于数据某些部分之下或之上 , 而在类别之间的边界附近似乎是准确的 。 例如 , 如果x = 49时 , 与x = 50相比 , y是否有很大不同?
- 我们可以使用多项式之类的变换 。 下面 , 我使用三次多项式 , 因此模型适合: 。 这些的组合使函数可以光滑地近似变化 。 这是一个很好的选择 , 但可能会极端波动 , 并可能在数据中引起相关性 , 从而降低拟合度 。
文章图片
文章图片
4样条曲线 多项式的进一步细化是拟合“分段”多项式 , 我们在数据范围内将多项式链在一起以描述形状 。 “样条线”是分段多项式 , 以绘图员用来绘制曲线的工具命名 。 物理样条曲线是一种柔性条 , 可以弯曲成形 , 并由砝码固定 。 在构造数学样条曲线时 , 我们有多项式函数 , 二阶导数连续 , 固定在“结”点上 。
下面是一个ggplot2 对象 , 该 对象的 geom_smooth 的公式包含ns 函数中的“自然三次样条”。 这种样条曲线为“三次” , 并且使用10个结
文章图片
文章图片
5光滑函数 样条曲线可以是光滑的或“摇摆的” , 这可以通过改变节点数(k)或使用光滑惩罚γ来控制 。 如果我们增加结的数目 , 它将更“摇摆” 。 这可能会更接近数据 , 而且误差也会更小 , 但我们开始“过度拟合”关系 , 并拟合我们数据中的噪声 。 当我们结合光滑惩罚时 , 我们会惩罚模型中的复杂度 , 这有助于减少过度拟合 。
文章图片
6广义相加模型(GAM) 广义加性模型(GAM)(Hastie , 1984)使用光滑函数(如样条曲线)作为回归模型中的预测因子 。 这些模型是严格可加的 , 这意味着我们不能像正常回归那样使用交互项 , 但是我们可以通过重新参数化作为一个更光滑的模型来实现同样的效果 。 事实并非如此 , 但本质上 , 我们正转向一种模型 , 如:
文章图片
摘自Wood (2017)的GAM的更正式示例 是:
文章图片
其中:
- μi≡E(Yi) , Y的期望
- Yi?EF(μi , ?i) , Yi是一个响应变量 , 根据均值μi和形状参数?的指数族分布 。
- Ai是任何严格参数化模型分量的模型矩阵的一行 , 其中θ为对应的参数向量 。
- fi是协变量xk的光滑函数 , 其中k是每个函数的基础 。
7 gam拟合 那么 , 如何 为上述S型数据建立 GAM模型?在这里 , 我将使用三次样条回归 :
gam(Y ~ s(X, bs="cr")
上面的设置意味着:
- s()指定光滑器 。 还有其他选项 , 但是s是一个很好的默认选项
- bs=“cr”告诉它使用三次回归样条('basis') 。
- s函数计算出要使用的默认结数 , 但是您可以将其更改为k=10 , 例如10个结 。
- ##
- ## Family: gaussian
- ## Link function: identity
- ## Parametric coefficients:
- ## Estimate Std. Error t value Pr(>|t|)
- ## (Intercept) 43.9659 0.8305 52.94 <2e-16 ***
- ## ---
- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
- ##
- ## Approximate significance of smooth terms:
- ## edf Ref.df F p-value
- ## s(X) 6.087 7.143 296.3 <2e-16 ***
- ## ---
- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
- ##
- ## R-sq.(adj) = 0.876 Deviance explained = 87.9%
- ## GCV = 211.94 Scale est. = 206.93 n = 300
- 显示了我们截距的模型系数 , 所有非光滑参数将在此处显示
- 每个光滑项的总体含义如下 。
- 这是基于“有效自由度”(edf)的 , 因为我们使用的样条函数可以扩展为许多参数 , 但我们也在惩罚它们并减少它们的影响 。
文章图片
- ##
- ## Method: GCV Optimizer: magic
- ## Smoothing parameter selection converged after 4 iterations.
- ## The RMS GCV score gradient at convergence was 1.107369e-05 .
- ## The Hessian was positive definite.
- ## Model rank = 10 / 10
- ##
- ## Basis dimension (k) checking results. Low p-value (k-index<1) may
- ## indicate that k is too low, especially if edf is close to k'.
- ##
- ## k' edf k-index p-value
- ## s(X) 9.00 6.09 1.1 0.97
anova(my_lm, my_gam)
- ## Analysis of Variance Table
- ##
- ## Model 1: Y ~ X
- ## Model 2: Y ~ s(X, bs = "cr")
- ## Res.Df RSS Df Sum of Sq F Pr(>F)
- ## 1 298.00 88154
- ## 2 292.91 60613 5.0873 27540 26.161 < 2.2e-16 ***
- ## ---
- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
11小结 所以 , 我们看了什么是回归模型 , 我们是如何解释一个变量y和另一个变量x的 。 其中一个基本假设是线性关系 , 但情况并非总是这样 。 当关系在x的范围内变化时 , 我们可以使用函数来改变这个形状 。 一个很好的方法是在“结”点处将光滑曲线链接在一起 , 我们称之为“样条曲线”
我们可以在常规回归中使用这些样条曲线 , 但是如果我们在GAM的背景中使用它们 , 我们同时估计了回归模型以及如何使我们的模型更光滑 。
上面的示例显示了基于样条的GAM , 其拟合度比线性回归模型好得多 。
12参考:
- NELDER, J. A. & WEDDERBURN, R. W. M. 1972. Generalized Linear Models. Journal of the Royal Statistical Society. Series A (General), 135, 370-384.
- HARRELL, F. E., JR. 2001. Regression Modeling Strategies, New York, Springer-Verlag New York.
文章图片
最受欢迎的见解
1.R语言多元Logistic逻辑回归 应用案例
2.面板平滑转移回归(PSTR)分析案例实现
3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)
4.R语言泊松Poisson回归模型分析案例
5.R语言回归中的Hosmer-Lemeshow拟合优度检验
6.r语言中对LASSO回归 , Ridge岭回归和Elastic Net模型实现
7.在R语言中实现Logistic逻辑回归
8.python用线性回归预测股票价格
9.R语言如何在生存分析与Cox回归中计算IDI , NRI指标
推荐阅读
- 广告|拓端tecdat|移动广告中基于点击率的数据策略
- XTrain|拓端tecdat|matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
- 分析|拓端tecdat|R语言文本挖掘NASA数据网络分析,tf-idf和主题建模
- 模型|拓端tecdat|R语言多元逐步回归模型分析房价和葡萄酒价格:选择最合适预测变量
- 偏差|拓端tecdat|在Python和R中使用交叉验证方法提高模型性能
- 网络|拓端tecdat|使用Python中Keras的LSTM递归神经网络进行时间序列预测
- 分析|拓端tecdat|stata马尔可夫Markov区制转移模型分析基金利率
- 期望值|拓端tecdat|R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计
- Copula|拓端tecdat|R语言Copula函数股市相关性建模:模拟Random Walk(随机游走)
- 模型|拓端tecdat|R语言RStan贝叶斯:重复试验模型和种群竞争模型Lotka Volterra