二分类Logistic回归【详】-SPSS教程

张耀文

张耀文

医咖会

擅长:研究设计、统计分析、循证医学、样本量计算、随机化方案、数据管理
已关注
关注
秦晨曦

秦晨曦

karolinska institute

擅长:遗传流行病学
已关注
关注
2017-11-16 来源:医咖会

一、问题与数据

某研究者想了解年龄、性别、BMI和总胆固醇(TC)预测患心脏病(CVD)的能力,招募了100例研究对象,记录了年龄(age)、性别(gender)、BMI,测量血中总胆固醇水平(TC),并评估研究对象目前是否患有心脏病(CVD)。部分数据如图1。

图1 部分数据

二、对问题分析

使用二分类Logistic模型前,需判断是否满足以下7项假设。

假设1:因变量(结局)是二分类变量。

假设2:有至少1个自变量,自变量可以是连续变量,也可以是分类变量。

假设3:每条观测间相互独立。分类变量(包括因变量和自变量)的分类必须全面且每一个分类间互斥。

假设4:最小样本量要求为自变量数目的15倍,但一些研究者认为样本量应达到自变量数目的50倍。

假设5:连续的自变量与因变量的logit转换值之间存在线性关系。

假设6:自变量之间无多重共线性。

假设7:没有明显的离群点、杠杆点和强影响点。

假设1-4取决于研究设计和数据类型,本研究数据满足假设1-4。那么应该如何检验假设5-7,并进行二分类Logistic回归呢?

三、SPSS操作

3.1 检验假设5:连续的自变量与因变量的logit转换值之间存在线性关系

连续的自变量与因变量的logit转换值之间是否存在线性关系,可以通过多种方法检验。这里主要介绍Box-Tidwell方法,即将连续自变量与其自然对数值的交互项纳入回归方程。

本研究中,连续的自变量包括age、BMI、TC。使用Box-Tidwell方法时,需要先计算age、BMI、TC的自然对数值,并命名为ln_age、ln_BMI、ln_TC。

(1)计算连续自变量的自然对数值

以age为例,计算age的自然对数值ln_age的SPSS操作如下。在主界面点击 Transform→Compute Variable,出现Compute Variable对话框。在Target Variable框中输入即将生成自然对数值的变量名称(如输入ln_age表示age的自然对数值)。选择Function group菜单下的Arithmetic,选择Functions and special variables菜单下的Ln,双击Ln将该公式选入Numeric Expression框中,最后双击age将该变量选入“LN()”公式中。点击OK生成新变量ln_age(即age的自然对数值)。如图2。

图2 Compute Variable

此时新变量会同时出现在Variable View和Data View窗口中。在Data View窗口中,新生成的ln_age变量如图3。

图3 新生成ln_age变量

重复以上过程,将本研究中的所有连续自变量的自然对数值全部生成。在Data View中,新生成的ln_age,ln_BMI,ln_TC变量如图4。

图4 新生成ln_age、ln_BMI和ln_TC变量

(2)Box-Tidwell法

Box-Tidwell法检验连续的自变量与因变量的logit转换值之间是否存在线性关系的SPSS操作如下。在主界面中点击 Analyze→Regression→Binary Logistic。在Logistic Regression对话框中将变量CVD选入Dependent框中,将变量age、gender、BMI和TC选入Covariates框中。Methods选项选择默认值,即Enter。如果目前未选择Enter,应修改为Enter。如图5。

图5 Logistic Regression

点击Categorical,在Logistic Regression:Define Categorical Variables对话框中,将gender选入Categorical Covariates框中。在Change Contrast区域,将Reference Category从Last改为First后,点击Change→Continue。如图6。

图6 Categorical Variables

对于二分类变量(如本研究的gender),也可以不通过Categorical选项指定参照,SPSS将默认以赋值较低的变量为参照。

Categorical选项可将多分类变量(包括有序多分类和无序多分类)变换成哑变量,指定某一分类为参照。比如,某研究中COPD是多分类变量(分为无COPD病史、轻/中度、重度),如果指定“无COPD病史”的研究对象为参照组,可以分别比较“轻/中度”和“重度”组相对于参照组发生结局的风险。

Contrast右侧的下拉菜单中(该下拉菜单内的选项是几种与参照比较的方式),Indicator方式最常用,其比较方法为:第一类或最后一类为参照类,每一类与参照类比较)。在Reference Category的右侧选择First,表示本研究以女性(赋值为0)为对照组。

回到Logistic Regression对话框后,可见gender已显示为gender(Cat)。分类变量后显示“(Cat)”说明已正确定义分类变量。如图7。

图7 正确定义分类变量

设置好分类自变量后,开始生成交互项。以age和ln_age为例,同时选中age和ln_age(使用Ctrl键+鼠标点击),点击“>a*b>”键,将age* ln_age交互项选入Covariates框中。如图8。

图8 选入交互项

重复以上过程,将所有交互项都选入Covariates框中,点击OK。如图9。

图9 选入所有交互项

(3)假设5的检验结果

查看Variables in the Equation表格中,有交互作用的行及行内“Sig”值,本研究中为age by ln_age、BMI by ln_BMI和TC by ln_TC所在的行及行内“Sig”值。如图10。

图10 假设5的检验结果

如果交互作用有统计学意义(P<0.05),则说明对应的连续自变量与因变量logit转换值间没有线性关系(即不符合假设5)。尽管解释回归结果时通常不进行多重校正,但在检验线性假设时建议对纳入分析的所有项(包括截距项)进行Bonferroni法校正。

本研究中,共有8项纳入模型分析,包括三个连续自变量age、BMI、TC,分类自变量gender,三个交互作用项age*ln_age、BMI*ln_BMI、TC*ln_TC和截距项(Constant)。因此本研究中,建议选择显著性水平应为α=0.00625(即0.05 ÷ 8)。根据该显著性水平,本研究所有交互项的P值均高于0.00625,因此所有连续自变量与因变量logit转换值之间存在线性关系。

假设5检验完之后,有两种情况:①所有连续自变量与因变量的logit转换值间存在线性关系,则直接进行下一步;②如果一个及以上连续自变量与因变量的logit转换值间不存在线性关系,建议将该变量转换为有序分类变量。

3.2 检验假设6:自变量之间无多重共线性

与线性回归一样,二分类Logistic回归模型也需要检验自变量之间是否存在多重共线性。自变量之间的简单相关或多重相关都会产生多重共线性。容忍度(Tolerance)或方差膨胀因子(VIF)可以用来诊断自变量之间的多重共线性。遗憾的是,SPSS的Binary Logistic模块并不能提供容忍度或方差膨胀因子,但是我们可以通过线性回归来获得。由于我们关心的是自变量之间的关系,因此容忍度或方差膨胀因子与模型中因变量的函数形式无关。也就是说,我们可以将Logistic回归的因变量(二分类变量)、自变量(二分类、多分类或连续变量)直接带入线性回归模型,从而获得容忍度或方差膨胀因子。

在主界面点击Analyze→Regression→Linear,将变量CVD选入Dependent,将age、gender、BMI和TC选入Independent(s),如图11。

图11 Linear Regression

点击Statistics,出现Linear Regression:Statistics对话框,点击Collinearity diagnostics→Continue→OK,如图12。结果如图13。

图12 Linear Regression:Statistics对话框

图13 Coefficients

如果容忍度(Tolerance)小于0.1或方差膨胀因子(VIF)大于10,则表示有共线性存在。本例中,容忍度均远大于0.1,方差膨胀因子均小于10,所以不存在多重共线性。如果数据存在多重共线性,则需要用复杂的方法进行处理,其中最简单的方法是剔除引起共线性的因素之一,剔除哪一个因素可以基于理论依据。

3.3 检验假设7:没有明显的离群点、杠杆点和强影响点

该假设的SPSS操作见下述3.4部分,此处仅展示如何解读结果。结果中Casewise List表格显示学生化残差大于2倍标准差的观测。学生化残差大于2.5倍标准差的观测需要研究者进一步观察决定这些观测是否是离群点,如有必要甚至可以从分析中剔除这些观测。

本例中,第15、55、65、78和99个观测(Case Number)的学生化残差绝对值均大于2.0,符合上述判断可能是离群点的标准。如图14。

图14 Casewise List

需要注意的是:①如果所有观测的学生化残差小于2倍标准差,SPSS不会输出Casewise List表格。如果已经剔除离群点,则第一次分析得到的Casewise Diagnostics表格不会再显示。②观测数(Case Number)指SPSS系统内自动编码(Data View窗口中最左侧蓝色一列中的编码),而非研究者赋值的编码。③研究者需要查看该观测为离群点的原因,决定是否删除该观测并报告。本研究暂考虑不删除离群点,并在结果中报告。

3.4 二分类Logistic回归

在主界面点击Analyze→Regression→Binary Logistic,在Logistic Regression对话框中,将CVD选入Dependent,将age、gender、BMI和TC选入Covariates。并按照3.1第2部分的操作,通过Categorical将gender变换为哑变量。如图15。

注意:如果按本文中指导逐步分析,此时Logistic Regression对话框下为因变量CVD,Covariates框中为4个自变量age、gender(Cat)、BMI、TC和3个交互项age* ln_age、BMI*ln_BMI、TC*ln_TC。此时仅需要将交互项age* ln_age、BMI*ln_BMI、TC*ln_TC从Covariates框中删除即可。

图15 Logistic Regression

对于自变量筛选的方法(Method对话框),SPSS提供了7种选择,使用各种方法的结果略有不同,读者可相互印证。各种方法之间的差别在于变量筛选方法不同,其中Forward: LR法(基于最大似然估计的向前逐步回归法)的结果相对可靠,但最终模型的选择还需要获得专业理论的支持。本文以Enter法为例进行展示(其它方法得到的结果,解释方法一样)。这里使用Enter法。

点击Options,在Logistic Regression: Options对话框中,选中Classification plots,Hosmer-Lemeshow goodness-of-fit,Casewise listing of residuals和CI for exp(B)这4个选项。在Display区域,选中At last step选项。点击Continue→OK。如图16。

图16 Logistic Regression:Options

评论
请先登录后再发表评论
发表评论
medi_27936368251
连续自变量里面有负数如何取对数呢
2024-11-18 23:08:05 回复
1
medi_28488305454
老师,您好,得出的结果Hosmer and Lemeshow Test 中sig. 这一个是空的怎么办
2024-06-16 15:54:03 回复
0
medi_28476555454
老师你好,我想问在logistic回归分析整个过程中怎么看标准化偏回归系数?
2024-02-22 17:52:02 回复
0
良良良
问一下,这个异常值,除了离群点外,还有高杠杆点和强影响点,后两者怎么在Logistic回归中发现呢?
2024-02-07 21:48:38 回复
0
风之旅者
这是我见过的最详细的二分类Logistic回归教程了,感谢
2024-01-11 14:07:55 回复
1
medi_z3y1ggh
以前不是免费的吗?
2023-12-31 17:48:05 回复
1
medi_28121990628
老师,请问,想做危险因素筛选做预测模型,先是单因素筛选出9个因素<0.05,接着在做多因素logistic回归时,只有一个影响因素p<0.05,筛选法换了一圈都不好,基本上OR值都是<1,但是H-L检验显示p=1模型拟合度好,这个应该怎么办啊?数据问题吗?
2023-06-24 22:25:46 回复
0
medi_27722230571
如果是队列研究,还得用OR值解释吗?能不能用RR?
2023-05-04 21:35:00 回复
0
medi_25dncqn
果然嗯
2023-03-06 20:30:44 回复
0
Jael
老师,您好,请问一下,连续性资料的自变量中有负值,不能检验是否与因变量的logit转化值之间是否存在线性关系,那还需要检验吗?
2022-10-14 16:45:19 回复
0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
使用课程券需先认证
为保证平台的学术氛围,请先完成认证,认证可免费享受基础会员权益
基础课程券2张
专属科研工作台
200积分
确认
取消
下载附件需认证
为保证平台的学术氛围,请先完成认证,认证可免费享受基础会员权益
基础课程券2张
专属科研工作台
200积分
确认
取消
公众号
统计咨询
扫一扫添加小咖个人微信,立即咨询统计分析服务!
会员服务
SCI-AI工具
积分商城
意见反馈