在处理数据时,我们经常会遇到应变量是二分类
【关键词】 在处理数据时
在处理数据时,我们经常会遇到应变量是二分类、多分类的情况,例如:发病与不发病,成功与失败,结局为治愈、好转、无效等,假设事件发生的概率为 P,n 次观测是独立的条件下,一般采用Logistic回归分析数据,该模型中自变量可以是连续的,也可以是分类变量,应用非常广泛。SAS软件提供了Logistic、genmod,nlmixed,catmod等过程来分析资料,本研究讨论如何使用不同的过程来分析二分类与多分类Logistic回归模型。
1应变量为二分类的Logistic回归
例1:欲研究性别和不同疗法对某病治愈与否的影响,数据见表1。
表1 性别与疗法对某病的影响(略)
程序: data aa; input sex$ treat$ y count@@; cards; m a 1 78 m a 0 28 m b 1 101 m b 0 11……f c 0 6 ;方法1: PROC GENMOD data=aa descending;class sex treat; freq count;model response = sex treat / dist=binomial link=logit;run;/*dist=binomial和 link=logit拟合二分类logistic回归模型*/方法2: PROC LOGISTIC data=aa descending;class sex treat /param=ref ref=last;freq count;model response = sex treat;run;方法3: proc catmod order=data; weight count;model y=sex treat; run;为了解释的直观性,我们通常把所感兴趣的应变量的值排到最后(按升序),拟合事件(event)发生的概率,例1中选用选择项descending,拟合应变量 y=1 的概率,即拟合ordered value为 1所对应 y 的取值。SAS软件中使用CLASS语句的过程多数把最大的编码值(按升序排列)作为参照类,其他类别的参数估计值都是与它相比而得到的。例如:男性(male)与女性(female)相比,我们要设置男性gender=0,女性gender=1。选择项ref=op-tion可以指明参照水平,指定某一个水平作为参照,也可以使用关键字first或last。例如CLASS gender(REF=first) / PARAM=ref,得到Males/Females,如没有选择项REF=first,比较的是Females/Males。分类自变量如何编码影响到输出结果是否相同,缺省情况下,genmod过程对分类自变量编码值为0和1,而Logistic回归默认的编码为-1和1,catmod过程的的参数化形式称为与均数离差的参数化,如一个因素有 k个水平,则以k-1个参数表示,第k个水平的参数等于前k-1 个水平参数之和的负值。class语句的选择项param=keyword可以用来指明分类变量的参数化形式(parameterization),选择项有effect,po-ly,ref等。例1中genmod和logistic过程的参数估计结果相同,而与catmod过程的结果有差异,见表3、4,原因在于它们对分类变量的设计矩阵不同,见表2。
表2 不同过程的设计矩阵genmod和logistic过程的设计矩阵(略)
表3 genmod和logistic过程参数估计的结果(略)
表4 catmod过程参数估计的结果(略)
catmod过程中把参照类取值为-1,而genmod和logistic过程取值为0,它们的系数有一定的关系,例如sex的系数0.9616=0.4808-(-0.4808),b疗法的系数1.5608= 0.8456-[-(-0.1304+0.8456)],考虑到系数的可解释性,用cat-mod过程拟合模型时可以自己建立参照类赋值为0的哑变量,并且使用direct语句说明它们是定量变量,例1可以写成:data aa; input sex treata treatb y count@@; cards;1 0 0 1 68 1 0 0 0 46 1 1 0 1 78 1 1 0 0 28 1 0 1 1 101 1 0 1 0 11 0 0 0 1 34;proc catmod order=data; weight count; direct sex treata treatb;model y=sex treata treatb; run;
2有序多分类Logistic回归
设P(Y≤j)=π1 (x)+…+πj (x),j=1,…,J log it[P(Y≤j/x)] =log P(Y≤j/x) 1-P(Y≤j/x)=log π1 (x)+…+πj (x) πj+1(x)+…+πJ (x) ,j=1,…,J-1 ,累积logit模型:log it[P(Y≤j/x)]=αj +β'x, j=1,…,J-1 。每个累积logit模型有自己的截距项 αj ,随着j增大而增大,有相同的β(即β 与分割点无关),所以也称比例优比模型(proportional odds model)。例2:欲研究性别、两种方法对某病疗效的影响,疗效的评价分为3个有序等级:显效、有效和无效,数据见表5。
表5 性别和两种治疗方法对某病疗效的影响(略)
SAS程序: data aa; do sex=0 to 1; do treat=0 to 1; do outcome=1 to 3; input x@@; output; end;end;end;cards; 1 0 10 5 2 7 6 7 19 16 5 6方法1: proc genmod; model outcome=sex treat/dist=multinomial link=clogit lrci type3; /*dist=multinomial和 link=clogit拟合有序多分类logistic回归模型(累积logistic模型)*/ freq x; run;在拟合模型时,检查应变量的排列顺序,这一点可以看表6。缺省情况下,genmod过程拟合从低到高反应类别的有序多分类Logistic回归模型,本例拟合logP (outcome=1) P (outcome=2)+ P (outcome=3) 与log P (outcome=1)+ P (outcome=2) P (outcome=3) ,可以通过选择项RORDER=或descending来改变应变量的缺省顺序,本例参数估计见表7。方法2:proc logistic; freq x; model outcome=sex treat;run;
表6 反应变量的响应剖面(Response Profile)(略)
表7 例2参数估计的结果(略)
表8 比例优比假设检验(略)
如果不满足比例优比的假设条件,可以拟合无序多分类logis-tic回归,或拟合偏比例优比模型(partial proportional odds model),或者当应变量的某一个水平的样本含量小时,拟合模型时去掉这些水平。
3无序多分类Logistic回归
Y是分类反应变量,有J个类别,x为解释变量,设πj = P(Y=j/x),有∑ jπj =1,以最后的类别作为参照类,可以建立 J-1 个logit 模型, J-1个公式中的α j ,βj是不同的。log πj (x) πJ (x) αj +β'j x,j=1,…,J-1 ,例3: 欲研究不同社区、性别对成人获取健康知识途径的差别,数据见表9。
表9 不同社区、性别的成人获取健康知识途径的研究(略)
SAS程序: data aa; do community=1 to 3;do sex=0 to 1;do outcome=1 to 3; input x@@;output;end;end;end;cards; 20 35 26 10 27 57 42 17 26 16 12 26 15 15 16 11 12 20;方法1: proc logistic; freq x; class community sex;model outcome(ref='3')=community sex/link=glogit aggregate scale=none; run; /*link=glogit拟合无序多分类logistic回归模型;ref=指明参照的类别*/方法2: proc catmod ; weight x; population community sex; /*规定母体,由指定变量的交叉分类形成*/ model outcome=sex community;run; 缺省情况下catmod过程以应变量的最大值作为参照类(按照字母顺序或数字顺序),如果想以最小值作为参照类,可以对应变量做降序排列,即proc sort; by descending outcome; proc catmod order=aa;但需要注意:当数据量较大时耗时长,应变量赋值时最好与SAS默认的情况一致。参数估计结果见表10。
表10 例3参数估计结果(略)
4讨论
我们经常会遇到应变量为分类变量的情况, SAS/STAT中有很多过程可以做logistic回归,每个过程有各自的特点。catmod过程提供各种属性数据分析,例如对数线性模型、Lo-gistic回归,重复观测资料的分析等, 缺省时认为自变量都是分类变量;genmod过程是generalized linear models的缩写,可以拟合广义线性模型,应变量可以是正态分布、二项分数、gamma分布、负二项、Poisson分布等,例如poisson回归、probit回归等,还可以对边际模型拟合广义估计方程; Logis-tic过程可以分析应变量是二分类、多分类(有序或无序)的Logistic模型,默认的连接函数为logit,该过程可以对自变量进行筛选,例如向前法、向后法、逐步法等,从而从众多自变量中筛选出重要的预后因子,还可以回归诊断量,这是其广泛应用的原因之一。不同过程的最大似然算法不同,logistic过程使用Fisher's scoring方法,而genmod、catmod过程使用Newton-Raphson方法。当自变量是分类变量时,不同过程的参数估计值可能不同,可能是由于设计矩阵中的编码方式不同。
logistic回归模型处理数据有时会出现一个或几个自变量的的可信区间值特别大的情况,这时可以使用freq过程(分类变量)或means(连续变量)查看自变量或应变量的分布情况,通过增加样本含量,或者不考虑某些自变量或将某些自变量的水平合并来解决这一问题。