在讨论多元线性回归的变量选择问题之前,先介绍一下回归方程的显著性检验和拟合优度检验,因为这是后面forward(前进法)、backwards(后退法)和stepwise(逐步回归法)方法的理论基础。显著性检验包括方程显著性的F检验和系数显著性的t检验。
F检验
F检验是看全部自变量Xi从整体上对因变量Y是否有显著影响,其原假设H0是所有自变量的待估系数等于0,如果原假设H0被接受,则表明因变量Y与自变量xi之间不适合用线性模型来表述。
t检验
显然,回归方程显著并不意味着每个自变量Xi对因变量Y都显著。t检验则是单独对某一个待估参数进行检验,其原假设H0是某一个自变量的待估系数等于0,。如果接受原假设,则表明该自变量对因变量Y无显著影响,可剔除。
拟合优度检验
拟合优度检验用于检验回归方程对样本观测值的拟合程度,由样本决定系数R方来检验。R方实际上是组间平方和和总平方和之比,取值范围是[0,1],R方越接近于1,表示模型拟合效果越好,能直观反映回归模型拟合效果,但是不能作为严格的显著性检验。因为R方与自变量个数n有关系,当n与样本数接近时,R方很容易接近于1,容易出现overfit状态。
介绍完这些检验,进入正题,变量选择。
在forward、backwards和stepwise这三种方法中,stepwise最受推崇,这些方法在筛选变量时都是利用F检验来筛选变量的,因为相对其他两个检验,F检验更容易推广到对多个自变量的显著性检验。
forward
forward的思想是进入回归模型的自变量由少至多增加,每次增加一个自变量,进行一次显著性检验。针对m元的线性回归方程具体做法是,对m个自变量分别与因变量建立m个一元回归方程,并进行F检验,选取F统计量最大且通过检验的自变量引入回归方程,假定为x1,进一步将x1分别与剩余m-1个自变量组合,建立m-1个二元线性回归方程,同样进行F检验,选取F统计量最大且通过检验的一个自变量组合,如此继续下去,指导所有显著的变量都被引入回归模型为止。
backwards
backwards与forward正好相反,是先将m个自变量一起建立一个m元的线性回归方程,并进行F检验,将F统计量最小的且不通过检验的自变量剔除,如此继续到没有自变量可以剔除。
stepwise
forward和backwards都有显著的缺陷,就是进入的自变量不能再被删除或者被删除的自变量不能再进入模型,而stepwise的思想是有进有出。具体做法是OneByOne将自变量引入模型,每引入一个自变量后,对已经选入的自变量逐个检验,当原引入的自变量由于后面自变量的引入不再显著时,要将其剔除。
需要注意的是,stepwise方法的引入自变量的显著性水平和剔除自变量的显著性水平alpha(前面使用的F检验统计量一般我们是看对应的显著性水平alpha)是不同的,要求alpha进要小于alpha出,否则会引起死循环。当alpha进大于等于alpha出,F统计量的alpha水平鉴于两者之间时,该自变量会重复的被选入再被剔除。
sas code:
/*回归建模*/
ODS GRAPHICS ON;*开启画图模块
PROC REG DATA=WORK.DATA*建模数据表
OUTEST= WORK.ESTIMATE*参数估计输出表
PLOTS(ONLY)=ALL*画模型全部相关拟合效果图
;
BY var1 var2;*分组变量
Linear_Regression_Model: MODEL Y = X1 X2 X3 ... XM
/ SELECTION=STEPWISE*选择变量筛选方法,另外可选forward、backwards等
SLE=0.10 *进入模型的显著性水alpha平临界值
SLS=0.15 *剔除模型的显著性水alpha平临界值
INCLUDE=0
TOL VIF *容忍度和方差膨胀因子
;
OUTPUT OUT=WORK.OUTPUT*结果输出
PREDICTED=predicted_Y *预测值
LCL=lcl_Y *置信下限
LCLM=lclm_Y *置信上限
;
RUN;
QUIT;
ODS GRAPHICS OFF;