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


R数据分析:变量间的非线性关系,多项式,样条回归和可加模型
文章图片
我们看下图 , 下图中对于x和y关系的拟合是通过x的3个基础函数相加得到的:
R数据分析:变量间的非线性关系,多项式,样条回归和可加模型
文章图片
GAMsautomaticallylearnanonlinearrelationshipbetweeneachpredictorvariableandtheoutcomevariable,andthenaddtheseeffectstogetherlinearly,alongwiththeintercept.
就是说广义可加的原理就是 ,。
通过广义可加模型可以同时实现模型的可解释性Interpretability , 灵活性flexibility和正则化regularization 。
怎么理解呢 , 我们先看可解释性 , 假如一个可加模型是如下形式的基础函数相加得到的:
R数据分析:变量间的非线性关系,多项式,样条回归和可加模型
文章图片
x2的作用我们就可以解释为在其它变量不变的情况下 , x2和结局之间的关系是线性的 , xp对左边的结局在某个点之前也基本是线性增加的 , 然乎某个点之后xp对结局就无影响了 , 这个就是将模型相加后才可能实现的解释性 。
灵活性在于 , 可加模型可以将所有自变量单独建模后相加 , 我们甚至不需要提前知道xy的关系 , 完全由数据说话的非参数形式 , 就比整体的多项式和样条更灵活 。
正则化则可以避免过拟合 , 可加模型是有一个超参λ的 , 这个超参决定了曲线的歪扭程度 , 英文叫做wiggliness , 通过对超参的控制就可以很方便地实现方差偏差折中 , 见下图:
Thelevelofsmoothnessisdeterminedbythesmoothingparameter,whichwedenotebyλ.Thehigherthevalueofλ,thesmootherthecurve
R数据分析:变量间的非线性关系,多项式,样条回归和可加模型
文章图片
当然还有一个问题就是我到底该用多少个基础函数呢?基础函数越多模型就可以越灵活 。 见下图 , 这个大家在具体操作的时候也是可以自己设定的:
R数据分析:变量间的非线性关系,多项式,样条回归和可加模型
文章图片
我现在手上有如下数据
R数据分析:变量间的非线性关系,多项式,样条回归和可加模型
文章图片
我想探究medv和lstat之间的关系 , 先做个图:
ggplot(train.data,aes(lstat,medv))+geom_point()+stat_smooth()R数据分析:变量间的非线性关系,多项式,样条回归和可加模型
文章图片
可以看到这两个变量间是非常明显的非线性关系 , 此时我们需要考虑给自变量加上多次项拟合 。
在R语言中我们可以使用来加上变量的高次项 , 比如我要加二次项 , 我就可以写出
lm(medv~lstat+I(lstat^2),data=https://pcff.toutiao.jxnews.com.cn/p/20211212/train.data)模型结果如下:
R数据分析:变量间的非线性关系,多项式,样条回归和可加模型
文章图片
刚刚有写我们做样条的时候是需要设定结的 , 比如我就设定自变量的第25 , 50 , 75百分位为结:
knots做一个立方样条回归() , 代码如下:
model模型输出结果如下:
R数据分析:变量间的非线性关系,多项式,样条回归和可加模型
文章图片
我们接着看广义可加模型的R语言做法 , 我手上有数据如下:
R数据分析:变量间的非线性关系,多项式,样条回归和可加模型
文章图片
我现在想弄明白x3与y的关系 , 但是假如我现在已经知道 , x1和x2与y的关系为非线性的 , 我们是不是要把这个非线性关系控制掉来看我们x3和y的关系呀 。 所以我们跑一个可加模型来瞅瞅:
b1上面的代码中bs设定平滑方法 , sp设定λ 。
运行上面的代码后得到结果如下:
R数据分析:变量间的非线性关系,多项式,样条回归和可加模型
文章图片