统计学习多元线性回归实战(一)

今天练习到了多元线性回归的 R 部分,Python 等我先研究一下,毕竟不太熟悉。当然这部分内容比简单线性回归多,所以本次只进行其中的一部分。

1. 多元线性回归

多元线性回归仍然使用 Boston 数据,只不过公式改为了我们考虑了更多的变量。所使用的函数仍然为 `lm`,只不过公式相应的增加了一个或多个变量。其用法和简单线性回归基本一致。

当然,Boston 数据有很多个变量,我们有时可能会使用所有的变量来进行回归,原因见前面的基础部分内容),如同本例,如果一下子打出十三个变量来,累都累死了,哪还有心情看结果啊,我们可以使用下面的方法:

看上去结果好了很多,但是我们在前面的内容中提到了共线性的问题,简单的讲也就是使用的这些变量中,本身就有相关性的问题,如果进行检测,R 中也有现成的软件包来进行解决,那就是 `car` 中的 `vif` 函数。

vif 为 variance of inflation factor (方差膨胀因子) 的缩写,是多个变量模型的方差与单个变量模型方差的比值,这个值越大,说明共线性越严重,如果大于 10,说明存在严重的共线性,通常该值取 5 作为边界。

上面的结果,age 和 indus 明显具有非常大的 p 值,如果我们想不用 age 和 indus,用其他所有的变量做一个回归分析,也有简单的写法:

当然,base 包中还自带 `update` 函数,用来更新模型,修正变量的数量:

2. 交互作用

如果存在交互作用项,例如 lstat 与 black 存在互作,那么在 R 中,他们的语法为 `lstat:black`,`lstat*age` 则表示为 `medv = lstat + age + lstat x age`:

3. 预测因子的非线性变换

实验中的变量 X1,我们可以另外的引入变量 $X1^2$, 使用 `I(X^2)`,例如:

二次项的 p 值接近于 0,表明他导致了模型的改善,我们可以采用 `anova` 假设检验来判断:

anova 对两个模型进行了假设检验,假设为:两个模型同样好;完整的模型更好,检验结果很好的表平了我们要抛弃 H0。相比于简单线性回归的图形,我们使用了非线性变换后,残差的可辨识性更低了。

同样道理,我们可以用三次项或更多此项,但那样打字的负担就更重了,这个不用着急, R 也提供了更好的方法:

在线性回归中,对数据的对数化也是经常要操作的数据处理方式:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180703G1SK4C00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券