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值),因此零假设被拒绝,说明先前经验与当前工龄有显著差别。至于先前经验的系数为什么是负的(即入本公司前工作年份越长、工资越低),则是该数据的特定问题,与本例无关了。

2009-02-10

如何检验男女两组回归系数之间的差别?


罗拉 @ 2009-02-06:

在SPSS中以性别为分组变量做分组回归,应该如何比较回归系数的差异?

庄主 @ 2009-02-08:

如果你问的是如何解读性别的回归系数,请参见我刚发的“回归与GLM分析结果真的不同吗?”。

罗拉 @ 2009-02-08:

这个问题我想问的是如果使用SPSS将相同的回归方程分别用于男生和女生数据,比如:女生组:y1=a1+b1x+c1z 男生组:y2=a2+b2x+c2z,这时该如何看y1和y2是否等同,也就是如何得到AMOS跨组比较中模型对男女是否等同的结果呢?

小彭 @ 2009-02-09:

To 罗拉:你是要检测交互效果吗?如果是,在SPSS里面可以创造一个交互变量。在AMOS(严格说是在SEM)里,可以用多组比较的办法。

罗拉 @ 2009-02-09:

To 小彭:我是想把性别作为调节变量,在AMOS里用多组比较的方法,从结果报告的P值可以看出模型对男女是否等同,但是如果在spss里对男女分别做回归,该如何看两个方程式是否有差异呢,印象中有个公式可以判别,但是实在想不出了。

庄主 @ 2009-02-10:

To 罗拉:以下回答以你的两个公式为基础:女生组:y1=a1+b1x+c1z; 男生组:y2=a2+b2x+c2z。

1. 比较两个回归系数之间差别的公式为:(b1-b2)/se12,其中b1和b2是被比较的回归系,se12是两者的Join Standard Error(联合标准误差),其结果是一个以自由度为n-k-2的t分布(其中n是样本量、k是原来的自变量数,本案中为x和c两个)。

2. 在SPSS(其实是任何OLS回归)中,你如果将男女分成两个样本分布做回归,可以得到b1和b2,但得不到联合标准误差se12(因为b1和b2出现在不同的模型中国),所以无法用到上述公式。

3. SEM(包括AMOS)是通过比较男女样本的拟合度之差别来比较两组回归系数之间的等同性,这种方法在OLS回归中并不适用。同时,SEM的这种做法是有代价的:它将一个总样本分成两个小样本,其结果是降低了Power of Analysis (统计分析效力),从而在没有降低犯Type I的误差的同时又提高了犯Type II误差。

4. 更合理的方法是男女不分组、保留在同一样本内,将性别转换成dummy变量,再生成性别与你想比较的自变量(如X)的交互变量(如X*性别),这就是我和小彭各自发的前贴的意思。也就是说,将你的公式1(或公式2)中改成:

Y = a + bX + cZ + dS +eSX + fSZ

其中S是性别(假定男=0、女=1),SX是性别与X的交互变量、SZ是性别与Z的交互变量。如果男女在S上的取值(即0和1)代人该公式,就可以分解成以下两个公式(注意:样本还是一个):

女生组(S=1):Y = a + bX + cZ + d1 +e1X + f1Z = (a+d) + (b+e)X + (c+f)Z

男生组(S=0):Y = a + bX + cZ + d0 + e0X + f0Z = a + bX + cZ

如果d是显著的(即男女本身之差别),就说明女生在Y上的截距(即平均值)比男生高d个单位(见以下左右图的截距);如果e是显著的(即性别对X与Y之关系的影响),就说明女生的X斜率比男生大e个单位(见左下图红线的斜率);如果f是显著的(即性别对Z与Y之关系的影响),就说明女生的Z斜率比男生大f个单位(见右下图紫线的斜率)。

Interaction between sexes

注:上两图应该是合并在一个三维图,但是不容易看清楚,所以分开来画。

如何生成SX、SZ、如何防止S、X、Z、SX和SZ的共线性等具体操作问题,可参见本庄已有的好几个有关帖子。

2009-02-08

回归与GLM的分析结果真的不同吗?

dylan @ 2009-02-04:

祝老师,您好!我在做回归分析时发现对于分类变量有2种处理方法,1是引入哑变量(或叫虚拟变量),2是在minitab中采用方差分析的一般回归模型,两种方法的结果是不一样的,究竟应该采用哪种方法才是合理的呢?还是都可以用?这2种方法的区别是什么呢?各有啥优缺点呢?期待您的答复。

庄主 @ 2009-02-08:

dylan说对了一半,即对于定类属性的自变量,历来有两种方法,一是直接将定类自变量进入方差分析,二是先将定类自变量转换为dummy variable(哑变量)、然后再进入回归分析。dylan提到的”一般回归模型“,应该指General Linear Model(GLM),其实是对方差分析的扩展,而不是对回归分析的扩展,所以译成“一般回归模型”容易引起误解,如熟悉回归分析的用户对于GLM的术语、思想等都会感到很陌生。

dylan的另一半结论是错的,上述两种方法(即方差或GLM与回归)的分析结果应该而且必须是一样的。如果你看到的结果不同,可能是你在两个分析中设置的模型不同(如回归中只有主影响而GLM中还包括主影响之间的交互关系)、更有可能是两种软件(如minitab与SPSS)或同一软件中GLM与回归的子程序对定类自变量组别之间的比较方法(技术术语叫做contrast coding)不同。以SPSS的GLM为例,其输出的Parameter Estimates(回归系数估计值)表以前是以effects-coding为内定值,其结果与回归中的哑变量(叫做dummy-coding,indicator-coding,simple-coding等)自然不同;但现在该表已经改成simple-coding,所以其结果与回归的哑变量结果一样了。我不用minitab,不知道它的内定contrast coding是什么,很可能是effects-coding。当然,如下例所示,即使我们在回归和GLM中采用了同样的contrast coding,还需要使用相同的reference group基准组),否则结果也可能不一样。

为了帮助理解上面的道理,我们来看一个实例。数据是SPSS软件随带的University of Florida graduate salaries.sav(存放在program files\spss之下)。我们先用SPSS的回归分析来检验以下模型:

Salary = b0 + b1Graduate + b2Gender + b3College

其实因变量Salary是该校毕业生的就业起薪,自变量之一Graduate是毕业年份(定距变量)、自变量之二Gender是性别(二分类的定类变量)、自变量之三College是专业(八分类的定类变量)。如前所说,回归之间需要先将定类转换成哑变量。 Gender的取值已经是0(女性)和1(男性)的哑变量了,其基准组是女性。College有八个类别,应该而且必须生成七个哑变量。在本例中,为了简便起见,我们保留原有的三个大专业(即毕业生较多者,包括1 Agricultural, 4 Business, 7 Engineering)而将其它五个小专业(2,3,5,6和8)合成一个“Others”专业,并相应生成C1、C2、C3三个哑变量,分别代表上述三个大专业,而将Others当作基准组(参见附录)。也就是说,回归分析中实际检验的模型中“College”被C1-C3三个哑变量代替了。回归结果见下表右边三列:

RegressionGLM
CoefficientUnstandardized BStd. ErrorParameterBStd. Error
Constant25244.0756.2Intercept25030.3819.1
Graduate1.879.606Graduate1.8790.606
Gender (Male=1, Female=0)213.6422.0[Gender=0]-213.6422.0
[Gender=1]0.
C1 (Agric=1, Others=0)-2428.5 787.5[College=1]-2428.5787.5
C2 (Business=1, Others=0)-1383.4788.1[College=2]-1383.4788.1
C3 (Engineering=1, Others=0)4690.4796.0[College=3]4690.4796.0
[College=4]0.
R Square
.179
R Square
.179
Adjusted R Square
.176
Adjusted R Square
.176
F
47.810
F
47.810
Regression DF
5
Corrected Model DF
5
Error DF
1094
Error DF
1094
Total DF
1099
Corrected Total DF
1099

我们对本例的主要兴趣在于比较回归和GLM结果之间的区别,而不是解读分析结果的社会意义。但是,为了便于讨论,还是先对回归系数的意义做些简单解读。Constant=25244.0指在控制了性别、毕业年份和专业的区别之后,该样本毕业生的平均起薪为25244美元;每早毕业一年,起薪高1.879元(虽然显著、但没什么实际意义);男性比女性平均高213.6元(但因Std Error很大而并不显著);C1表明Agricultural专业比Others低2428.5元(显著);C2表明Business专业比Others低1383.4元(但并不显著);C3表明Engineering比Others高4690.4元(很显著,还是读工科好)。上述模型用了5个自由度(毕业年份、性别和三个专业),共解释了毕业生起薪之间差异的17.6%,符合“多”(剩余很多自由度)、“快”(一步到位)、“好”(模型的解释力不错)、“省”(只用了千分之五的自由度)原则。

好了,我们来看看GLM的结果(上表右三列)。与回归结果相比,GLM的有些术语不同(如用Intercept而不是Constant来指常数),而且也将基准组列在表内(因为基准组没有参数,所以都是0)。后者有其好处,提醒读者每个定类变量中什么是基准组。左右两边相比,除了一处之外,所有的参数(系数、标准误差、R平方、F值、各种自由度)全部一模一样!其原因首先归功于SPSS对GLM的修改(其实这么做是方便了“回归派”弟子但对“方差派”是不恭的)。其次也与我碰巧(其实是有意的)选对和选错基准组有关。

先说选对的地方:我在将College合成四个组之后,将第4组Others定为基准组,所以回归中用了C1,C2,C3、而没有用C4(C4从头到尾没有用到,放在那里是留给哪位有兴趣者用来替换C1-C3中的任意一个),这正好与GLM的内定选择(组别数值最大者)相一致。

现在来看选“错”的地方:原始数据Gender中男性=1、女性=0,在回归中,取0的是基准组,当我们得到Gender的回归系数为正值(213.6)时,我们知道这说明研究组(男性)高于基准组(女性)。然后,在GLM中,男性被当作基准组(因为1大于0),所以在其结果中,Gender=0的参数为-213.6而Gender=1的参数为0(提醒我们后者为基准组)。回归和GLM的参数值相同而符合相反,就是因为不同的基准组在作怪。当然,我可以在做GLM时将Gender的男女取值对换,使得两个分析结果完全一样。我故意不做这一步,以显示选对基准组的重要性。

最后总结一下:回归与GLM在本质上是一样的,但在操作上和输出结果上有所不同。两者不存在孰优孰劣,完全取决于各自原有的习惯和手头研究问题的需要。我对回归更熟悉,所以一般用回归。但如果遇到大部分自变量都是定类数据时,也会转到GLM上。当然,如果遇到多个相关的因变量,回归无法做,GLM就是一种很好的选择。我在写Zhu & He (2002) Communication Research 29, pp. 466-495 那篇文章时,就是用GLM做的,但考虑(推测)读者多半更熟悉回归,所以在报告结果时,花了一番心血来展示四个组之间的差别,时至今日我还不能肯定那中报告方法是帮助还是混淆了读者。

附录、SPSS指令(其中大写字母为命令、小写字母为变量名)

GET FILE='C:\Program Files\SPSS\University of Florida graduate salaries.sav'.

RECODE college (1=1)(4=2)(7=3)(else=4)
/college (1=1)(else=0) into c1
/college (2=1)(else=0) into c2
/college (3=1)(else=0) into c3.
VALUE LABELS college 1 'Agricultural' 2 'Business' 3 'Engineering' 4 'Others'.
FREQ college c1 c2 c3.

REG DEP=salary/ENTER graduate gender c1 c2 c3.

GLM salary BY gender college WITH graduate/PRINT=parameter/DESIGN graduate gender college.