今天练习到了多元线性回归的 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 也提供了更好的方法:
在线性回归中,对数据的对数化也是经常要操作的数据处理方式:
领取专属 10元无门槛券
私享最新 技术干货