最近遇到一个问题,如果因变量为一个连续变量(如胰岛素水平),主要考察的变量为分组变量(如正常血糖组,前糖尿病组,糖尿病组三组),现在的目的是想看调整多种变量(包括多个连续性变量和分类变量)后,胰岛素水平是否一致。+ ]. n8 Y! w2 V }' h: \
! \( P- B K, F6 S 3 }/ p: }/ E# \一开始的思路想到的是采用GLM进行协方差分析来解决。 3 f- v, e. _1 _0 A* j8 G, }! c B" \; P _7 k8 o/ m# _/ C
但是有觉得似乎不是很对,因为经典的协方差分析通常只考虑一个连续变量(协变量)和一个分组变量,同时协变量和分组变量只有不存在交互的时候(经典协方差分析的前提)才能使用协方差分析。) F$ E7 w( R- |! ~$ l
针对我目前的问题,如果想调整多个连续性变量和分类变量,这种方法能否再叫协方差分析?如果可以认为是协方差的思想,用不用检验协方差分析的前提(如协变量与分组变量之间的交互)?多个连续性变量和分类变量存在时,该前提应该怎么检验? $ y6 W/ {0 @, G! n 6 h _1 t# h W0 m通过跟别人交流之后,有一句话非常受用:线性模型其实最重要的不在于用的方差分析还是协方差分析,而主要是检验残差是否符合线性的几个条件。" v8 u7 j4 `% o
6 }2 ~! k6 v& a* H/ H受到该启发后,认真再复习GLM的相关资料,得到更加重要的总结如下(来自高惠璇SAS/STAT软件使用手册,实际是SAS8.2的User's guide的中文版,但是目前SAS 9.2,9.3的User's guide关于GLM模型的介绍中已经删去了这么经典的总结,实在可惜,倒让人看不到GLM的真正长处了): 0 v! W. x7 `4 p+ d4 Y& k3 @2 R如果X1-X3,Y1-Y2为连续性变量,Y3为分类变量,a-c为分类变量,time为时间变量,目前我们熟悉的模型可以简单概括如下: & H$ f) e; C# H _4 o(1) y1= x1 简单回归 / K# `- i3 b1 }3 f(2) y1= x1 x2 x3 多重回归(multiple regression) , s1 t1 j# l: {! u. S0 i(3) y1 y2=x1 x2 多元回归(multivariate regression) ; T9 J8 K' |+ W) N I& v6 h(4) y1= a 单因素方差分析) _2 |2 p7 m7 z5 l/ t (5) y1= a b (析因设计的)主效应分析* K8 n: Q' O; k; w, W6 w' R( Q0 ? (6) y1= a b a*b (析因设计的)主效应加交互项分析 & W( v$ `4 l) k+ F! P/ y(7) y1= a x1 协方差分析4 p( U; r3 z V; x( l) F* {" t (8) y3= a 单因素logistic回归 @; o5 N- j- ?2 _) D5 `8 q) w (9) y3= a b c x1 x2 x3 多因素logistic回归 5 E7 m0 ~$ n4 N$ W9 b# B(10) y3(time) =a 单因素cox回归8 J) Z& l" f& j" z& X* }+ t (11) y3(time) = a b c x1 x2 x3 多因素cox回归 0 x N3 N9 e" A9 S1 q& a4 d# g; F' O+ Z7 _& z9 ^
1-7采用SAS的一般线性模型GLM都能实现,而1-9采用SAS的广义线性模型GENMOD都能实现,具体验证详见后面举例 , f& _2 h$ m4 b) \( ~2 ~8 N E# d. R0 }4 Q; S; F" f
再次回到开始的问题:掌握上述的基本思路后,因为因变量为连续变量,所以采用线性模型肯定是对的。如果因变量可以认为是正态的,那采用一般线性模型是合理的。所以现在的关键问题是:如果调整多个变量(包含分类和连续变量)后看不同分组间因变量(连续变量)是否仍有差异时,能否再称为协方差分析?我目前认为应该是可以的,但是事实上我们遇到这种情况后,并不再去强调它是协方差的思想,而只是回到线性模型分析的最初的起点,也即是检查残差是否符合线性的基本条件即可。1 Q3 I9 i8 r; c& c4 Z* D( K- Z
+ |/ {/ c! m( ?' g# J但是现实中,我们在使用GLM解决前面遇到的类似问题时,只是简单地用了,而很多时候我们都没有认真去检验残差是否符合这个条件,这可能是我们滥用GLM的表现之一,因为我们更多只关注模型的参数是否有意义,而不去关心对结果“无关紧要”的前提条件。 1 j' M. v7 \, Q" G# U* @2 u! p - }9 @. _2 z+ n I. _- i再次思考一个问题,上述列举的1-7模型,在GLM中并没有特定的选项指定是哪一种模型,而采用一种表达方式。由此,可以进一步深入概括一句话,GLM模型,对于上述列举的1-7模型并没有本质区别,唯一的区别只是模型中自变量的属性和数量不同。但是我们对1-7模型的叫法却不相同。而其原因是我们对事物的认识是一个由浅到深的过程,之前我们认为他们是不同的7件事情,随着认识的加深,发现原来这些问题可以用一个方式表达出来。而SAS的GENMOD则更能说明这一问题。现在还没有一个模型能把上述模型1-11用一种表达方式表示,但是COX回归在抛开基线生存函数之后剩下的部分也是线性模型,所以说不定哪天真的能够把上述所有模型用一种表达方式表示出来。到时候更应该相信人们对事物的认识绝对是一个由浅到深的过程啦。: A' s! {: Z$ ~4 B
6 r0 q: I3 N. E附:GLM与GENMOD在协方差分析结果的比较4 m8 D/ R8 A! ^& r4 L& f
data drugtest; + ?9 g" {$ r4 r# a- y# s input Drug $ PreTreatment PostTreatment @@; . V/ \0 L4 ]2 r/ \ datalines; ; ^- w- \9 a4 f' R! e! f4 c) s A 11 6 A 8 0 A 5 2 A 14 8 A 19 11 9 d- E+ D/ ]( q2 @+ i/ c
A 6 4 A 10 13 A 6 1 A 11 8 A 3 0 9 k5 f+ T0 L# u5 J5 v. j- ?7 G8 d5 J& T
D 6 0 D 6 2 D 7 3 D 8 1 D 18 18 ; |" g3 x/ w8 d& S% b D 8 4 D 19 14 D 8 9 D 5 1 D 15 9 N7 |1 j8 u7 o5 k$ p
F 16 13 F 13 10 F 11 18 F 9 5 F 21 23 / x" S2 x) O4 e F 16 12 F 12 5 F 12 16 F 7 1 F 12 20 5 E! N7 N6 I5 C* A4 l3 d, F2 ] ; * N @$ j+ ~4 U! o9 R( I/ Y7 l7 w y8 ]
4 {; D5 X7 W( Q+ O proc glm; ; A2 h) d+ U3 t& s" u3 m! l1 \
class Drug; ( Z1 `! v% z6 V& \
model PostTreatment = Drug PreTreatment / solution; : L. ~5 T) }4 P; v2 u; o lsmeans Drug / stderr pdiff cov out=adjmeans; + b# f$ L4 g2 \6 e( h
run; ( p1 p( L) _! U4 s$ w1 E4 e; e K6 @8 Z
proc genmod data=drugtest; : S9 R& w& _- p( Z! A' w5 C3 E' `5 I class Drug; " r# [; c0 T7 W8 X. J model PostTreatment = Drug PreTreatment / dist=NOR link=ID obstats type1; 1 g) P8 I) p9 p6 [9 T5 y) X run; 1 `9 D1 f% K6 Z8 j3 t# v
' G5 P1 t2 v- F5 D, X5 R! J: _( f
proc print data=adjmeans; 4 w- Y. ^# [1 ?! m run;' l' W% h% @& c! [! R* ?' @" |/ ~
' w5 r: h* y3 b% Y
( q# ^* Q/ b" o3 }+ R5 Z) F& A* ~