最近遇到一个问题,如果因变量为一个连续变量(如胰岛素水平),主要考察的变量为分组变量(如正常血糖组,前糖尿病组,糖尿病组三组),现在的目的是想看调整多种变量(包括多个连续性变量和分类变量)后,胰岛素水平是否一致。 & g! c5 }" m: S* ?! Q2 ^8 m" ?* A. f q, z; C* o) R
" x- C1 N' c! v4 e9 D# f! Q/ m
一开始的思路想到的是采用GLM进行协方差分析来解决。* ~; M! T# G/ m4 [4 t- v
) a5 x; _9 R/ o! t! \# N
但是有觉得似乎不是很对,因为经典的协方差分析通常只考虑一个连续变量(协变量)和一个分组变量,同时协变量和分组变量只有不存在交互的时候(经典协方差分析的前提)才能使用协方差分析。# E( F- o0 d( w* l% A: X- A
针对我目前的问题,如果想调整多个连续性变量和分类变量,这种方法能否再叫协方差分析?如果可以认为是协方差的思想,用不用检验协方差分析的前提(如协变量与分组变量之间的交互)?多个连续性变量和分类变量存在时,该前提应该怎么检验? . w, H/ T y1 }& x( z" {1 p& l! f* b! k, z5 d8 {+ ^
通过跟别人交流之后,有一句话非常受用:线性模型其实最重要的不在于用的方差分析还是协方差分析,而主要是检验残差是否符合线性的几个条件。 ; ~ x/ D+ X* S" B, f $ P9 { k1 n: M; y4 _受到该启发后,认真再复习GLM的相关资料,得到更加重要的总结如下(来自高惠璇SAS/STAT软件使用手册,实际是SAS8.2的User's guide的中文版,但是目前SAS 9.2,9.3的User's guide关于GLM模型的介绍中已经删去了这么经典的总结,实在可惜,倒让人看不到GLM的真正长处了):: t6 w# J; I1 b3 P) W% c, ` 如果X1-X3,Y1-Y2为连续性变量,Y3为分类变量,a-c为分类变量,time为时间变量,目前我们熟悉的模型可以简单概括如下: 3 a; x: u1 V! c7 t( D5 ?) `(1) y1= x1 简单回归 $ ~# l! F% I+ J9 D3 S(2) y1= x1 x2 x3 多重回归(multiple regression)4 G$ h! ^5 [0 o0 S% | (3) y1 y2=x1 x2 多元回归(multivariate regression)& x# z8 {) w' y5 ~: @ (4) y1= a 单因素方差分析 7 ^" k' u* z2 t5 d9 k/ p( o(5) y1= a b (析因设计的)主效应分析 + J W; U# O. L. s8 J- B: E(6) y1= a b a*b (析因设计的)主效应加交互项分析 " D* _* H2 Y5 ~2 P(7) y1= a x1 协方差分析 2 i4 I4 M5 u% H: V( b V(8) y3= a 单因素logistic回归- ?, a% b" x, h+ C f (9) y3= a b c x1 x2 x3 多因素logistic回归 - s7 P3 m0 L6 t+ w(10) y3(time) =a 单因素cox回归& i0 Q- d2 I& O* Y% g (11) y3(time) = a b c x1 x2 x3 多因素cox回归 5 g' A4 x4 g! ?+ U" `+ `, A , m. f9 X' s# g# y2 P1-7采用SAS的一般线性模型GLM都能实现,而1-9采用SAS的广义线性模型GENMOD都能实现,具体验证详见后面举例8 c; R9 V& C. p6 ]7 q T" {) \
( J: M1 j% }5 z1 C' U7 Q再次回到开始的问题:掌握上述的基本思路后,因为因变量为连续变量,所以采用线性模型肯定是对的。如果因变量可以认为是正态的,那采用一般线性模型是合理的。所以现在的关键问题是:如果调整多个变量(包含分类和连续变量)后看不同分组间因变量(连续变量)是否仍有差异时,能否再称为协方差分析?我目前认为应该是可以的,但是事实上我们遇到这种情况后,并不再去强调它是协方差的思想,而只是回到线性模型分析的最初的起点,也即是检查残差是否符合线性的基本条件即可。" }. Y, e6 F2 E
2 |# } a/ A" N* w- ]但是现实中,我们在使用GLM解决前面遇到的类似问题时,只是简单地用了,而很多时候我们都没有认真去检验残差是否符合这个条件,这可能是我们滥用GLM的表现之一,因为我们更多只关注模型的参数是否有意义,而不去关心对结果“无关紧要”的前提条件。# o' W2 {1 r& e1 ~
' k; L, J' j9 @, ~# R
再次思考一个问题,上述列举的1-7模型,在GLM中并没有特定的选项指定是哪一种模型,而采用一种表达方式。由此,可以进一步深入概括一句话,GLM模型,对于上述列举的1-7模型并没有本质区别,唯一的区别只是模型中自变量的属性和数量不同。但是我们对1-7模型的叫法却不相同。而其原因是我们对事物的认识是一个由浅到深的过程,之前我们认为他们是不同的7件事情,随着认识的加深,发现原来这些问题可以用一个方式表达出来。而SAS的GENMOD则更能说明这一问题。现在还没有一个模型能把上述模型1-11用一种表达方式表示,但是COX回归在抛开基线生存函数之后剩下的部分也是线性模型,所以说不定哪天真的能够把上述所有模型用一种表达方式表示出来。到时候更应该相信人们对事物的认识绝对是一个由浅到深的过程啦。( q6 Y* P; a5 E9 @/ ?. \
3 |# N! G8 B) X- M# w' `0 l2 z
附:GLM与GENMOD在协方差分析结果的比较+ q8 Q/ M5 D8 r* r, [
data drugtest; ' k6 I' S$ |; k5 g' A1 ] input Drug $ PreTreatment PostTreatment @@; $ O/ z6 W _1 |' L' ? datalines; 1 a6 e7 Z' _% g* N3 U A 11 6 A 8 0 A 5 2 A 14 8 A 19 11 ; `$ `* Z* s& t2 g9 m A 6 4 A 10 13 A 6 1 A 11 8 A 3 0 : q0 T" X+ I' T z7 h8 o( m% z D 6 0 D 6 2 D 7 3 D 8 1 D 18 18 5 ]" A0 ]/ Z6 n3 f D 8 4 D 19 14 D 8 9 D 5 1 D 15 9 7 M& K7 X8 y$ K: ?
F 16 13 F 13 10 F 11 18 F 9 5 F 21 23 / U- h6 A# A; U1 @0 D
F 16 12 F 12 5 F 12 16 F 7 1 F 12 20 - [/ f$ i- Y, X% h" J6 p5 F" k
; 4 V. e) v) K C; R& m( o
% ?+ W' l! L5 `8 J- u7 ~2 F
proc glm; , C+ m$ l" Q3 `6 ?3 i class Drug; . E. E: x6 B/ |6 `. R# l model PostTreatment = Drug PreTreatment / solution; - e1 ?- U6 D/ w
lsmeans Drug / stderr pdiff cov out=adjmeans; 4 x3 ^5 F9 ~' `
run; V; j w8 h' Y% f( X: q
/ y* w0 `5 Z; O Z) E: t proc genmod data=drugtest; " l6 T/ E( [* H class Drug; % z2 G" F: o9 B' _
model PostTreatment = Drug PreTreatment / dist=NOR link=ID obstats type1; ' ^2 m+ |$ P* Q7 Y0 i; ]4 v" V% l3 u
run; 5 |+ e$ e: W" ?) s" [5 y
) @; o/ m' Z0 } X; e1 ~ proc print data=adjmeans; 0 r' y0 @8 |' y9 @3 M# P$ D" q run;( p' K7 Q' P' V
' m% I: \/ |" X$ C / B' j3 {% s. }2 ~8 `- j 4 C! b4 h; v4 Q6 H- s