最近遇到一个问题,如果因变量为一个连续变量(如胰岛素水平),主要考察的变量为分组变量(如正常血糖组,前糖尿病组,糖尿病组三组),现在的目的是想看调整多种变量(包括多个连续性变量和分类变量)后,胰岛素水平是否一致。 . u6 [* p3 o" M, v5 y' e6 O+ h; }2 I- Q6 B7 j7 B) v
/ v" y/ S) G2 a5 W/ \9 ]; |; ~' D一开始的思路想到的是采用GLM进行协方差分析来解决。. s& ]/ S* V- @
m. w& I! K E! p9 _! Q p2 ?: Z
但是有觉得似乎不是很对,因为经典的协方差分析通常只考虑一个连续变量(协变量)和一个分组变量,同时协变量和分组变量只有不存在交互的时候(经典协方差分析的前提)才能使用协方差分析。/ z, y% }7 C( \
针对我目前的问题,如果想调整多个连续性变量和分类变量,这种方法能否再叫协方差分析?如果可以认为是协方差的思想,用不用检验协方差分析的前提(如协变量与分组变量之间的交互)?多个连续性变量和分类变量存在时,该前提应该怎么检验?' u! E6 u# P6 F8 X# k) P0 s7 Q) S
1 e- ~- {% u& L: j7 E# k# s" X
通过跟别人交流之后,有一句话非常受用:线性模型其实最重要的不在于用的方差分析还是协方差分析,而主要是检验残差是否符合线性的几个条件。+ y q& V* z; A# f2 T
% y& k& h8 i( `$ V, J. ^; `受到该启发后,认真再复习GLM的相关资料,得到更加重要的总结如下(来自高惠璇SAS/STAT软件使用手册,实际是SAS8.2的User's guide的中文版,但是目前SAS 9.2,9.3的User's guide关于GLM模型的介绍中已经删去了这么经典的总结,实在可惜,倒让人看不到GLM的真正长处了): 2 m T4 H: { S) C2 {如果X1-X3,Y1-Y2为连续性变量,Y3为分类变量,a-c为分类变量,time为时间变量,目前我们熟悉的模型可以简单概括如下:# q+ e! L8 Z; ]1 u (1) y1= x1 简单回归3 V' _8 @1 s; U( I2 a+ z3 Q (2) y1= x1 x2 x3 多重回归(multiple regression)7 p8 P; W5 k. H6 p1 r/ P, ^, Q (3) y1 y2=x1 x2 多元回归(multivariate regression)3 W% ^0 j$ m5 C (4) y1= a 单因素方差分析 ' `3 y" |2 h/ G8 V( S' c(5) y1= a b (析因设计的)主效应分析2 r1 l B# _3 v. c( T- ~7 D (6) y1= a b a*b (析因设计的)主效应加交互项分析: ~& T b: H T+ q8 [4 U* H (7) y1= a x1 协方差分析( v3 J! W( _; g6 _/ l% l5 ] (8) y3= a 单因素logistic回归6 t3 N6 a0 d8 q1 o) X1 A9 R (9) y3= a b c x1 x2 x3 多因素logistic回归' P, M/ {8 i' m: ~! [ (10) y3(time) =a 单因素cox回归5 l$ b, E1 m$ i9 |* [) ]! g X (11) y3(time) = a b c x1 x2 x3 多因素cox回归) j" Y7 t# x% l! x9 v
) J* P) _* N- B1 O1-7采用SAS的一般线性模型GLM都能实现,而1-9采用SAS的广义线性模型GENMOD都能实现,具体验证详见后面举例8 N. G3 q+ j0 U; J6 |1 A) p% V
p. _" Y7 ] K8 z6 A- o0 R
再次回到开始的问题:掌握上述的基本思路后,因为因变量为连续变量,所以采用线性模型肯定是对的。如果因变量可以认为是正态的,那采用一般线性模型是合理的。所以现在的关键问题是:如果调整多个变量(包含分类和连续变量)后看不同分组间因变量(连续变量)是否仍有差异时,能否再称为协方差分析?我目前认为应该是可以的,但是事实上我们遇到这种情况后,并不再去强调它是协方差的思想,而只是回到线性模型分析的最初的起点,也即是检查残差是否符合线性的基本条件即可。; D) d0 m' m' _, L7 W
# v8 k0 H5 W! Z
但是现实中,我们在使用GLM解决前面遇到的类似问题时,只是简单地用了,而很多时候我们都没有认真去检验残差是否符合这个条件,这可能是我们滥用GLM的表现之一,因为我们更多只关注模型的参数是否有意义,而不去关心对结果“无关紧要”的前提条件。 # \3 N! \; X$ i% P; W, Q4 `7 Q! `$ v3 T& l9 A" t2 C' ?1 \9 C$ f
再次思考一个问题,上述列举的1-7模型,在GLM中并没有特定的选项指定是哪一种模型,而采用一种表达方式。由此,可以进一步深入概括一句话,GLM模型,对于上述列举的1-7模型并没有本质区别,唯一的区别只是模型中自变量的属性和数量不同。但是我们对1-7模型的叫法却不相同。而其原因是我们对事物的认识是一个由浅到深的过程,之前我们认为他们是不同的7件事情,随着认识的加深,发现原来这些问题可以用一个方式表达出来。而SAS的GENMOD则更能说明这一问题。现在还没有一个模型能把上述模型1-11用一种表达方式表示,但是COX回归在抛开基线生存函数之后剩下的部分也是线性模型,所以说不定哪天真的能够把上述所有模型用一种表达方式表示出来。到时候更应该相信人们对事物的认识绝对是一个由浅到深的过程啦。 * J$ D4 w- C; W1 J1 L: q% ]' H' f& q0 [) T p( F% C' r
附:GLM与GENMOD在协方差分析结果的比较 * o0 A8 w; j/ S. I% n, k. u data drugtest; 9 Q- w4 E. d0 U# @ input Drug $ PreTreatment PostTreatment @@; . n* Y1 h* B- K$ w, d9 ] datalines; % M- ^! {+ y( `; g5 t4 b6 j
A 11 6 A 8 0 A 5 2 A 14 8 A 19 11 4 c/ n- H9 ^9 I, U0 ?% x* y A 6 4 A 10 13 A 6 1 A 11 8 A 3 0 ' Z5 } f$ H9 z7 [! j6 j$ D: P: _# k- W& E
D 6 0 D 6 2 D 7 3 D 8 1 D 18 18 2 D h1 m6 d# g! K' Z D 8 4 D 19 14 D 8 9 D 5 1 D 15 9 ( H7 z7 t e. K. F- A/ B
F 16 13 F 13 10 F 11 18 F 9 5 F 21 23 ( c5 m6 E4 o( ~5 V
F 16 12 F 12 5 F 12 16 F 7 1 F 12 20 , y6 D1 o* _0 X! }+ r/ W
; 6 {2 Y. d% _& R6 k
; `' ~) w" h% C3 }2 ^0 p- D% v# X# @ proc glm; $ ]; ] B2 u4 j' Y: `& R
class Drug; 0 {. Q8 \5 d' f) T; J1 ~
model PostTreatment = Drug PreTreatment / solution; 7 e1 G) J4 |# v' ? lsmeans Drug / stderr pdiff cov out=adjmeans; @0 ] s9 H+ l0 I/ [' _7 d
run; ' I8 W' n) s# z 0 T4 E# `) K! A0 o( H9 }8 m proc genmod data=drugtest; ! Z# [ C [& I" u' l0 K9 Q2 K
class Drug; ( k% R2 D7 b# ?5 M7 @- F
model PostTreatment = Drug PreTreatment / dist=NOR link=ID obstats type1; $ I& B, U, D! _& T7 c9 F- ^7 t run; : ]; A2 ^3 _' U6 b 8 L2 {! K7 U. q r0 D- a2 f9 k proc print data=adjmeans; , s0 ?( C, h* b3 P& Z0 a+ N run; 1 f8 e. q3 P8 x. w; o0 b% g* O% R5 M+ D6 e" n8 S6 k. i