条件逻辑回归

所属分类:医学统计模型

这个方法是做什么的

配对或精细分层的病例对照研究专用的回归。它对每一个配对组做条件化,把匹配因素(年龄、性别、住院中心、时间窗……)的影响彻底消掉——不是“调整”,是从似然里消失。代价是模型不估截距,也算不出个体的预测概率,因此没有 ROC、AUC 与混淆矩阵。它给出的 OR = exp(β),在配对病例对照设计里是发病率比的一致估计。

除了系数与 OR,报告给模型整体的似然比检验、三个伪 R²、配对组数与其中的有信息配对组数、以有信息组数为分子的 EPV、各列 VIF、Holm 校正后的 p、OR 森林图,以及各自变量在病例组与对照组的粗均值对比。第一张卡有一行专门核对“匹配因素未重复进入自变量”——匹配变量已被条件化掉,再放进自变量区会让模型不可识别,这一条由拖拽区的互斥契约挡住。

需要准备什么数据

  • 放入二分类0-1变量Y (变量数=1):1 个,定类变量(分组/标签)
  • 放入[定类]或[定量] 自变量X (变量数≥1)(可选):至少 1 个,定量或定类变量
  • 放入配对编号变量 (变量数=1):1 个,定类变量(分组/标签)

数据要求

  • 数据表至少 20 行。
  • 单列缺失率不超过 20%。
  • 不接受取值全都一样的列(零方差列没有可分析的变异)。
  • 「放入二分类0-1变量Y (变量数=1)」必须正好是 2 个类别。
  • 「放入配对编号变量 (变量数=1)」的类别数需在 2~100000 之间。
  • 「放入配对编号变量 (变量数=1)」的每一组至少 2 个样本。

以上条目由系统从该方法的校验规则直接生成,与上传数据时的实际拦截规则一致。

什么时候用它

  • 1:1 或 1:N 配对的病例对照研究
  • 按医院、地区、入组批次做精细分层,每层只有很少几个人
  • 病例交叉设计:同一个体的暴露期与对照期互为配对
  • 匹配因素本身不是研究兴趣,只想把它连同它带来的一切混杂一起扣掉

数据要求:至少 20 行、缺失比例不超过 20%、不允许常数列;因变量恰两类且编码 0/1(1=病例,0=对照);必须提供配对编号,且每组至少 2 条记录。真正决定信息量的不是行数,而是组内同时含病例与对照的那些组——全是病例或全是对照的组对条件似然没有贡献,卡①会把有信息组数与无信息组数分开列出(示例 150 组全部有信息)。连续自变量与 logit 的线性这条本模块不做形式检验,怀疑非线性时可先分箱后作定类变量纳入。

什么时候不要用它

  • 数据根本没有配对或分层结构:用「逻辑回归」,它同时给 ROC、AUC 与个体预测概率。
  • 目的是建预测模型、需要个体风险与 AUC:条件似然给不了这些,用「逻辑回归」。
  • 匹配因素本身就是你要估的效应:它已被条件化消掉,改用「逻辑回归」把它当普通协变量纳入。
  • 结局是“事件发生的时间”而非是否发生:用「Cox比例风险回归」。
  • 组内相关来自重复测量而非匹配设计,且你要的是总体平均效应:用「广义估计方程(GEE)」;要随机效应则用「广义线性混合模型(GLMM)」。
  • 只有一个二分类暴露、不需要调整任何协变量:用「配对卡方检验」。

容易误读的地方

  • 忽略匹配、改用普通「逻辑回归」,OR 会朝无效方向衰减、推断变得更保守——不是变得更显著。 这一点方向很容易记反。匹配设计里匹配因素同时与暴露和结局相关,不做条件化时它被并进了误差,估出来的是“总体平均”意义上的 OR,向 1 收缩,检验也随之偏保守。所以你看到普通逻辑回归给出的 OR 比条件逻辑回归更接近 1、p 更大,这是预期现象,不是条件模型算错了。
  • 主结果表的列名写作“RR值”,实际是比值比 OR。 表注写明“RR 列即比值比 OR = exp(回归系数)”。同一张表的标准误列标着“(Robust)”,而表注说明它其实是条件似然的模型基标准误(逆 Hessian)——条件化本身已经处理了组内相关,无需额外的聚类稳健校正。两处都以表注为准,誊进论文时别照抄列名。
  • 有信息配对组数才是真正的样本量,EPV 也是按它算的。 示例是 300 行、150 组、150 组全部有信息,EPV=150/3=50.0。但换一批数据完全可能出现“300 行里只有几十组有信息”的情形——那时行数看着很宽裕,实际估计精度却很差。每次先读卡①“有信息配对组数(无信息 N 个)”那一行。
  • 数值型自变量一律按连续入模,用数字编码的分组会被当成连续量。 表注给出了自动判定清单,明确分成“按连续处理(OR = 每增加 1 个单位)”与“按定类处理(OR = 相对参照类)”两栏。如果你用 1/2/3 编码医院、用 0/1/2 编码分期,模型会读成“编号每加 1”,得到的 OR 毫无意义。表注也给了出路:先把它改成文本型类别再重跑。
  • 这里的伪 R² 不是“解释了多少方差”,而且没有 ROC 可以退而求其次。 卡②的备注段直接写明所用的 statsmodels 条件逻辑回归未实现预测功能,因而无法给出 ROC/AUC 与混淆矩阵。示例 McFadden=0.184、Cox & Snell=0.120、Nagelkerke=0.239,它们衡量的是似然改善程度的不同标定,只宜在同一份数据上做模型间的相对比较。

报告里有什么

  1. 输出结果一:数据概览与前提检验
  2. 输出结果二:模型检验与回归系数主结果表
  3. 输出结果三:可视化(OR 森林图与病例/对照分布对比)
  4. 输出结果四:效应量与事后分析
  5. 输出结果五:结论与学术表述
conditional_logistic_regression
图1
各自变量在病例组与对照组的均值对比
图2 各自变量在病例组与对照组的均值对比
森林图直观展示各自变量的比值比(OR/RR)点估计及其95%置信区间;竖直虚线为无效参考线(OR=1)。

在线统计分析平台 · 233 种分析方法 · AI 智能解读

在线使用
使用教程