医咖会之前推送过二分类logistic回归的SPSS教程,不过有些问题未详细阐述,例如,如何验证:连续自变量与因变量的logit转换值之间存在线性关系;自变量之间无多重共线性等。经常有伙伴问到这些问题,为此,我们对二分类logistic回归的教程做了更新,希望能对大家有所帮助。
一、问题与数据
某研究者想了解年龄、体重、性别和最大摄氧量预测患心脏病的能力,招募了100例研究对象完成最大摄氧量试验,登记年龄、体重和性别,并评估研究对象目前是否患有心脏病。
二、对问题的分析
使用二分类Logistic模型前,需判断是否满足以下7项假设。
假设1:因变量是二分类变量。
假设2:有至少1个自变量,自变量可以是连续变量,也可以是分类变量。
假设3:每条观测间相互独立。分类变量的分类必须全面且每一个分类间互斥。
假设4:最小样本量要求为自变量数目的15倍,但一些研究者认为样本量应达到自变量数目的50倍。
假设5:连续的自变量与因变量的logit转换值之间存在线性关系。
假设6:自变量之间无多重共线性。
假设7:没有明显的离群点、杠杆点和强影响点。
假设1-4取决于研究设计和数据类型,本研究数据满足假设1-4。那么应该如何检验假设5-7,并进行Logistics回归呢?
三、SPSS操作
检验假设5:连续的自变量与因变量的logit转换值之间存在线性关系
连续的自变量与因变量的logit转换值之间是否存在线性关系,可以通过多种方法检验。这里主要介绍Box-Tidwell方法,即将连续自变量与其自然对数值的交互项纳入回归方程。
本研究中,连续的自变量包括年龄、体重、最大摄氧量。使用Box-Tidwell方法时,需要先计算age、weight和VO2max的自然对数值,并命名为ln_age、ln_weight、ln_VO2max。
计算连续自变量的自然对数值
以age为例,计算age的自然对数值ln_age的SPSS操作如下。
在主界面点击 Transform→Compute Variable,出现Compute Variable对话框中。在Target Variable框中输入即将生成自然对数值的变量名称。
选择Function group菜单下的Arithmetic,选择Functions and special variables菜单下的Ln,双击Ln将该公式选入Numeric Expression框中,最后双击age将该变量选入“LN”公式中。点击OK生成新变量ln_age。
如果容忍度小于0.1或方差膨胀因子大于10,则表示有共线性存在。本例中,容忍度均远大于0.1,方差膨胀因子均小于10,所以不存在多重共线性。如果数据存在多重共线性,则需要用复杂的方法进行处理,其中最简单的方法是剔除引起共线性的因素之一,剔除哪一个因素可以基于理论依据。
检验假设7:没有明显的离群点、杠杆点和强影响点
该假设的SPSS操作可见后面的“Logistic 回归”部分,此处仅展示如何解读结果。结果中Casewise List表格显示学生化残差大于2倍标准差的观测。学生化残差大于2.5倍标准差的观测需要研究者进一步观察决定这些观测是否是离群点,如有必要甚至可以从分析中剔除这些观测。
本例中,第70个观测的学生化残差为3.349,符合上述判断离群点的标准。
需要注意的是:
① 如果所有观测的学生化残差小于2倍标准差,SPSS不会输出Casewise List表格。如果已经剔除离群点,则第一次分析得到的Casewise Diagnostics表格不会再显示。
② 观测数指SPSS系统内自动编码,而非研究者赋值的编码。
③ 研究者需要查看该观测为离群点的原因,决定是否删除该观测并报告。本研究考虑不删除该观测,并在结果中报告“纳入分析的观测中有一项观测的学生化残差为3.349”。
Logistic 回归
在主界面点击Analyze→Regression→Binary Logistic,在Logistic Regression对话框中,将heart_disease选入Dependent,将age、weight、gender和VO2max选入Covariates。并按照前述操作,通过Categorical将gender变换为哑变量。
注意:如果是按本文中指导的步骤依次进行的分析,此时Logistic Regression对话框下为因变量heart_disease,Covariates框中为4个自变量age、weight、gender、VO2max和3个交互项ln_age*age、ln_weight*weight、ln_VO2max* VO2max。
此时仅需要将交互项ln_age*age、ln_weight*weight、ln_VO2max* VO2max从Covariates框中删除即可。
对于自变量筛选的方法,SPSS提供了7种选择,使用各种方法的结果略有不同,读者可相互印证。各种方法之间的差别在于变量筛选方法不同,其中Forward: LR法的结果相对可靠,但最终模型的选择还需要获得专业理论的支持。本文以Enter法为例进行展示。
点击Options,在Logistic Regression:Options对话框中,选中Classification plots,Hosmer-Lemeshow goodness-of-fit,Casewise listing of residuals和CI for exp这4个选项。在Display区域,选中At last step选项。点击Continue→OK。
四、结果解释
1. 检查变量和数据
首先检查是否存在缺失观测,纳入分析的观测数是否和数据库中观测数一致。Case Processing Summary表格如下图。
确认因变量的编码是否正确。Dependent Variable Encoding表格如下图。
观察分类自变量是否存在某一类观测数过少的情况,如果某项分类较少,可能不利于二项Logistic回归分析。本研究中,定义的分类自变量只有gender,因此Categorical Variables Codings表格只给出了gender的信息。
2. 基本分析
此部分结果的标题为“Block 0:Beginning Block”,指的是所有自变量不纳入模型、只包括常数项时的结果。此部分可以跳过。
3. Logistic回归
此部分结果的标题为“Block 1:Method=Enter”。
模型整体评价
Omnibus Tests of Model Coefficients是模型系数的综合检验。其中Model一行输出了Logistic回归模型中所有参数是否均为0的似然比检验结果。P<0.05表示本次拟合的模型中,纳入的变量中,至少有一个变量的OR值有统计学意义,即模型总体有意义。
Hosmer and Lemeshow Test是检验模型的拟合优度。当P值不小于检验水准时,认为当前数据中的信息已经被充分提取,模型拟合优度较高。
Model Summary表格中,提供了因变量的变异能够被拟合的模型解释的比例。该表格包含Cox & Snell R Square和Nagelkerke R Square,这两种R22,在Logistic回归中意义不大,可以不予关注。模型预测能力
拟合Logistic回归模型后,对于每一个自变量组合,均可以得到结局事件发生的概率。如果事件发生的概率大于或等于0.5,Logistic回归判断为事件发生;如果可能性小于0.5,则判断为事件未发生。因此,与真实情况相比,就可以评价Logistic回归模型的预测效果。
Logistic回归模型能够将71.0%的观测正确分类,该指标常被称作percentage accuracy in classification,即诊断试验中的一致率。
预测为“是”的观测数占实际为“是”的观测数的比例即灵敏度。本研究中,45.7%患有心脏病的研究对象被模型预测患有心脏病。预测为“否”的观测数占实际为“否”的观测数的比例即特异度。本研究中,84.6%未患心脏病的研究对象被模型预测未患心脏病。
同理,还可以计算得到阳性预测值和阴性预测值。
方程中的自变量
由于本次统计过程中筛选变量的方式是Enter法,因此所有自变量均进入了模型,Variables in the Equation表格中也列出了所有自变量及其参数。其中Sig.一列表示相应变量在模型中的P值,Exp 和95% CI for EXP 表示相应变量的OR值和其95%可信区间。
结果显示,age,gender和VO2max有统计学意义,但weight没有统计学意义。
对于分类变量,OR值的含义为:相对于赋值较低的研究对象,赋值较高的研究对象患心脏病的风险是多少。对于连续变量,OR值的含义为:自变量每增加一个单位,发生结局的风险增加的倍数。
五、撰写结论
本研究采用二分类Logistic回归评估年龄、体重、性别和最大摄氧量对研究对象患心脏病的影响。使用Box-Tidwell方法检验连续自变量与因变量logit转换值间是否为线性。线性检验模型时共纳入8项,Bonferroni校正后显著性水平为0.00625。线性检验结果得到所有连续自变量与因变量logit转换值间存在线性关系。一个观测的学生化残差为标准差的3.349倍,但保留在分析中。
最终,得到的Logistic模型具有统计学意义,χ2=27.402,P<0.0005。该模型能够正确分类71.0%的研究对象。模型的敏感度为45.7%,特异度为84.6%,阳性预测值为61.5%,阴性预测值为74.3%。模型纳入的五个自变量中,年龄、性别和最大摄氧量有统计学意义。男性患心脏病的风险是女性的7.026倍。年龄每增加1岁,患心脏病的风险增加8.9%。最大摄氧量每增加一个单位,患心脏病的风险降低9.4%。
扩展阅读
在进行二分类Logistic回归分析前,如果样本不多而变量较多,建议先通过单变量分析考察所有自变量与因变量之间的关系,筛掉一些可能无意义的变量,再进行多因素分析,这样可以保证结果更加可靠。
即使样本足够大,也不建议直接把所有的变量放入方程直接分析,一定要先弄清楚各个变量之间的相互关系,确定自变量进入方程的形式,这样才能有效的进行分析。
经过单因素分析后,应当考虑应该将哪些自变量纳入Logistic回归模型。一般情况下,建议纳入的变量有:1)单因素分析差异有统计学意义的变量;2)单因素分析时,没有发现差异有统计学意义,但是临床上认为与因变量关系密切的自变量。
此外,对于连续变量,如果仅仅是为了调整该变量带来的混杂,则可以直接将改变量纳入Logistic回归模型;如果关心该变量对因变量的影响程度,一般不直接将该连续变量纳入模型,而是建议将连续变量转化为有序多分类变量后纳入模型。
这是因为,在Logistic回归中直接纳入连续变量,那么对于该变量的OR值的意义为:该变量每升高一个单位,发生结局事件的风险变化。这种解释在临床上大多数是没有意义的。
更多阅读
-ykh关注医咖会,轻松学习统计学~
),拉你进统计讨论群和众多热爱研究的小伙伴们一起交流学习。