R Multiple Linear Regressions 多元线性回归

多元回归

多元回归是线性回归模型的自然延伸。它用于从几个解释变量预测响应的值。每个解释变量都有自己的系数。响应变量由所有变量乘以各自系数的组合来预测。

其基本原理与简单回归相同:我们寻求预测因子的线性组合,以最小化与结果变量的差异。

 

the parallel slopes model 平行斜率模型

数据展示

当我们遇到两个 变量的场景,其中一个是 数字型变量(温度),其中一个是 分类型变量(是否是周末),我们定义了下面这样的模型:

X1 是“温度”,X2是 “是否是周末”

 

也就是这样的:

 

我们得到的是两条线,斜率 slpoe是一样的 (都是β1),但是截距不一样 (βˆ0 和 βˆ0 + βˆ2) ,注意虽然是两条线,但只有一条线对应每一个数据点。

 

R模型如下,可以看到 dayType这个预测变量 的系数是51.55 , 这个应该就是蓝色 (Weekend )的那条线比红色的高出来的截距。

可以看到模型总结里是 dayTypeweekend 而不是 dayType ,这GLM里面有类似的表达,注意其含义。

 

model with interaction (交互模型) 

 

上面的交互模型 给出了 以下的截距(两个)和斜率(两个),它表示着两条线,而且有着不同的截距和斜率

 

我们得到的是两条线,斜率 slpoe是不一样的,截距也不一样,注意虽然是两条线,但只有一条线对应每一个数据点。

这让我们看到了 :工作日的斜率更高, 非工作的的截距更高。这个模型似乎,比上一个看起来更加的合理一些~

Choosing your model 模型选择

多元线性模型的模型选择(其实就是选择保留那些预测变量)还是比较直观和简单的,一个个加和一个个减都是值得尝试的办法

对一个多重线性模型,解释变量数量的选择 是一个 目的明确 的过程,我将它总结成如下:

  • 先使用 look at scatterplots and correlation coefficients (这里我们可以用那个GGally 的GGpairs函数得到变量之间的线性相关系数矩阵,有一个初步的判断);
  • 然后我们使用减法,也就是我们把尽可能多的我们认为有影响力的解释变量(Xi)全加到公式里面去,这里可以把可用的全加上;
  • 然后我们观察p-value,依次减去最大的p-value项
  • 最后停下来的标准是我们已经得到了尽可能大的 adjusted R2 和 尽可能少的 (奥卡姆剃刀理论)解释变量数目(请不要强行纠结哪个更重要)

一些额外

一般来讲我们没有涉及到变量之间的交互,譬如相乘,但有些场景下这是值得考虑的做法,这增加了模型的 flexibility ;

预测变量的 的高次幂 也可以被考虑用以增加模型的 flexibility,但在model fit 上有一些不好的性质;

一个经验之谈,预测变量的的高次幂项存在,那么其对应的底次幂也应该被初始考虑;

过高的 flexibility 会导致饱和模型 (过拟合),意味着我们实现了数据的 reproducing ,但failed to explain the data;

参数丢弃在R 中我们可以使用 drop , anova (用来比较两个嵌套模型中部分预测变量是否有存在的必要);

我们也可以结合使用 CV 和 RFE (RFECV )来确定一堆预测变量 我应该使用哪些,python 中一般会这样做。

方差扩大因子(Variance inflation factor,VIF)也可以视为一个变量 是否应该存在的参考,它 等于多元模型中该系数的方差与只有一个变量的模型中该系数的方差的商。当各变量线性无关时方差扩大因子为1。如果方差扩大因子过大,则说明自变量之间有较强的相关性,可以去掉方差扩大因子较大的变量或将相关的变量组合成单一变量。