2009-02-14

如何检验两个回归系数的差别?

X君 @ 2009-01-23:

曾经看过你的有关“如何检验两个相关系数之差别”的帖子,很有启发。最近看了你另外的帖子“如何检验两组回归系数之间的差别”,又有新的收获。其实我还有一个问题,即如何比较一个回归模型中两个定距自变量的影响之差别。我猜想你的上述两个帖子大概已经间接回答了这个问题,但是我还是无法靠自己解决这个问题。

具体例子是我在一个回归分析中的因变量为知识水平,两个定距自变量分别为媒体使用时间和人际沟通时间。很多书上都说,比较一个回归分析中不同系数的大小,要用标准化系数(BETA)。我的回归中BETA分别为0.22和0.15。我原本以为这些数据已经足以证明媒体影响大于人际影响,但是看了你的两个帖子之后,我不知道是否还要用什么公式来检验两者的差别?谢谢。

庄主 @ 2009-02-14:

同一回归模型中的两个Beta(标准化回归系数)之区别,仅仅告诉我们该样本中这两个自变量影响大小的不同,并不说明两者的区别可以推及研究总体。如同所有其它统计检验问题一样,比较同一回归模型中各系数之间的区别也需要经过如下的统计检验过程:

1. 设立零假设:如果有关的回归模型是 Y = b0 + b1X + b2Z,那么检验其中两个回归系数之差别的零假设是:

b1 = b2 (公式一)

或者其等价公式

b1 - b2 = 0 (公式二)

其中的b1和b2是非标准化系数。

2. 确定检验统计量:由于b1-b2只反映了样本的情况,如要推及总体,需要同时考虑它们的抽样误差,也就是说,要将b1-b2的差别除以两者的Join Standard Error (联合标准误差),即

clip_image002[5] (公式三)

其中se12就是b1和b2的联合标准误差,公式三的结果服从一个以n-k-1的t分布(即用t检验)。这些已在“如何检验男女两组回归系数之间的差别”一文的第1点中说过。两文之间的不同之处是,如果b1和b2来自两个回归模型(如前文的男女分组样本),我们无法得知se12的。而如果b1和b2来自同一模型(如本例),就就可以用如下公式来求出se12了:

clip_image002 (公式四)

其中se12和 se22分别是b1和b2的variance(方差,也就是标准误差之平方),cov12是b1和b2的covariance(协方差)。

3. 设置统计显著水平:即alpha值,一般为0.05。如果样本数据的实际显著水平(即p值)小于0.05,我们就拒绝零假设,即认为b1和b2在总体中也是不同的。反之,如果p值大于0.05,我们就无法拒绝零假设,而维持b1与b2在总体中相等的假定。

4. 计算统计量的值:SPSS(或其它统计软件)回归分析结果中自然有b1和b2的值,但却并不会直接给出se12的值,我们需要先用SPSS算出公式四中的se12 、 se22和Cov12,然后再代入公式四,最后再算出公式三。在SPSS中的操作,如果写syntax,需要在Regression的指令中加上“STATISTICS=BCOV”一句;如果用菜单,需要选取"Analyze/Regression/Linear/Statistics/Covariance Matrix"。这两种方法,都是让SPSS产生一个自变量回归系数的Correlation/Variance-Covariance Matrix(如下例)。

5. 查出实际统计量相对应的显著水平,并因此决定是否拒绝零假设:此步与其它统计检验相同,故省略。

实例:

以下以SPSS所带来的Employees Data.sav来演示上述过程。我们希望用此数据来比较“先前经验”与“本公司工龄”两者对工资水平的影响之差别,也就是说要检验下述回归模型

Salary = b0 + b1PrevExp + b2Jobtime

中的b1和b2之差别。因此,

1. 零假设: b1 - b2 = 0

2. 统计量:可直接应用上述公式三,不需任何修改

3. 显著水平:alpha = 0.05

4. 求出统计量:先用下述SPSS指令做回归分析:

REGRESSION STATISTICS=DEFAULT BCOV/DEPENENDENT=salary/ENTER=prevexp jobtime.

结果分别见表一和表二:

表一、回归系数

Unstandardized
Coefficients
Standardized Coefficients
t
Sig.
B
Std. Error
Beta
(Constant)
24332.66
6376.41
3.816
0.0001
prevexp
-15.9543
7.46028
-0.09772
-2.138
0.032
jobtime
143.2172
77.55162
0.084383
1.847
0.065

表一显示prevexp(先前经验)在0.05水平上是显著的、而jobtime(本公司工龄)在0.05水平上并不显著(当然在marginal的0.10水平上是显著的)。然而,这并不保证两者在总体中一定是显著差别的,需要经过统计检验。为此,我们需要根据表二求出两者的联合标准误差。

表二、回归系数的相关与方差/协方差矩阵

jobtime
prevexp
Correlations
jobtime
1
-0.00298
prevexp
-0.00298
1
Covariances
jobtime
6014.253
-1.72302
prevexp
-1.72302
55.65577

表二是本文的重点,也是大部分用户不曾在回归分析结果中看到过的表格。该表分为上下两半部,上半部是两个回归系数的相关关系(注意这里不是两个自变量之间的相关关系,而是它们的系数的相关关系)、这对本例来说并无用处;下半部是两个系数的方差(对角线)和协方差(非对角线),这正是我们解公式四所需要的。其中,jobtime的方差6014.253就是se2、prevexp的方差55.65577就是se1,而-1.72303就是Cov12,将这三个数值代入公式四,得到se12 = 77.93173, 再代入公式三,得到一个自由度为471的t值-2.042。

5. 如果查任何一本教科书上的t表,我们可以知道当自由度>120、t大于1.96或小于-1.96时的p值小于0.05。而在网上,则有好事者提供了计算p的精确值的服务(如GraphPad Software),我在那里算出本例p值为0.0417(刚刚小于我们设置的alpha值),因此零假设被拒绝,说明先前经验与当前工龄有显著差别。至于先前经验的系数为什么是负的(即入本公司前工作年份越长、工资越低),则是该数据的特定问题,与本例无关了。

2 comments:

庄主 said...

ZSW @ 2011-03-24:
打扰了。我是XXX的一名心理学博士生。最近遇到一个统计学方面的问题:如何检验同一个回归方程中两个自变量回归系数的大小。在找了很多统计方面的书后仍无所获的我无意中看到您网上的一篇贴子:“如何检验两个回归系数的大小”见 http://zjz06.spaces.live.com/blog/cns!3F49BBFB6C5A1D86!1016.entry 后 茅塞顿开。非常感谢老师的无私分享和细致耐心的解答!有一个小问题想请教,您在原帖中所介绍的检验方法和公式的出处能否告知?我想找原书或文章学习一下。万分感激!

庄主:
多谢来信,以及对我博客的关注。我好久没有更新了,有点惭愧。
你问的检验同一回归方程中两个回归系数之差别的统计显著性的出处,可以参考如下文献:

Jacob Cohen, Patricia Cohen, Stephen West, & Leona Aiken (2002). Applied multiple regression/correlation analysis for the behavioral sciences, 3rd edition. Lawrence Erlbaum, pp. 640-642.

如有其它问题,欢迎直接发帖到zjz06.blogspot.com上去(希望你能访问那个网站)。

Anonymous said...

庄主您好,您在这个帖子里说的是检验非标准回归系数(B1与B2)之间的差异,那标准回归系数(Beta1与Beta2)之间的差异应该如何检验呢?谢谢~