最近遇到一个问题,如果因变量为一个连续变量(如胰岛素水平),主要考察的变量为分组变量(如正常血糖组,前糖尿病组,糖尿病组三组),现在的目的是想看调整多种变量(包括多个连续性变量和分类变量)后,胰岛素水平是否一致。/ O) X8 j' {" b/ Q& D# o5 h
: M% W4 ?3 M# v# y& h: o
8 h; t. b: d" _& M1 w/ E- J7 s6 ?一开始的思路想到的是采用GLM进行协方差分析来解决。5 s" b, ^. C3 F4 p9 j1 o
& Y( {8 E6 |2 a, L9 m& p: G5 J; }+ O但是有觉得似乎不是很对,因为经典的协方差分析通常只考虑一个连续变量(协变量)和一个分组变量,同时协变量和分组变量只有不存在交互的时候(经典协方差分析的前提)才能使用协方差分析。6 H) k# N, q: y! J% ^; `7 i1 q9 e( Y
针对我目前的问题,如果想调整多个连续性变量和分类变量,这种方法能否再叫协方差分析?如果可以认为是协方差的思想,用不用检验协方差分析的前提(如协变量与分组变量之间的交互)?多个连续性变量和分类变量存在时,该前提应该怎么检验? 0 n. M: }0 J5 E( p % a1 I, j( \- Z! U通过跟别人交流之后,有一句话非常受用:线性模型其实最重要的不在于用的方差分析还是协方差分析,而主要是检验残差是否符合线性的几个条件。 - f3 j( a& G, {: s' g& m7 R . z6 ^0 U3 ?2 E受到该启发后,认真再复习GLM的相关资料,得到更加重要的总结如下(来自高惠璇SAS/STAT软件使用手册,实际是SAS8.2的User's guide的中文版,但是目前SAS 9.2,9.3的User's guide关于GLM模型的介绍中已经删去了这么经典的总结,实在可惜,倒让人看不到GLM的真正长处了): ' F" j$ y6 @7 G/ k. v8 G如果X1-X3,Y1-Y2为连续性变量,Y3为分类变量,a-c为分类变量,time为时间变量,目前我们熟悉的模型可以简单概括如下:0 J( B* c6 D- X (1) y1= x1 简单回归$ H7 B) j& D- v, h5 F( s (2) y1= x1 x2 x3 多重回归(multiple regression) % H0 u( I( v8 v4 K8 Z. t(3) y1 y2=x1 x2 多元回归(multivariate regression) + ~0 Q/ r G' g0 |# m(4) y1= a 单因素方差分析! E m& F) v/ D; U (5) y1= a b (析因设计的)主效应分析 2 i: A/ y9 ~2 w) S: C% E(6) y1= a b a*b (析因设计的)主效应加交互项分析 + j5 N D- g( Q, a. n3 R3 v. ~1 {(7) y1= a x1 协方差分析 0 j2 C$ F: X4 {% M) c(8) y3= a 单因素logistic回归4 w7 ?9 x8 J0 F; Z (9) y3= a b c x1 x2 x3 多因素logistic回归' m5 n9 t5 H" Y5 G9 H n( F# C (10) y3(time) =a 单因素cox回归 H7 m+ i/ f. t (11) y3(time) = a b c x1 x2 x3 多因素cox回归, m$ [ g8 U" x2 p4 c: ?" L
* w* v- `* r1 N5 u- P- V, C/ t4 f# j1-7采用SAS的一般线性模型GLM都能实现,而1-9采用SAS的广义线性模型GENMOD都能实现,具体验证详见后面举例 - |$ v! U. k: g; T7 D( f$ R& X% W |
再次回到开始的问题:掌握上述的基本思路后,因为因变量为连续变量,所以采用线性模型肯定是对的。如果因变量可以认为是正态的,那采用一般线性模型是合理的。所以现在的关键问题是:如果调整多个变量(包含分类和连续变量)后看不同分组间因变量(连续变量)是否仍有差异时,能否再称为协方差分析?我目前认为应该是可以的,但是事实上我们遇到这种情况后,并不再去强调它是协方差的思想,而只是回到线性模型分析的最初的起点,也即是检查残差是否符合线性的基本条件即可。4 `2 h! O3 u/ n* S- x% j2 i* u, R
% @0 I: l# I+ `6 X
但是现实中,我们在使用GLM解决前面遇到的类似问题时,只是简单地用了,而很多时候我们都没有认真去检验残差是否符合这个条件,这可能是我们滥用GLM的表现之一,因为我们更多只关注模型的参数是否有意义,而不去关心对结果“无关紧要”的前提条件。 $ o- Q& ?3 x3 [% g& z/ R" w( U2 [5 S! ?) k9 p: U
再次思考一个问题,上述列举的1-7模型,在GLM中并没有特定的选项指定是哪一种模型,而采用一种表达方式。由此,可以进一步深入概括一句话,GLM模型,对于上述列举的1-7模型并没有本质区别,唯一的区别只是模型中自变量的属性和数量不同。但是我们对1-7模型的叫法却不相同。而其原因是我们对事物的认识是一个由浅到深的过程,之前我们认为他们是不同的7件事情,随着认识的加深,发现原来这些问题可以用一个方式表达出来。而SAS的GENMOD则更能说明这一问题。现在还没有一个模型能把上述模型1-11用一种表达方式表示,但是COX回归在抛开基线生存函数之后剩下的部分也是线性模型,所以说不定哪天真的能够把上述所有模型用一种表达方式表示出来。到时候更应该相信人们对事物的认识绝对是一个由浅到深的过程啦。& b5 w2 {" b( J/ @: l" ~
" d" _6 Y* C2 x9 D0 Q) n
附:GLM与GENMOD在协方差分析结果的比较: _/ E! e# S I1 L" W
data drugtest; 2 t5 `; p, F2 c0 ?4 i' y
input Drug $ PreTreatment PostTreatment @@; * c$ ~; X3 l. k& Z* i9 r; e; i datalines; 7 A( H( ]. K+ j; [) v+ { A 11 6 A 8 0 A 5 2 A 14 8 A 19 11 5 n. _( F! O$ d
A 6 4 A 10 13 A 6 1 A 11 8 A 3 0 1 F y" x- u' _* h D 6 0 D 6 2 D 7 3 D 8 1 D 18 18 8 O V$ x5 f& z: ?; F D 8 4 D 19 14 D 8 9 D 5 1 D 15 9 / M- K5 R2 j6 n9 S F 16 13 F 13 10 F 11 18 F 9 5 F 21 23 ) \$ ^; P" @# X* O% R* m! y2 V. O F 16 12 F 12 5 F 12 16 F 7 1 F 12 20 0 ~6 A) [, _. j6 b [- J. [
; 9 c0 u+ ^% n% E& L% o8 c4 ~; @) _
' T7 s7 n3 s, C+ |6 o% A o" s proc glm; ' I q* c# d. u) r8 _ \ class Drug; 8 z' Y7 } Q7 C* x2 { C model PostTreatment = Drug PreTreatment / solution; 1 @2 V* O; i. O* G, ]
lsmeans Drug / stderr pdiff cov out=adjmeans; ' w3 m$ w5 ^9 I; R2 J) \ run; " G5 a+ h. j- f9 O/ O