笔记说明
读《Discovering Statistics Using R》第七章 Regression中的7.6节做的笔记。使用R进行实操部分来自7.8.2-7.8.4节。
多重线性回归
多重线性回归(multiple regression)是简单线性回归在多个自变量下的延申。
每多一个自变量就对应多一个回归系数:
模型拟合更为复杂,但是基本原则与简单线性回归相同:寻找能够最大程度上与因变量相关的自变量的线性组合。
多重线性回归中的决定系数是模型的预测y值和实际观测y值之间pearson相关系数r的平方。多重线性回归中对决定系数的解读与简单线性回归一样:it is the amount of variation in the outcome variable that is accounted for by the model.
模型拟合优度指标
决定系数作为评价模型拟合优度指标的问题是:模型增加自变量,就会增加。Akaike information criterion(AIC)是一个对模型自变量数进行“惩罚”的拟合优度指标,有点像矫正的,AIC的定义为:
其中n为样本量,ln为自然对数函数,SSE为模型的误差平方和,k为自变量个数。公式中的2k起到惩罚自变量个数的作用。
对于AIC的使用有几点说明:
- AIC越大表明拟合越差,AIC越小表明拟合越好,但是多大算大并没有标准。
- 只有在同一批数据上对同模型比较AIC才有意义。
在R中还可以计算另一个类似的指标:BIC(bayesian information criterion)但BIC相关内容不在本书范围。(可参考:AIC和BIC准则)
自变量选择
理想情况下,自变量选择应该基于既往研究。若考虑在已有模型基础上增加新的自变量,新自变量的选择应该基于这些变量的理论重要性。反对随机选择上百个变量直接扔到模型中分析。
另外,自变量进入模型的方式也有很多。当自变量相互间完全不相关时,自变量进入的顺序对参数估计影响很小,但实际中自变量间常常相关,因此自变量选择的方法很重要。
- 分层级(Hierarchical)
分层回归(Hierarchical regression)中自变量选择基于既往研究。研究者决定自变量进入模型的顺序。由既往研究得到的已知自变量根据其预测因变量的重要性先进入模型。在已知自变量进入后,研究者再添加新自变量。新自变量可以一次全部纳入,也可以逐个纳入或分层纳入(即推测最重要的先纳入)。 - 强制纳入(Forced Entry)
将所有自变量全部同时纳入模型。和分层级纳入一样,这种方法需要有很好的专业理论依据。和分层级纳入不同的是研究者不决定进入的顺序。有学者提出(Studenmund&Cassidy,1987)对于理论检验来说这是唯一合适的变量选择方法,因为逐步纳入自变量的技术会收到数据随机变异的影响,当模型重复验证时很少能得到可复现的结果。 - 逐步法(Stepwise methods)
统计学家一般不赞成逐步回归,R也不善于进行自动逐步回归。如果你用R进行逐步回归的结果和用其他软件得到的结果不同,原因可能是其他程序是在多年前写成的,那时编程序的人员还不知道有更好的方法。逐步回归中自变量进入模型的顺序完全基于数学的准则。
在R中进行逐步回归需要指定方向。前进法的初始模型仅有常数项。程序接下来挑选一个预测因变量效果最好的自变量进入模型(根据与因变量的相关系数最高)。如果这个自变量提高了模型预测因变量的能力则保留其在模型中,然后再挑选第二个自变量。挑选第二个自变量的标准是与因变量的半偏相关系数(semi-partial correlation)最高。
具体举例:假设第一个自变量能够“解释”因变量40%的变异,也就是说还有60%的变异未能被解释。程序会选择能解释剩余60%变异比例最大的自变量。半偏相关系数衡量了因变量中“新的变异”中能被带选自变量解释的部分(可参考《Discovering Statistics Using R》笔记10-偏相关分析)。将选择的自变量加入模型后如果模型预测能力提高则会保留该自变量,然后在剩余变量中重复挑选过程。
R做前进法逐步回归时,基于AIC来进行终止判断。如果纳入新变量后模型AIC降低则保留该自变量,如果剩余变量中没有能使模型AIC再降低的变量则逐步法终止。
后退法的初始模型中纳入所有潜在自变量,然后逐一查看剔除某自变量是否能使模型AIC降低,直到剔除模型中任何自变量都无法使AIC再降低。
逐步法中最后一种方向在R中称为“both”,兼具两种方向。同前进发法一样开始,每次有新自变量纳入模型后都会对模型现有的自变量进行一次剔除测试。
后退法优于前进法,因为可能存在抑制效应(suppressor effects):某自变量只在其他某个特定自变量保持不变的情况下才有作用。当有抑制效应存在时,前进法比后退法更可能会舍弃抑制效应涉及的有作用的自变量,有更大的风险犯第二类错误。 - 全子集法(all-subsets methods)
逐步法的问题:基于模型中已有的变量来评价某个自变量对因变量的拟合情况。有人用穿衣服类比逐步法的问题:在大冷天,逐步法可能先选择穿上裤子,但是穿上裤子以后再想穿内裤就很难了。
全子集回归是更好的方法,它尝试所有可能的自变量组合的模型,通过统计量(不深入探究它了)评估拟合效果选择最优模型。
全子集法的问题:随着备选自变量数量增加,可能的自变量组合数呈指数增加。当自变量较多时可能需要很长时间完成所有模型的计算。但如今电脑计算能力有大幅提高,全子集法可行性不再是问题。
自变量选择方法的选择
广义上的逐步法(stepwise methods)包括上面介绍的逐步法和全子集法,他们都基于数学标准选择自变量,有学者认为使用这些方法时决策权不在研究者手中。计算结果会受到样本随机性影响,可能和理论上自变量的重要性不符。另外还有过拟合和欠拟合的风险。基于上述原因,如果不是在模型建立探索阶段,最好避免使用逐步法。如果使用,建议将数据切分使用交叉验证技术(cross-validate),详见7.7.2.2节。
在7.8.1节,推荐的建模策略:选择有理论依据的自变量,先建立一个把所有可能有预测能力的自变量都纳入的模型。根据该模型输出评估各自变量对模型的贡献程度。知道各自变量重要性后再重新建模,只纳入重要的自变量。
使用R建立多重线性模型
使用的示例数据为:Album Sales 2.dat
在《Discovering Statistics Using R》笔记12-简单线性回归 中,用广告投入费用(adverts)来预测唱片销量(sales)建立简单线性回归。在多重线性回归的演示中在次此基础上增加了2个自变量:
airplay:唱片发布前1周内,唱片中歌曲在广播中播放的次数。
attract:乐队的吸引程度。(打分0-10,10分表示最高)
library(rio)
album2 <- import("data/Album Sales 2.dat")
str(album2)
## 'data.frame': 200 obs. of 4 variables:
## $ adverts: num 10.3 985.7 1445.6 1188.2 574.5 ...
## $ sales : int 330 120 360 270 220 170 70 210 200 300 ...
## $ airplay: int 43 28 35 33 44 19 20 22 21 40 ...
## $ attract: int 10 7 7 7 5 5 1 9 7 7 ...
先建立一个和《Discovering Statistics Using R》笔记12-简单线性回归 中一样的简单线性回归模型:
albumSales.2 <- lm(sales ~ adverts, data = album2)
接下来建立一个多重线性回归模型:
albumSales.3 <- lm(sales ~ adverts + airplay + attract, data = album2)
因为albmSales.3模型是在albumSales.2模型的基础上加了2个自变量,书中介绍在这种情况下还可以使用update()
函数通过在albumSales.2模型上新加自变量的方式建立albmSales.3。
albumSales.3 <- update(albumSales.2, .~. + airplay + attract)
函数的第一个参数是需要更新的原有模型,第二个参数为更新后的模型表达式,这里.~.
表示保留原模型的自变量和因变量。
模型结果解读
建立模型后可以使用summary()
查看模型结果
summary(albumSales.3)
## Call:
## lm(formula = sales ~ adverts + airplay + attract, data = album2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -121.324 -28.336 -0.451 28.967 144.132
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -26.612958 17.350001 -1.534 0.127
## adverts 0.084885 0.006923 12.261 < 2e-16 ***
## airplay 3.367425 0.277771 12.123 < 2e-16 ***
## attract 11.086335 2.437849 4.548 9.49e-06 ***
## ---
## Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
##
## Residual standard error: 47.09 on 196 degrees of freedom
## Multiple R-squared: 0.6647, Adjusted R-squared: 0.6595
## F-statistic: 129.5 on 3 and 196 DF, p-value: < 2.2e-16
输出的底部有 它是模型拟合优度的一个测量,表示因变量的平方和中被模型“解释”的比例。《Discovering Statistics Using R》笔记12-简单线性回归 中使用同样数据建立的简单线性模型的为0.335,新纳入2个自变量后增加为0.665,因此可以说乐队的吸引程度和广播次数能够“解释”约33%(0.665-0.335)的因变量变异。
矫正的解读待做完7.7.2.2节交叉验证后再做。
输出还包括模型的参数估计:各自变量的回归系数、回归系数的标准误和t统计量、P值。
从回归系数的正负可以判断对应自变量和因变量间的关系是正向/负向。回归系数还表示在其他自变量不变的情况下,对应自变量每改变1个单位,因变量改变的值。
标准化偏回归系数
使用QuantPsyc
包的lm.beta()
可以计算线性回归模型的标准化偏回归系数。
library(QuantPsyc)
lm.beta(albumSales.3)
## adverts airplay attract
## 0.5108462 0.5119881 0.1916834
标准化偏回归系数表示在其他自变量不变的情况下,某一自变量每改变1个标准差,因变量改变多少个标准差。标准化偏回归系数均以对应自变量的标准差为单位,不同变量间的标准化偏回归系数是可比的。因此可以来衡量自变量的重要程度。
回归系数的置信区间
在summary的输出中有点估计值、有标准误、有自由度,可以用confint()
计算回归系数的置信区间。
confint(albumSales.3)
## 2.5 % 97.5 %
## (Intercept) -60.82960967 7.60369295
## adverts 0.07123166 0.09853799
## airplay 2.81962186 3.91522848
## attract 6.27855218 15.89411823