6 f3 H" _1 K* K& N! i受到该启发后,认真再复习GLM的相关资料,得到更加重要的总结如下(来自高惠璇SAS/STAT软件使用手册,实际是SAS8.2的User's guide的中文版,但是目前SAS 9.2,9.3的User's guide关于GLM模型的介绍中已经删去了这么经典的总结,实在可惜,倒让人看不到GLM的真正长处了): 0 E: \8 T `/ N9 e& p如果X1-X3,Y1-Y2为连续性变量,Y3为分类变量,a-c为分类变量,time为时间变量,目前我们熟悉的模型可以简单概括如下: ( W+ N5 x( ?* x! Y L8 e% g- V(1) y1= x1 简单回归 " ]4 t7 F( k) \6 I(2) y1= x1 x2 x3 多重回归(multiple regression) V. Q- p* ?3 c* H" |' t) i7 p (3) y1 y2=x1 x2 多元回归(multivariate regression) : U3 q. k4 s# q: p* B/ F(4) y1= a 单因素方差分析& p( }" P. k! h4 e! G3 T* L/ D (5) y1= a b (析因设计的)主效应分析 : R- G; e$ p4 D(6) y1= a b a*b (析因设计的)主效应加交互项分析2 ^2 I) W# W: n2 L. [ (7) y1= a x1 协方差分析% y# n: v; H4 P" _ (8) y3= a 单因素logistic回归 / }9 A7 n. [ @. Z ~. R(9) y3= a b c x1 x2 x3 多因素logistic回归6 A( V* N ^3 P' L (10) y3(time) =a 单因素cox回归0 z: J& W5 {: |$ u8 z (11) y3(time) = a b c x1 x2 x3 多因素cox回归 0 H R$ F' i5 }) G; H% Y: f ) o. G8 z! D% z& l. C1-7采用SAS的一般线性模型GLM都能实现,而1-9采用SAS的广义线性模型GENMOD都能实现,具体验证详见后面举例7 [& O: {9 f( b! d& l; ]. h
' S6 w' f7 Q6 n% T) b1 f- R
再次回到开始的问题:掌握上述的基本思路后,因为因变量为连续变量,所以采用线性模型肯定是对的。如果因变量可以认为是正态的,那采用一般线性模型是合理的。所以现在的关键问题是:如果调整多个变量(包含分类和连续变量)后看不同分组间因变量(连续变量)是否仍有差异时,能否再称为协方差分析?我目前认为应该是可以的,但是事实上我们遇到这种情况后,并不再去强调它是协方差的思想,而只是回到线性模型分析的最初的起点,也即是检查残差是否符合线性的基本条件即可。 / T% q3 e$ D+ E; {% g- X ' g, `1 ~. c1 L% U0 u- Y但是现实中,我们在使用GLM解决前面遇到的类似问题时,只是简单地用了,而很多时候我们都没有认真去检验残差是否符合这个条件,这可能是我们滥用GLM的表现之一,因为我们更多只关注模型的参数是否有意义,而不去关心对结果“无关紧要”的前提条件。' `3 o9 W# X; _; T( u0 {; X% G
+ }7 T7 x% I' M8 q% ?9 T再次思考一个问题,上述列举的1-7模型,在GLM中并没有特定的选项指定是哪一种模型,而采用一种表达方式。由此,可以进一步深入概括一句话,GLM模型,对于上述列举的1-7模型并没有本质区别,唯一的区别只是模型中自变量的属性和数量不同。但是我们对1-7模型的叫法却不相同。而其原因是我们对事物的认识是一个由浅到深的过程,之前我们认为他们是不同的7件事情,随着认识的加深,发现原来这些问题可以用一个方式表达出来。而SAS的GENMOD则更能说明这一问题。现在还没有一个模型能把上述模型1-11用一种表达方式表示,但是COX回归在抛开基线生存函数之后剩下的部分也是线性模型,所以说不定哪天真的能够把上述所有模型用一种表达方式表示出来。到时候更应该相信人们对事物的认识绝对是一个由浅到深的过程啦。 ! E# U8 r( o' H, `# B. V- T W& K! K1 i0 o" q1 X5 @3 J- m+ B附:GLM与GENMOD在协方差分析结果的比较 , m7 `( W; b& N- q5 l data drugtest; 6 q' ~5 g- B1 b2 q- V. \& x1 T
input Drug $ PreTreatment PostTreatment @@; ; [9 w0 X, \; w: j datalines; : d- Y6 S( O6 ]$ l$ Y A 11 6 A 8 0 A 5 2 A 14 8 A 19 11 # N( h0 S' h7 w# H9 e: \, ?0 {% ~ A 6 4 A 10 13 A 6 1 A 11 8 A 3 0 ^* z# z+ y P* z% I- N% A
D 6 0 D 6 2 D 7 3 D 8 1 D 18 18 * f* N' p B. l! x0 q% i6 y D 8 4 D 19 14 D 8 9 D 5 1 D 15 9 4 ~5 \% ^: L' h+ Y5 {3 ?
F 16 13 F 13 10 F 11 18 F 9 5 F 21 23 5 s* }+ q& @- A7 O
F 16 12 F 12 5 F 12 16 F 7 1 F 12 20 * w9 F, f5 k( W ; $ F* y! f( \$ F) [4 x; {6 c. v* [
9 L( j/ |3 Y" K7 ^ proc glm; 2 g4 b h' h( S1 P+ Y3 T! a- F class Drug; ) H/ N5 o T+ s; N0 }$ j- z3 B4 y
model PostTreatment = Drug PreTreatment / solution; % c6 v0 B7 u, x7 d lsmeans Drug / stderr pdiff cov out=adjmeans; 3 G% B8 K0 n9 X; d9 O$ s
run; - ?) x z6 h( b$ Y5 { y2 `
- h3 U1 Z2 u1 i
proc genmod data=drugtest; 9 p+ d. G3 B J4 i
class Drug; ) M) x- ^* }- M7 i j8 e, G- ]) I
model PostTreatment = Drug PreTreatment / dist=NOR link=ID obstats type1; 3 q# L( [( u7 f' {
run; % A. ?8 ?! l& M. A$ i# B, |: L+ X8 S8 o+ n9 k0 h* |$ ]
proc print data=adjmeans; 8 g) Z, H' Y( }" D+ v
run;# C+ _. Q& Y% u1 d* v: |/ C8 |
. d3 G5 I6 L& D$ R# W1 l " I3 n' q1 Q# v: z- |+ y + m4 V3 v: G% _& A