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三个哑变量代替了。回归结果见下表右边三列:
Regression | GLM | ||||
Coefficient | Unstandardized B | Std. Error | Parameter | B | Std. Error |
Constant | 25244.0 | 756.2 | Intercept | 25030.3 | 819.1 |
Graduate | 1.879 | .606 | Graduate | 1.879 | 0.606 |
Gender (Male=1, Female=0) | 213.6 | 422.0 | [Gender=0] | -213.6 | 422.0 |
[Gender=1] | 0 | . | |||
C1 (Agric=1, Others=0) | -2428.5 | 787.5 | [College=1] | -2428.5 | 787.5 |
C2 (Business=1, Others=0) | -1383.4 | 788.1 | [College=2] | -1383.4 | 788.1 |
C3 (Engineering=1, Others=0) | 4690.4 | 796.0 | [College=3] | 4690.4 | 796.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.
2 comments:
庄主您好,这个帖子与我现在碰到的问题正好非常相似,所以我有个问题想请交,还请庄主不吝赐教。
我分析了下你举例用的数据“University of Florida graduate salaries.sav”,假如数据中gender对start salary 有显著影响,而两组(F/M)的数据分别是469/631,这种数目不相等的分组数据会对GLM分析的结果有影响吗?
实际情况是我的数据中F:34/M:17,除了gender还有两个factors(age, volume),而volume本身有显著性别差异,这种情况下要分析gender/age/volume对最后因变量Y的影响,我该怎么进行数据分析?我非常担心样本容量本身不大,而且gender两组数目差距又很大的情况下,GLM是否还适用?
Post a Comment