档案

Posts Tagged ‘logistic回归’

如何检验名目变量的中介效应?

2011/09/11 2 条评论

Zhang @ 2011-09-07:

祝老师,您好,我想用结构方程模型做路径分析,有个问题不清楚,想跟您请教一下。

先说样本量,我调查了100户,也就是我的的样本量是100,假设模型包含4个自变量,其中2个是连续变量,1个是类别变量,1个是计数变量,因变量只有1个,是连续的。

我的模型中有一个中介变量,这个中介变量就是上面提到的类别变量。我主要是想问参数估计方法的选择问题,对于我这样一个小样本量,里面又含有非连续的变量类型,参数估计的方法generalized least square(GLS)和ordinary or unweighted least square (OLS OR ULS)哪个更适合一点?

此外,您觉得我100个样本是否适合做这样一个结构方程模型的路径分析?我是刚开始学SEM,希望能得到您的指点,非常感谢关注,期待您的答复。

庄主 @ 2011-09-12:

你虽然是新手,但对数据和问题的叙述既简洁又清楚。这是做好科学研究(或定量分析)的第一步。推荐给其他提问者学习。

类别变量(categorical variable,或叫名目变量)可以做中介变量,但不能用SEM来分析。SEM确实有好几种估算方法,如你提到的GLS、OLS和ULS,以及更常见的Maximum Likelihood (ML)。但所有估算方法都要求除了grouping variable(分组变量)之外的所有自变量和因变量必须是连续或定距变量。你当然可以用那个类别变量做分组变量,但那检验的是moderation effects(调节或交互效应)而非mediation(中介效应)。

那么,不用SEM是否可以检验类别变量的中介效应呢?可以,但我得事先预警一下:有关的操作和解读都非常(或极其)繁琐。我假定你已经了解中介效应的一般原理(或用“中介变量”查询一下本站有关前贴),所以不再赘言,以下只介绍具体操作步骤。

一、以Y为因变量,X(在本案中是三个连续或计数变量,记为X1、X2和X3)为自变量,做一回归分析,得到的回归系数记为c。

Y = cX                                (Eq. 1)

可用常用的OLS回归,或用general linear model (GLM)回归,两者的结果相同,但后者在第二步中更为方便。

二、将M(类别变量)加入上述回归,得到的回归系数分别记为c’和b。

Y = c’X + bM                      (Eq. 2)

如你在第一步里用的是OLS回归,须先将M转换成k – 1个dummy variables(零一变量),其中k是M的类别个数;如第一步用的是GLM回归,则可以省去对M的转换而直接进入。注意:1. 这里的回归系数是c’,不是第一步中的c;2. 如果M有3个以上的类别时(即k > 2),就会得到k – 1个b,可分别记为b1,b2,…,bk-1,多个b的出现是上面提到的“繁琐”原因之一。

三、以M为因变量、X(本案中X1 – X3)为自变量,做一回归分析,得到的回归系数记为a。

M’ = aX                              (Eq. 3)

由于这里的因变量M是类别变量,所以不能用OLS或GLM回归,而要用Logistic Regression (LR,当k = 2) 或 Multinomial Logistic Regression (MLR,当k > 2)。如与第二步一样,当M的类别大于2时,会有k–1个a,可记为a1,a2,…,ak-1,这又是一个繁琐之处。

更重要的是公式3中的M’与公式2中的M之不同。前者是probability of odds ratio between category j and category 1-j (某一类别j发生与否的概率)而后者是difference in the mean between category j and the baseline category (类别j与基准类别之间平均数之差)。这是最容易引起困惑繁琐的地方,尤其是对于不熟悉类别变量分析的基本原理(如什么是类别发生概率等)。

四、这是另一个难点:如上所述,M在第一、二步的OLS(或等值的GLM)中和在第三步的LR或MLR中的scale(单位)不同,所以MLR系数a不能与OLS系数b等直接比较,而我们知道,检验中介效应的核心是检验ab (即X通过M对Y的间接影响)的显著性以及比较c’与ab的大小而实现的。因此,a必须与b等具有相同的单位。为此,我们需要将它们转换成各其的标准化系数。其公式分别为:

a’ = a Sx / Sm’                   (Eq. 4a)

b’ = b Sm / Sy                    (Eq. 4b)

c” = c’ Sx / Sy                    (Eq. 4c)

其中Sx和Sy分别是连续变量X和Y的标准差,可以用SPSS的Descriptive或其它软件的类似指令直接算出。公式4b中的Sm是零一变量M的标准差,也可以用上述指令直接算出。但是4a中的Sm’是公式3中的因变量M’的标准差,即一个“什么什么发生与否”的概率的标准差,没法直接算。对它的一种估算方法是:

clip_image002              (Eq. 5)

其中p是圆周率 (= 3.1416…),p2/3则是标准化的logistic分布函数的方差(这一项其实是一个常数,= 3.14162 / 3 = 3.29),因此公式5可以简化成

clip_image002[25]              (Eq. 5′)

不知你是否还在看吗?看懂了多少?我知道第一、二步很容易,第三、四步并不难,但很繁琐,如没有做过LR或MLR的人确实难以消受这种思路的产品。如果你能坚持到这里,接下来就可以看到辛苦劳动的成果了:检验M的中介效应。

不管M是连续变量还是类别变量,检验其是否具有中介效应的原理是一样的,即:

一、公式1中的c必须显著;

二、公式2中的b和公式3中的a必须显著;

三、最后看公式2中的c’。这时有三种可能:

1. 如果c’不显著,那么M具有完全(或强烈)的中介效应(理想状态);

2. 如果c’显著、但其标准化系数c"(见公式4c)小于a和b的标准化系数之乘积a’b’(见公式4a和4b),那么M具有部分(或微弱)的中介效应(常见的中介效应大多如此);

3. 如果c’显著、而且c">a’b’,即X对Y的直接影响大于通过M的间接影响,或者说,M的出现并没有改变X对Y有显著影响的基本格局。因此,我们必须承认M不具备中介效应。有些读者认为,只要a’b’是显著的,就说明M有中介效应。这种看法是错的。

如何确定名目变量交互项的参照组是什么?

2009/11/15 留下评论

台灣吳同學 @ 2009-11-13:

老師您好,我是台灣的學生,對您的統計解釋相當有興趣。最近我遇到了一個問題,我嘗試把他說清楚,希望您可以幫我解惑。

在我的logit model裡頭,有兩個類別變數,分別為性別與教育程度。其中,性別是男女二分變數(男=1,女=0),而教育程度則分為低,中,高三類(中=0).我的依變數是收入,分為低與高兩種(低=0).假設,我想探討性別與教育程度的交互作用(性別X教育程度),我的交互作用項只能把1.男X低教育和2.男X高教育放入模型中,請問我的交互作用項在這時候的參照類是什麼?是1.男X中教育? 還是2.女X中教育?

另外,也想知道要如何解讀交互作用項B和EXP(B)的意義。希望您能看得懂我的問題,謝謝!

庄主 @ 2009-11-15:

吴同学,从统计上来说你的问题并不难,但要解释清楚却简短不了,而且有点绕弯弯(所以提醒读者随手做些推算验证,以免绕不出来)。我把这类问题叫做technically simple but practical not trivial (技术上很容易但操作上不简单),往往会被人疏忽或轻视,所以不容易找到答案。如你问的,实质上是一个“如何解读回归分析中交互项的系数?”的问题,对此我已写过好几个帖子(如“如何在回归分析中检验和解读交互影响?”)。但是,你由于下面谈到的若干误解而对这个问题产生困惑,也许已问过其他人或查过其它参考文献,但却不得而知。

我觉得你的困惑可能有三个来源混合而成:第一,你的因变量(dependent variable)不是收入本身、而是高收入与低收入之比例的对数,但无论你根据什么理由来如此构建因变量,你的问题与因变量性质无关,也就是说交互项的对照组问题在包括OLS、GLS、Logit、Probit、Logistic等等所有回归分析中是一样的。所以有关如何解读回归分析交互影响的文献(包括我自己的有关帖子)都是直接相关的。

第二,你的两个自变量都是nominal scale (名目变量) 而不是更常见的interval scale (等距变量),而且你用了dummy coding(哑变量编码)方法,但你对这种编码的原理了解不够(很多人都有同样问题),所以无法将如何解读定距变量交互影响的文献转换成你的答案。

第三,也许是最重要的,是你将交互影响等同于main effects(主效应)影响了。此话怎讲?你知道一个名目自变量转换成哑变量之后,其回归系数描述的是该哑变量取值为1的“研究组”与取值为0的“对照组”之间在因变量Y的平均值上的差别。这种理解完全正确。但是,你将其推广到对交互项系数的理解上去了,所以会问该系数是跟哪个对照组在比较?

为了有助其他读者理解你的问题,我用以下公式来表述你的回归模型:

Y = b0 + b1M + b2H + b3L + b4MH + b5ML                         (1)

其中,Y是因变量的平均值(注意:为了写作方便,本文没有按惯例在Y上加一横杆来代表平均值),M是性别(因为Male=1,所以命名为M),H是高教育程度(High),L是低教育程度(Low),MH是你说的“男X高教育”的交互项,ML是“男X低教育”的交互项。b0是在性别和教育两个变量中同时担任对照组(即同时取值为0)的FM(女性中等教育)组的均值,b1是男女差别(即性别的主效应,注意:这句话在有交互影响条件下有问题的,见后面的简单讨论)、b2是高教育与中教育的差别(高教育主效应,注意:这句话在有交互影响条件下也是有问题的,见后面的简单讨论)、b3是低教育与中教育的差别(低教育主效应)、b4是性别与高教育的交互影响、b5是性别与低教育的交互影响。

上面这段话中,大都分都是常识,唯一需要加以讨论的是什么叫做“性别与高(或低)教育的交互影响”。以b4为例,它反映的是“性别对高等-中等教育程度之间差别的影响”、或倒过来说,是“高教育对男女之间差别的影响”(这两种说法是等价的)。也就是说,b4描述的是高和中教育组之间的差别大小、在男性和女性之间是否相同;或者,男女之差的差别大小在高和中两组之间是否相同。这个意思,中文里说确实有点绕弯弯,用英文表述则相当清楚: b4 indicates whether the difference between the highly-educated and moderately educated groups is constant (uniform, equivalent, invariant, etc.) for men and women, respectively; or whether the difference between men and women is constant (…) for highly educated and moderately educated people, respectively. 

这是问题的核心:主效应系数(b1-b3)反映的是组间差别,所以有研究组和对照组;但是交互项系数(b4-b5)反映的是组间差别的差别(difference between diffrences between groups, or difference between group-differences),所以没有主效应系数意义上的对照组。也就是说,b4或b5反映的不是两个组之间是否有差别,而是两个组间差别之间是否有差别,所以不需要有、也不可能只有一个对照组。

问题解决了吗?应该还没有。我希望大家能够记住两句话:一、交互项系数反映的是交互影响而不是组间差别(即“交互影响不等于组间差别”);二、组间差别又是与(显著的)交互影响直接有关的。为了说明第二句话,我们来看看在交互项显著的条件下组间差别是如何计算的。我们可以根据模型1,写出计算你的六个组(= 2个性别组 x 3个教育组)的平均值Y的公式:(请大家拿出纸和笔来,将0和1值分别代入模型1,以复核实下述公式。光看不练,也许越看越迷糊。)

男高(MH): YMH=b0 + b1x1 + b2x1 + b3x0 + b4x1x1 + b5x1x0 = b0 + b1 + b2 + b4 (2)
男中(MM): YMM=b0 + b1x1 + b2x0 + b3x0 + b4x1x0 + b5x1x0 = b0 + b1 (3)
男低(ML): YML=b0 + b1x1 + b2x0 + b3x1 + b4x1x0 + b5x1x1 = b0 + b1 + b3 + b5 (4)
女高(FH): YFH=b0 + b1x0 + b2x1 + b3x0 + b4x0x1 + b5x0x0 = b0 + b2 (5)
女中(FM): YFM=b0 + b1x0 + b2x0 + b3x0 + b4x0x0 + b5x0x0 = b0 (6)
女低(FL): YFL=b0 + b1x0 + b2x0 + b3x1 + b4x0x0 + b5x0x1 = b0 + b3 (7)

模型2-7告诉我们如何计算六个组的平均值。为了便于计算它们之间的差别(更重要的是洞察它们之间的结构性关系),我们将模型2-7按以下方式重新安排一下:

表一、性别与教育程度交叉组的回归系数比较

 

M(男性)

F(女性)

H(高教育)

b0 + b1 + b2 + b4   (2)

b0 + b2       (5)

M(中教育)

b0 + b1                 (3)

b0              (6)

L(低教育)

b0 + b1 + b3 + b5   (4)

b0 + b3       (7)

根据表一,我们可以很轻松地(目测)算出各组的差别。基于共有六组,共有 6 x 5 / 2 = 15对组组比较,我们用以下的矩阵形式来表示,以省些空间:

表二、组间差别之计算方法

 

MH

MM

ML

FH

FM

MM

b2+b4

ML

b2+b4–b3-b5

-b3-b5

FH

b1+b4

b1–b2

b1+b3+b5-b2

FM

b1+b2+b4

b1

b1+b3+b5

b2

FL

b1+b2+b4-b3

b1-b3

b1+b5

b2-b3

-b3

注:所有组间差别均由column group – row group(列标题中的组减去行标题中的组)构成。如MH-MM = b2+b4。如果想求行组减列组,只需将表二中所有系数的符号相反即可。

由表二可知,只有三对组间差别是直接由回归系数告知的 (MM – FM = b1, FH – FM = b2, FM – FL = –b3;注意,这里的b1只反映中等教育程度上男女之间的差别、而不是所有教育程度上的男女差别;b2和b3只反映女性中不同教育程度的差别、而不是所有人中不同教育程度的差别,这就是我前面提到的对主效应系数的一般解释“在有交互影响条件下有问题的”的原因),而且三者均只涉及主效应系数。另有两对组间差别是由两个主效应系数的组合而成 (MM – FL = b1 – b3, FH – FL = b2 – b3)。其它10对组间差别均涉及主效应和交互项系数的组合。其中尤其是MH – MM的差别,需要同时用到b4和b5两个交互项系数。

这个练习说明什么?既说明交互项系数不等于组间差别、又说明(大部分)组间差别与交互项系数有关系。具体说来,这种“关系”,是附加在主效应系数的基础上产生的,也就是说交互项系数是对一对主效应关系的adjustment(调整)。其调整程度(微调或巨调)则有b4或b5取值决定。

现在,问题解决了吗?也许有些读者还是有点迷糊,觉得名目变量交互分析好麻烦。对的,这就是我一开始说的“技术上容易操作上难”的道理。推而广之,凡涉及名目变量的多元分析(如loglinear modeling、multinomial logistic regression、等等),没有一样不是技术上容易操作上难的。大家要有充分的心理准备。

在本例中,将问题变得相对简单(或容易?)一些的一种方法是不用哑变量编码、而用effects coding(效应编码?)或 contrast coding(配对编码?)。前者用+1定义研究组、-1定义对照组;后者则按一定的限定条件(恕不赘言)来设定任意两组或两集合组(如本例中高教育对中低教育)的比较。由两个效应编码变量构成的交互项反映了在该两个变量上取值为+1的研究组与所有组的(未加权)均值(虽然不一定等于样本均值、但接近“平均”的意思)之差别(如在本例中,可以是男性高教程度与样本“平均”的差别);由两个配对编码变量构成的交互项则反映了被特定配对的两组或两集合组之间的差别(在这种条件下,交互项系数可以等于组间差别了)。当然,这两种编码(尤其是后者)比哑变量编码在操作上复杂很多、但好处是解读时简单。如果有意学习(或者经常要做)名目变量多元分析的读者,应该花时间分别学一下。(当然,必须说明,不够使用哪种编码方法,交互项的显著性结果是完全一样的。它们的差别只存在于SPSS或其它统计程序输出结果中的系数值,而不同的系数值都是可以互相换算的。)

结束前,为完整起见,需要说明,这里虽然只讨论两个名目变量之间的交互项,其原则可以直接推广到三个或更多个名目变量之间的交互项。

最后,你问如何解读“交互作用項B和EXP(B)”,上面已经讨论了b4-b5的解读。Exp(b)的解读与其相仿,唯一区别在于后者的临界点为1而前者为0,如Exp(b4) > 1或Exp(b5) > 1 反映教育程度的差别在男性中大于女性;相反,如Exp(b4) < 1或Exp(b5) < 1则反映教育程度的差别在男性中小于女性。

如何做“有序Logistic回归”?

2009/04/11 留下评论

>

patricia @ 2009-04-12:

祝老师, 你好, 我想问个关于回归的问题. 对照组病灶数0, 病例组病灶数为1,2,3. 现在想了解几个危险因素和病灶数的关系, 是不是应该用有序logistic回归来分析. 能不能概括一下步骤, 看了一些资料, 还是感觉茫然! 谢谢!

庄主 @ 2009-04-12:

我对医学知之甚少,不知取值从0到3的“病灶”应该是一个定距 interval) 还是一个定序 ordinal) 的变量?既然你已考虑用有序logistic回归(ordinal logistic regression,以下简称OLR),说明你是确定病灶为定序变量的。

logistic regression(LR)用于分析因变量为定类或定序的数据。其中分为三个分支:一是因变量为二分组的binary LR(通常在LR一词之前不注明binary),二是因变量为多项分组的multinomial logistic regression(MLR),三是这里谈的OLR。显然,MLR和OLR相似,唯一的区别是前者因变量各组之间只有性质的区别而后者各组之间有大小之别。

我用过MLR,但没有用过OLR(所以以下部分纯属“知识”而不是经验之谈),刚才查看了一下SPSS中的OLR程序(SPSS中叫做PLUM,但不是可口的李子噢),觉得它的操作及输出结果与MLR大致相仿(其实前者比后者更简单,这也许是好事),主要要多了一项“Test of parallel items”的输出,用于检验因变量各组之间的预测值(即根据自变量而模拟的logistic曲线)是否平行。

你希望了解一下操作步骤,我觉得你既然知道选择OLR,操作对你来说应该没有任何困难。如在SPSS里,将定类的自变量当作Factor、定距的自变量当作Covariate,如果需要检验自变量之间的交互影响,在Location中指定。以下是基本的Syntax(假定有两个定类自变量x1、x2和一个定距自变量z,其中x1和x2、x1和z被假设有交互关系):

PLUM y BY x1 x2 WITH z/LOCATION=x1 x2 z x1*x2 x1*z/PRINT=FIT PARAMETER SUMMARY TPARALLEL.

其中PRINT=TPARALLEL就是检验y各组预测值的平行性(注:如果不平行,并不是说明它们之间有交互影响)。

我猜你参阅了其它资料后的困惑,主要在于对其输出结果的解读上。这是在对定类因变量做多元分析时使用各种LR或者Loglinear时普遍出现的问题。(曾有一位学生问我,是否需要选修一门专讲Loglinear Analysis的课,我强烈推荐,说哪怕你以后从不用Loglinear,懂得如何解读定类因变量的多元分析结果就终身受用了。)这种困惑,与你已有如何处理定类变量的其它经验直接有关(注意,我不用知识,因为一般知识在这里帮不了你)。如果你会在各种回归中设置和解读定类自变量,就应该会将其原理推广到如何设置和解读BLR中定类因变量、并进一步推广到如何设置和解读MLR中的定类因变量或OLR中的定序因变量了。我在本庄已写过多个有关如何设置和解读定类自变量的帖子,请查询一下。如果你读后还是觉得无从下手,说明你还只获得了一下(简单)知识,需要从那里开始动手做,以积累必要的经验,然后循序渐进、最后才来做OLR,定量分析很难一步到位的。

分类:统计 标签:,