关于数据挖掘:R语言中实现广义相加模型GAM和普通最小二乘OLS回归

52次阅读

共计 3794 个字符,预计需要花费 10 分钟才能阅读完成。

原文链接:http://tecdat.cn/?p=20882 

原文出处:拓端数据部落公众号

 

1 导言

这篇文章探讨了为什么应用狭义相加模型 是一个不错的抉择。为此,咱们首先须要看一下线性回归,看看为什么在某些状况下它可能不是最佳抉择。

\
 

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 是每个函数的根底。

如果您要建设回归模型,但狐疑润滑拟合会做得更好,那么 GAM 是一个不错的抉择。它们适宜于非线性或有噪声的数据。\
 

7 gam 拟合

 

那么,如何 为上述 S 型数据建设 GAM 模型?在这里,我将应用三次样条回归:

gam(Y ~ s(X, bs="cr")

下面的设置意味着:

  • s()指定 滑器。还有其余选项,然而 s 是一个很好的默认选项
  • bs=“cr”通知它应用三次回归样条('basis')。
  • s 函数计算出要应用的默认结数,然而您能够将其更改为 k =10,例如 10 个结。

\
 

8 模型输入:

查看模型摘要:

## 
## 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)的,因为咱们应用的样条函数能够扩大为许多参数,但咱们也在惩办它们并缩小它们的影响。

\
 

9 查看模型:

该 gam.check() 函数可用于查看残差图,但它也能够测试润滑器以查看是否有足够的结来形容数据。然而如果 p 值很低,则须要更多的结。

 

## 
## 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

\
 

10 它比线性模型好吗?

让咱们比照具备雷同数据的一般线性回归模型:

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

咱们的方差分析函数在这里执行了 f 测验,咱们的 GAM 模型显著优于线性回归。

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 指标

 

正文完
 0