SAS第三十三课逐步回归分析

SAS第三十三课逐步回归分析
SAS第三十三课逐步回归分析

第三十三课逐步回归分析

一、逐步回归分析

在一个多元线性回归模型中,并不是所有的自变量都与因变量有显著关系,有时有些自变量的作用可以忽略。这就产生了怎样从大量可能有关的自变量中挑选出对因变量有显著影响的部分自变量的问题。

在可能自变量的整个集合有40到60个,甚至更多的自变量的那些情况下,使用“最优”子集算法可能并不行得通。那么,逐步产生回归模型要含有的X变量子集的自动搜索方法,可能是有效的。逐步回归方法可能是应用最广泛的自动搜索方法。这是在求适度“好”的自变量子集时,同所有可能回归的方法比较,为节省计算工作量而产生的。本质上说,这种方法在每一步增加或剔除一个X变量时,产生一系列回归模型。增加或剔除一个X变量的准则,可以等价地用误差平方和缩减量、偏相关系数或F统计量来表示。

无疑选择自变量要靠有关专业知识,但是作为起参谋作用的数学工具,往往是不容轻视的。通常在多元线性模型中,我们首先从有关专业角度选择有关的为数众多的因子,然后用数学方法从中选择适当的子集。本节介绍的逐步回归法就是人们在实际问题中常用的,并且行之有效的方法。

逐步回归的基本思想是,将变量一个一个引入,引入变量的条件是偏回归平方和经检验是显著的,同时每引入一个新变量后,对已选入的变量要进行逐个检验,将不显著变量剔除,这样保证最后所得的变量子集中的所有变量都是显著的。这样经若干步以后便得“最优”变量子集。

逐步回归是这样一种方法,使用它时每一步只有一个单独的回归因子引进或从当前的回归模型中剔除。Efroymoson (1966)编的程序中,有两个F水平,记作F in和F out,在每一步

时,只有一个回归因子,比如说X i ,如果剔除它可能引起RSS 的减少不超过残差均方MSE (即ESS/(N-k-1))的F out 倍,则将它剔除;这就是在当前的回归模型中,用来检验 错误!未找到引用源。i =0的F 比=MSE x x x RSS x x x x RSS i i i /)),,(),,,((121121---ΛΛ是小于或等于F out 。

若剔除的变量需要选择,则就选择使RSS 减少最少的那一个(或等价的选择F 比最小的)。用这种方式如果没有变量被剔除,则开始引进一个回归因子,比如X j ,如果引进它后使RSS 的增加,至少是残差均方的F in 倍,则将它引进。即若在当前模型加X j 项后,为了检验 错误!未找到引用源。j =0的F 比,F ≥F in 时,则引进X j ,其次,若引进的变量需要选择,则选择F 比最大的。程序按照上面的步骤开始拟合,当没有回归因子能够引进模型时,该过程停止。

二、 变量选择的方法

若在回归方程中增加自变量X i ,称为“引入”变量X i ,将已在回归方程中的自变量X j 从回归方程中删除,则称为“剔除”变量X j 。无论引入变量或剔除变量,都要利用F 检验,将显著的变量引入回归方程,而将不显著的从回归方程中剔除。记引入变量F 检验的临界值为F in (进),剔除变量F 检验的临界值为F out (出),一般取F in ≥F out ,它的确定原则一般是对k 个自变量的m 个(m ≤k ),则对显著性水平df 1=1,df 2=1--m N 的F 分布表的值,记为F *,则取F in =F out = F *。一般来说也可以直接取F in =F out =2.0或2.5。当然,为了回归方程中还能够多进入一些自变量,甚至也可以取为1.0或1.5。

1. 变量增加法

首先对全部k 个自变量,分别对因变量Y 建立一元回归方程,并分别计算这k 个一元回

归方程的k 个回归系数F 检验值,记为{11211,,k F F F Λ},选其最大的记为1i F =

max{11211,,k F F F Λ},若有1i F ≥ F in ,则首先将X 1引入回归方程,不失一般性,设X i 就是X 1。

接着考虑X 1分别与X 2,X 3,...,X k 与因变量Y 二元回归方程,对于这k -1个回归方程中X 2,...,X k 的回归系数进行F 检验,计算得的F 值,并选其最大的F 值2j F ,若2j F ≥F in ,则接着就将X j 引入回归方程,不失一般性,设X j 就是X 2。

对已经引入回归方程的变量X 1和X 2,如同前面的方法做下去,直至所有末被引入方程的变量的F 值均小于F in 时为止。这时的回归方程就是最终选定的回归方程。

显然,这种增加法有一定的缺点,主要是,它不能反映后来变化的情况。因为对于某个自变量,它可能开始是显著的,即将其引入到回归方程,但是,随着以后其他自变量的引入,它也可能又变为不显著的了,但是,也并没有将其及时从回归方程中剔除掉。也就是增加变量法,只考虑引入而不考虑剔除。

2. 变量减少法

与变量增加法相反,变量减少法是首先建立全部自变量X 1,X 2,...,X k 对因变变量Y 的回归

方程,然后对k 个回归系数进行F 检验,记求得的F 值为{11211,,k F F F Λ},选其最小的记为

1i F =min{11211,,k F F F Λ},若有1i F ≤F out ,则可以考虑将自变量X i 从回归方程中剔除掉,不妨设X i 就取为X 1。

再对X 2,X 3,...,X k 对因变量Y 建立的回归方程中重复上述过程,取最小的F 值为2

j F ,若有2j F ≤F out ,则将X j 也从回归方程中剔除掉。不妨设X j 就是X 2。重复前面的做法,直至在回归方程中的自变量F 检验值均大于F out ,即没有变量可剔除为止。这时的回归方程就是最终的回归方程。

这种减少法也有一个明显的缺点,就是一开始把全部变量都引入回归方程,这样计算量比较大。若对一些不重要的变量,一开始就不引入,这样就可以减少一些计算。

3. 变量增减法

前面的二种方法各有其特点,若自变量X 1,X 2,...,X k 完全是独立的,则可结合这二种方法,

但是,在实际的数据中,自变量X 1,X 2,...,X k 之间往往并不是独立的,而是有一定的相关性存在的,这就会使得随着回归方程中变量的增加和减少,某些自变量对回归方程的贡献也会发生变化。因此一种很自然的想法是将前二种方法综合起来,也就是对每一个自变量,随着其对回归方程贡献的变化,它随时可能被引入回归方程或被剔除出去,最终的回归模型是在回归方程中的自变量均为显著的,不在回归方程中的自变量均不显著。

三、 引入变量和剔除变量的依据

如果在某一步时,已有l 个变量被引入到回归方程中,不妨设为l X X X ,,,21Λ,即已得回归方程

l

l X X X Y ββββ++++=Λ22110? (33.1)

并且有平方和分解式 ESS RSS TSS += (33.2)

显然,回归平方和RSS 及残差平方和ESS 均与引入的变量相关。为了使其意义更清楚起见,将其分别设为RSS (l X X X ,,,21Λ)及ESS (l X X X ,,,21Λ)。下面我们来考虑,又有一个变量i X (l

TSS = RSS (l X X X ,,,21Λ,i X )+ ESS (l X X X ,,,21Λ, i X ) (33.3) 当变量X i 引入后,回归平方和从RSS (l X X X ,,,21Λ)增加到RSS (l X X X ,,,21Λ,i X ),而相应的残差平方和却从ESS (l X X X ,,,21Λ)降到ESS (l X X X ,,,21Λ, i X ),并有

RSS (l X X X ,,,21Λ , i X )-RSS (l X X X ,,,21Λ)

= ESS (l X X X ,,,21Λ)-ESS (l X X X ,,,21Λ , i X ) (33.4)

记),,,(),,,,(2121l i l i X X X RSS X X X X RSS W ΛΛ-=,它反映了由于引入i X 后,i X 对

回归平方和的贡献,也等价于引入i X 后残差平方和所减少的量,称其为i X 对因变量Y 的方差贡献,故考虑检验统计量

()()()1/,,,,,,,2121--=l N X X X X ESS X X X W F i l l i i ΛΛ (33.5)

其中N 为样本量,l 是已引入回归方程的变量个数,这时若有in i F F ≥,则可以考虑将自变

量i X 引入回归方程,否则不能引入。

实际上大于F in 的变量开始时可能同时有几个,那么是否将它们都全部引入呢?实际编程序时并不是一起全部引入,而是选其最大的一个引入回归方程。

关于剔除变量,如果已有l 个变量被引入回归方程,不失一般性,设其为l X X X ,,,21Λ,所对应的平方和分解公式为:

),,,,(),,,,,(2121l i l i X X X X ESS X X X X RSS TSS ΛΛΛΛ+= (33.6) 其中l i ,,2,1Λ=为了研究每个变量在回归方程中的作用,我们来考虑分别删掉X i (i =1,2,...,l 后相应的平方和分解公式为:

),,,,,(),,,,(11211121l i i l i i X X X X X ESS X X X X X RSS TSS ΛΛΛΛ+-+-+= (33.7) 这时,回归平方和从),,,,,(21l i X X X X RSS ΛΛ降为),,,,(1121l i i X X X X X RSS ΛΛ+-,同时残差也发生相应的变化。残差平方和从),,,,(21l i X X X X ESS ΛΛ增加到),,,,,(1121l i i X X X X X ESS ΛΛ+-,i X 对回归平方和的贡献,也等价于删除i X 后残差平方和所增加的量,同理可表示为:

)

,,,,(),,,,()

,,,,(),,,,(211121112121l i l i i l i i l i i X X X X ESS X X X X X ESS X X X X X RSS X X X X RSS W ΛΛΛΛΛΛΛΛ-=-=+-+- (33.8)

与前同理,我们来构造检验统计量 ()()()1/,,,,,,,,,2121--=l N X X X X ESS X X X X W F l i l i i i ΛΛΛΛ (33.9)

显然,这时F i 越小,则说明i X 在回归方程中起的作用(对回归方程的贡献)越小,也就

是若有out i F F ≤,则可以考虑将自变量i X 从回归方程中剔除掉,我们在编程序时,每次只剔除一个,因此,我们每次选择最小的),,,min(21l i F F F F Λ=来与out F 进行比较。若有out i F F >则可以不考虑剔除,而开始考虑引入。

四、 逐步回归在使用过程中要注意的问题

逐步回归在计算过程中,进入和剔除变量规则的差别在例子中有可能得到说明。例如,可以根据F i 统计量中MSE 的自由度来使用不同的F in 和out F 。但是,往往并不使用这种提纯量,而是使用固定的F 值,因为在搜索过程的重复检验中,并不可能得到精确的概率解释。最低可接受F in 决不应小于最高可接受out F ,否则就有可能重复进入和剔除一个自变量。

自变量进入模型的顺序并不反映它们的重要程度。例如,第一个进入模型的X 1,最终却可能被剔除。我们使用的逐步回归程序,在每个阶段上都打印出偏相关系数。对于筛选变量来说,使用这些相关系数与使用F i 值是等价的,事实上,有些程序就是使用偏相关系数来筛选变量的。进入和剔除一个变量的F 限不必根据近似显著性水平选定,但可以根据误差缩减量来描述性地确定。例如,一个进入变量的F 限2.0可以这样来说明:变量一旦进入模型,那么,进入变量的边际误差缩减量至少应该是剩余误差均方的二倍。

逐步回归方法的一个局限是预先假定有单一的最优X 变量子集,从而来进行识别。正如前面已经提到的,常常并没有唯一的最优子集。因此,一些统计学家建议,求得逐步回归的解后,拟合所有可能与逐步回归解的自变量个数相同的回归模型,以研究是否存在更好的X 变量子集。

逐步回归方法的另一个缺点是当X 变量高度相关时,有时会得到不合理的“最优”子集。也有人提出好几种其他寻找“最优”自变量子集的自动搜索方法。我们这里提一下其中的两种。但这两种方法都还未被接受为逐步搜索方法。其中之一为向前选元法,这种搜索方法只是逐步回归方法的简化,略去了检验进入模型的变量是否应被剔除这一步。其中之二为向后

剔除法,这种搜索方法与向前选元法相反。它从包括所有X 变量的模型开始,挑出*F 值最小的那个变量。例如,假定i X 为*F 值最小的那个变量,有:

()()()1/,,,,,,,,,2121*--=

k N X X X X ESS X X X X W F k i k i i i ΛΛΛΛ (33.10) 如果最小的*i F 值小于预定限,就剔除这个变量,然后拟合剩余的1-k 个自变量的模型,挑

选下一个待剔除元。重复这种过程,直至没有自变量可以被剔除。因为向后剔除法是从最大可能模型开始的,所以它比向前选元法需要更多的计算量。但是,向后剔除法有一个优点,它可以使使用者明白含有许多变量模型的复杂性。

五、 stepwise 逐步回归过程

stepwise 过程对逐步回归提供了九种方法。当你有许多自变量且想找出哪些自变量是该选入回归模型时,stepwise 是有用的。

由于stepwise 可以使你深入地了解自变量与因变量或响应变量之间的关系,所以它对考察分析是很有帮助的。但是,stepwise 并不能保证给你“最好”的模型,甚至具有最大R 2的模型也不一定是“最好”的,并且靠这些均值演变得来的模型没有一个可以保证它精确地描述了真实世界的过程。

stepwise 与rsquare 以及其他过程是不同的。rsquare 对所有自变量的组合找出R 2 ,所以它可以指出具有最大R 2的模型。而stepwise 在挑选变量时选择下面描述的方法,所以,当stepwise 判断模型时,它打印一份多个回归报告。

1. stepwise 过程提供的九种模型

1) none (全回归模型)。没有对回归变量进行筛选,建立Y 与全部自变量的全回归模型。

2) forward (向前选择)。向前选择技术以模型中没有变量开始,对每个自变量,forward 计算反映自变量对模型的贡献的F 统计量。这些F 统计量与model 语句中给出的slentry

=水平上的值相比较,如果F统计量的显著水平没有一个比slentry=水平上(如果缺省slentry=这个参数,则显著水平假设为0.50)的值大,则forward停止。否则,forward 在模型中加入具有最大F统计量的变量,然后forward再计算这些变量的F 统计量直到剩下的变量都在模型的外面,再重复估计过程。变量就这样一个接一个地进入模型直到剩下的变量没有一个可以产生显著的F统计量。一旦一个变量进入了模型,它就不再出去了。3)backward(向后淘汰)。向后淘汰技术以计算含有全部自变量的模型的统计量为开始。然后变量一个接一个地从模型中剔除,直到留在模型中的所有变量产生的F统计量的显著水平在slstay= 水平上(如果缺省slstay= 这个参数,则显著水平假设为0.10)。在每一步,剔除对模型贡献最小的变量。

4)stepwise(逐步回归,向前且向后)。逐步方法是向前选择的修正。对已在模型中的变量,不一定必须一直在模型中,这点与向前选择法是不同的。stepwise按照向前选择方法选入变量后,还考察模型中所包含的所有变量并剔除使得F 统计量的显著水平不在slstay=水平上的变量。只有在完成检验和必要的剔除之后,其他变量才可再进入模型。当模型外的变量没有一个使F 统计量的显著在slentry= 水平上且模型中的每个变量在slstay= 水平上显著,或加到模型中的变量是刚刚剔除的变量时候,逐步处理便结束了。

5)maxr(具有对偶切换的向前选择)。最大R2改良技术是占优势的逐步技术,它几乎与所有可能的回归一样好。不象上面三种技术,这个方法不是落在单个模型上,而是试着找出最佳一变量模型、最佳二变量模型等等,但它不能保证对每个量度都能找到具有最大R2的模型。

maxr方法先找出一个产生最大R2值的变量,然后再加入另一个次最大R2值的变量,从而形成二变量的模型。形成二变量的模型之后,将模型中的变量与模型外的变量相比较,以决定是否移去一个变量而以另一个能生成更大R2值的变量来代替。全部比较结束后,便得

到了最佳二变量模型。依次往下,便得到最佳三变量模型等等。

6) minr (具有对偶搜索的向前选择)。最小R 2 增量法非常类似于maxr ,只是选择准则为产生最小R 2增量。对模型中一个已知的变量数,maxr 和minr 通常产生同样的“最佳”模型,但是minr 在每步中考虑较多的模型。

7) rsquare (R 2选择法)。按给定样本的R 2大小准则选择最优的自变量子集,但不能保证对总体或其他样本而言是最优的。用户可以规定出现在子集中自变量的最大和最小个数及被选择的每种子集的个数。R 2选择法总能够对所考虑变量的每种变量个数找到具有最大R 2的模型,但需要很多的计算时间。

8) adjrsq (修正R 2选择法)。该方法类似于rsquare 法,只是对于选择模型使用的准则为修正R 2统计量。修正公式见(32.27)式。

9) Mallows 的C p 统计量。C p 统计量是由Mallows 提出的作为选择模型的判别式的变量。C p 是一个误差平方总和的量度:

)2(P N MSE ESS C p

P --= (33.11)

其中,P 是模型中包括截距项的参数个数,MSE 是满模型时均方误差,ESS p 是具有P 个自变量(包括截距项)回归模型的误差平方和。作C p 与P 的曲线图,Matlows 建议取C p 首次接近P 的地方的模型。

2. proc stepwise 过程控制语句

stepwise 过程一般由下列语句控制:

proc stepwise data=数据集;

model 因变量=自变量 ;

weight 变量 ;

by 变量 ; run ;

stepwise至少需要一个model语句。by语句和weight语句可以放在任何地方。1)model语句的。stepwise中可以有任意多个model语句。model语句中的选项如下:

●noint——不产生一般在模型中自动生成的截距参数。

●none——请求全回归模型。

●forward或f——请求向前选择法。

●backward或b——请求向后淘汰法。

●stepwise——请求逐步技术,这个任选项是预置的。

●maxr——请求最大R2增量法。

●minr——请求最小R2增量法。

●rsquare——请求R2最大准则法。

●adjrsq——请求修正R2最大准则法。

●cp——请求Mallows的C p统计量法。

●slentry= 值——指出向前选择和逐步技术中选择变量进入模型的显著水平。如果省略,那么stepwise过程便对向前选择技术置slentry= 0.5,对逐步技术置slentry=

0.15。

●slstay= 值——指出向后淘汰与逐步技术中变量留在模型里的显著水平。如果省略,则逐步技术用0.15,向后淘汰技术用0.10。

●include=n——强迫头n个因变量总是在模型中。选择技术由model语句中其他变量来完成。

●start= s——以含有model语句中头s个自变量的模型为开始,进行比较、选择

过程。理所当然地,没有一个被估计的模型含有不足s个的变量。此仅应用于maxr或minr模型。

●stop= s——当它找到“最佳”s变量模型之后,stepwise便停止。其中s是stop 的值,此仅应用于maxr或minr模型。

2)其他语句

●weight语句——用于指出含有观察值的权数的变量。分析中仅用具有weight变量正值的观察。

●by语句——指定的变量值来分组处理某数据集。

六、实例分析

例33.1 [例32.2续]对fitness数据进行逐步回归分析。

调用reg过程,model语句中的参数选项使用selection=stepwise,请求按逐步回归方法挑选自变量子集。程序如下:

proc reg data= fitness;

model oxygen = age weight rstpulse maxpulse runpulse runtime

/selection=stepwise ;

run ;

运行后,得到见表33.1所示的结果。

表33.1 逐步回归分析结果

.

在输出结果报告中,提供了进入回归变量逐次改变后回归方差分析和拟合的信息。在报告的最后部分,列出了用逐步回归法挑选自变量过程,四个自变量按runtime ,age ,runpulse ,maxpulse 先后次序进人回归模型。所有进入回归的变量在0.15的水平下是显著的,未进

Stepwise Procedure for Dependent Variable OXYGEN

Step 1 Variable RUNTIME Entered R-square = 0.74338010 C(p) = 13.51976469

DF Sum of Squares Mean Square F Prob>F

Regression 1 632.90009985 632.90009985 84.01 0.0001

Error 29 218.48144499 7.53384293

Total 30 851.38154484

Parameter Standard Type II

Variable Estimate Error Sum of Squares F Prob>F

INTERCEP 82.42177268 3.85530378 3443.36654076 457.05 0.0001

RUNTIME -3.31055536 0.36119485 632.90009985 84.01 0.0001

Bounds on condition number: 1, 1

------------------------------------------------------------------------------------------

Step 2 Variable AGE Entered R-square = 0.76424693 C(p) = 12.22493455

DF Sum of Squares Mean Square F Prob>F

Regression 2 650.66573237 325.33286618 45.38 0.0001

Error 28 200.71581247 7.16842187

Total 30 851.38154484

Parameter Standard Type II

Variable Estimate Error Sum of Squares F Prob>F

INTERCEP 88.46228749 5.37263885 1943.41070877 271.11 0.0001

AGE -0.15036567 0.09551468 17.76563252 2.48 0.1267

RUNTIME -3.20395056 0.35877488 571.67750579 79.75 0.0001

Bounds on condition number: 1.036941, 4.147763

------------------------------------------------------------------------------------------

Step 3 Variable RUNPULSE Entered R-square = 0.81109446 C(p) = 6.82780371

DF Sum of Squares Mean Square F Prob>F

Regression 3 690.55085627 230.18361876 38.64 0.0001

Error 27 160.83068857 5.95669217

Total 30 851.38154484

Parameter Standard Type II

Variable Estimate Error Sum of Squares F Prob>F

INTERCEP 111.71806443 10.23508836 709.69013814 119.14 0.0001

AGE -0.25639826 0.09622892 42.28867438 7.10 0.0129

RUNPULSE -0.13090870 0.05059011 39.88512390 6.70 0.0154

RUNTIME -2.82537867 0.35828041 370.43528607 62.19 0.0001

Bounds on condition number: 1.354763, 11.59745

------------------------------------------------------------------------------------------

Step 4 Variable MAXPULSE Entered R-square = 0.83681815 C(p) = 4.76608569

DF Sum of Squares Mean Square F Prob>F

Regression 4 712.45152692 178.11288173 33.33 0.0001

人回归的侯选变量在0.15的水平下是不显著的。同时还概要地提供了每个回归模型变化时的R2值增加值、R2值、CP值、相应的F统计量、p值。在逐步回归的每步细节中,还列出了条件指数的最小值最大值,以及每一个回归变量的类型2平方和。a ge变量进入模型后,R2值的增加值(Partial R2,称为偏R2或部分R2)计算为(650.6657-632.9001)/ 851.3815= 0.020867。如果按CP值选择最优子集,随着进入回归模型中的自变量个数P 从2到5个(包括截距),相应CP值从大到小为13.51976469、12.22493455、6.82780371和 4.76608569,按照Mallows提出的回归模型最优自变量个数的选择准则,CP=4.76608569是最接近自变量个数P=5的模型。CP的计算公式见(33.11)式,当P=5时,CP=138.93001792/5.39197-(31-2×5)= 4.76608569。因此,用逐步回归方法及CP值确认的拟合回归模型为:

oxygen= 98.14788797-0.19773470age +0.27051297maxpulse-0.34810795runpulse-2.76757879runtime

条件指数(condition number)为最大特征值和每个特征值之比的平方根。我们看到当模型进入第四个自变量maxpulse时,最大的条件指数从较小11.59745变成了较大76.85135,说明存在一定程度的共线性,根据前面例33.2的分析,我们诊断这个共线性方程可能为runpulse-maxpulse=0。

在向前、向后或逐步回归的变量选择过程中,都有一个判断是否可进入或剔除的显著水平,在程序中是分别由model语句的选项slentry=和slstay=设定的,缺省的情况见表33.2所示。

表33.2 缺省的入选和剔除显著水平

forward backward stepwize slentry0.50 0.15

slstay0.10 0.15

下面我们提供全部可能回归的程序,并且以R2值的大到小排序输出。

proc reg data= fitness;

model oxygen = age weight rstpulse maxpulse runpulse runtime

/selection= rsquare b ;

run ;

在上述程序中,model语句的选项selection= rsquare,表示请求R2值最大法,选项b 是表示要输出每种回归的回归系数。

程序运行后,得到见表33.3所示的结果。

N = 31 Regression Models for Dependent Variable: OXYGEN Parameter

Number in R-square Estimates

Model Intercept AGE WEIGHT RSTPULSE MAXPULSE RUNPULSE RUNTIME

1 0.74338010 82.4218 . . . . . -3.3106

1 0.15838344 82.458

2 . . . . -0.2068 .

1 0.11999670 59.3325 . . -0.2225 . . .

1 0.09277653 62.2206 -0.3114 . . . . .

1 0.0560459

2 71.2907 . . . -0.1376 . .

1 0.02648849 55.4379 . -0.1041 . . . .

--------------------------------------------------------------------------------------------

2 0.7642469

3 88.4623 -0.150

4 . . . . -3.2040

2 0.76142381 93.0888 . . . . -0.0735 -3.1402

表33.3 用R2排序全部可能的变量数的逐步回归分析结果

程序的输出包括所有只含一个变量的6种回归,含2个变量的15种回归,……。总共有63种不同形式的回归模型。例如,含2个自变量按R2第二个大值选择回归模型为,R2 =0.76142381,拟合的回归模型为

oxygen= 93.0888-0.0735runpulse-3.1402runtime

若对每种变量个数,只要保留R2最大的两种情况,可在model语句中加入选项best=2,即提交以下的程序:

proc reg data= fitness;

model oxygen = age weight rstpulse maxpulse runpulse runtime

/selection= rsquare b best=2 ;

run ;

这一程序提供较为紧凑的输出报表,见表33.4所示的结果。

N = 31 Regression Models for Dependent Variable: OXYGEN

Parameter

Number in R-square Estimates

Model Intercept AGE WEIGHT RSTPULSE MAXPULSE RUNPULSE RUNTIME

1 0.74338010 82.4218 . . . . . -3.3106

1 0.15838344 82.458

2 . . . . -0.2068 .

--------------------------------------------------------------------------------------------

2 0.7642469

3 88.4623 -0.150

4 . . . . -3.2040

2 0.76142381 93.0888 . . . . -0.0735 -3.1402

--------------------------------------------------------------------------------------------

3 0.81109446 111.7 -0.256

4 . . . -0.1309 -2.8254

3 0.8099884

4 80.9008 . . . 0.3542 -0.3751 -2.9702

--------------------------------------------------------------------------------------------

4 0.8368181

5 98.1479 -0.1977 . . 0.2705 -0.3481 -2.7676

表33.4 只保留R2最大两种情况的逐步回归分析结果

通过上面的逐步回归分析,我们已经得到回归模型的自变量个数确定时的最优子集或次优子集,但问题是我们到底应该选择几个自变量的回归模型呢?如上表33.4中的3个自变量、4个自变量、5个自变量、6个自变量的回归模型中哪一个模型呢?一种最简便确定回归模型的自变量个数的方法是Mallows的C p方法。确定好模型的自变量个数后,根据上表33.4就很容易确定在这个固定自变量数下,最优的自变量组合和相应的参数值估计。以下的程序是对所有可能的回归按C p由小到大进行排序并保留其前5种,并绘制C p图。

goptions reset=global gunit=pct cback=white border

htitle=6 htext=3 ftext=swissb colors=(back) ;

title 'Cp plot with Reference Lines';

proc reg data= fitness ;

model oxygen = age weight rstpulse maxpulse runpulse runtime

/selection=cp adjrsq best=5 ;

plot cp. * np. /chocking=red cmallows=blue

vaxis=0 to 15 by 2

haxis=0 to 8 by 1;

run ;

Model语句中的selection=cp选项请求计算Mallows的C p统计量。选项adjrsq表示要显示每种回归模型的统计量Adj-R2。选项best=5表示保留C p值最小的前5种。plot语句中的cp. * np.表达式(注意统计量关键字母后的小圆点)表示Y轴为C p值X轴为P值(P 值包括截距项)。plot语句的选项chocking=red,表示画C p=2P-P full红色参考虚线,其中P是子模型中含截距的参数个数,P full是全模型中不含截距的参数个数。Hoching(1976)建议选择满足C p≤2P-P full且C p≤P的模型。plot语句的选项cmallows=blue,表示画C p=P 蓝色参考实线,其中P是子模型中含截距的参数个数。Mallows(1973)建议考虑所有满足C p较小且接近P的模型。这一程序的输出结果见表33.5和见图33-1所示。

表33.5 按C p由小到大进行排序并保留其前5种逐步回归分析结果

从输出结果可看出,以Mallows的建议为标准,age,maxpulse,runpulse和runtime 四个变量进人回归模型时C p最小(4.76609),且与P=4+1=5最接近,因为5-4.76609<6

图33-1 带有Mallows和Hocking参考线的Cp散点图

N = 31 Regression Models for Dependent Variable: OXYGEN

C(p) R-square Adjusted Variables in Model

In R-square

4.76609 0.83681815 4 0.81171325 AGE MAXPULSE RUNPULSE RUNTIME

5.00021 0.84800181 5 0.81760218 AGE WEIGHT MAXPULSE RUNPULSE RUNTIME

6.75259 0.83690359 5 0.80428431 AGE RSTPULSE MAXPULSE RUNPULSE RUNTIME

6.82780 0.81109446 3 0.79010496 AGE RUNPULSE RUNTIME

-5.00021,所以应该选择C p=4.76609的模型。以Hocking的建议为标准,C p=4.76609的模型不满足要求,因为4.76609>2×5-6=4。而C p=5.00021的模型满足要求,因为5.00021<2×6-6=6且5.00021<6。而C p=6.75259的模型,无论以Mallows的建议还是以Hocking的建议都不满足要求。其实我们不必具体计算,只要看图33-1中,表示C p值大小位置的“+”号,在蓝实线附近即满足Mallows的建议的标准,在红虚线下方即满足Hocking 的建议的标准。但从Adj-R2看,C p=4.76609的模型将变量weight加入后,R2更大

(0.84800181>0.83681815)。不同的标准提供不同的选择结果,这是常有的情况。

相关主题