有序逻辑回归
这个方法是做什么的
因变量是有高低次序但间距不明的等级时用的回归方法:疗效分无效 / 有效 / 显效,满意度分 1~5 星。它把这些等级看成一个连续潜变量被若干阈值切开的结果,每个自变量给出一个累积优势比 OR:自变量增加 1 个单位,“落在更高等级”的累积优势变成原来的多少倍。OR 大于 1 是往高等级推,小于 1 是往低等级拉,OR 的 95% 置信区间不含 1 与 p 小于 0.05 完全等价。
报告除了 B、标准误、Wald χ²、OR 及其区间,还给出把各等级切开的阈值表、模型整体的似然比检验与 AIC/BIC、三个伪 R²、分等级的预测准确率与两条基线(比例机会准则 Σp² 及其 1.25 倍达标线、全部预测为最大等级)、混淆矩阵,以及 Kendall τ-b 与 Spearman ρ 两个有序一致性指标。最要紧的一张表在卡①:比例优势(平行线)假设检验——把本模型与不作此限制的多项 Logistic 做似然比检验,df =(等级数 − 2)× 自变量个数,它决定了那个“单一 OR”还能不能说。
需要准备什么数据
- 有序因变量 (Y):定量变量(数值)
- 自变量 (X):不限
数据要求
- 数据表至少 30 行。
- 单列缺失率不超过 30%。
- 「有序因变量 (Y)」的类别数需在 2~20 之间。
以上条目由系统从该方法的校验规则直接生成,与上传数据时的实际拦截规则一致。
什么时候用它
- 结局是有序等级(疗效分级、满意度、严重度分期、信用评级),想知道哪些因素把人往高等级推
- 等级之间的间距说不清楚,因此不愿把它当成数值直接跑线性回归
- 需要一张能写进论文的 OR 表,并且要报告平行线假设的检验结果
- 想同时看模型的排序能力(Kendall τ-b)而不只是“分对了几个”
因变量必须拖入数值编码的列(如 1=不满意、2=一般、3=满意),数值大小就是等级方向;文字标签会被明确报错拒绝,因为字典序会把“低 / 中 / 高”排成“中 < 低 < 高”,静默猜错比报错更糟。等级数上限为 20,超过直接拒绝。经验上每个自变量至少要有 10 个最小等级的观测,卡① 给出实测 EPV;某个等级样本太少会让对应阈值不稳定,应先与相邻等级合并。
什么时候不要用它
- 比例优势假设被卡① 拒绝:这时单一 OR 掩盖了不同切点上的效应差异,报告卡② 会在系数表下打警示。标准解法偏比例优势模型与多项 Logistic 本产品未提供,产品内可行的三条路:按每个切点各做一次二分(“1 vs 2 及以上”“2 及以下 vs 3”)分别跑「逻辑回归」,看效应是否真的随切点变化;把差异集中的相邻等级合并后回到本模块重跑;只要预测不要 OR 时改用「随机森林分类」或「CHAID决策树」。
- 因变量只有两个等级:退化成二分类,直接用「逻辑回归」;按 Probit 尺度报告的用「二分类概率单位回归(Probit)」。
- 等级其实是无序类别(三个品牌任选其一):等级顺序由数值编码决定,编错了整个模型的方向就错——无序结局所需的多项 Logistic 本产品未提供,可按研究问题合并成两类后用「逻辑回归」,或改用「随机森林分类」「CHAID决策树」。
- 因变量本质是连续的(量表总分、检测值):等级数一多阈值就估不动,本模块 20 级封顶——用「线性回归 (最小二乘法)」。
- 观测之间不独立(同一批患者多次评级、同一机构内的受试者):卡① 明说独立性由抽样设计决定、数据检不出来,不独立时标准误会被低估。但产品里能处理簇结构的三个模型都收不下等级因变量——「广义估计方程(GEE)」只有泊松/二项/Gamma 族,「广义线性混合模型(GLMM)」只有泊松与二项,「混合模型」只收定量因变量。两条可行路:按研究问题把等级并成两类后用「广义估计方程(GEE)」;或继续用本模块,接受“按独立观测估计、标准误偏小”并在文中声明。
- 只想知道几组之间的等级分布有没有差异,不需要建模:用「多独立样本Kruskal-Wallis检验」;只看一个有序变量与另一个有序变量的关联强度,用「Kendall’s tau-b相关分析」或「Spearman相关分析」。
容易误读的地方
- 平行线假设不成立时,最省事的做法恰恰是最错的:照抄那张 OR 表。 比例优势假设的内容是“同一个自变量对跨越每一个切点的效应完全相同”——年龄对“从无效到有效”和“从有效到显效”的推力必须一样大。它被拒绝,说明现实里这两个推力不同,而模型只报了一个平均出来的 OR。卡①、卡②、卡③、卡⑤ 会在四处同时打出警示,这不是提醒你“注意谨慎”,是提醒你这张表的解释口径已经失效。
- 反过来,检验不显著也不等于假设成立。 这个似然比检验的功效随样本量而变:样本小的时候,即使各切点的效应差别很大也可能检不出来;样本极大的时候,微不足道的差异也会被判显著。所以检验结果要和 df 与样本量一起读,不显著只说明“这批数据没检出违背”,不是“已证明平行”。
- OR 是累积优势比,不是“等级升一级”的倍数,也不是相对风险。 它说的是“Y 超过任意一个切点”的优势变化——正因为要求这句话在所有切点上都成立,它才和平行线假设绑在一起。把 OR = 1.8 说成“等级提高 1.8 倍”或“显效的概率是 1.8 倍”都是错的,准确的说法是“落在更高等级的累积优势为原来的 1.8 倍”。
- 阈值表里的标准误、z、p 与置信区间跟“真实切点 θ”不是一个口径,不能混用。 底层把阈值存成 [θ₁, log(θ₂−θ₁), …],报告的“真实切点 θ”列已经还原成累加形式,但同一行的标准误与区间仍是内部参数化下的统计量(表注写明了这一点)。所以那个区间不是真实切点的置信区间。
- 中间等级预测准确率偏低是模型的固有特性,不一定是缺陷。 有序模型倾向于把样本推向两端等级,混淆矩阵里中间那一行往往最难看。判断模型有没有用,要看整体准确率是否超过卡④ 给的比例机会准则基线的 1.25 倍,以及误判是否集中在对角线附近——大量跨两级的误判才是真问题。另外这些准确率全是训练集回代,必然偏乐观,本模块没有做交叉验证或外部验证。
- 伪 R² 不能按线性回归 R² 的直觉读。 McFadden 达到 0.2~0.4 就已经是很好的拟合,用“0.24 太低”的线性回归标准去衡量会得出完全错误的结论。Cox & Snell 的上界本身小于 1(报告会打出该上界),Nagelkerke 是把它重标定到 0~1 的版本,两个一起报并写明口径。要衡量“排序对不对”,Kendall τ-b 比伪 R² 和准确率都更贴合有序因变量的本质。
检验只能拒绝原假设,不能证明它成立。p = 0.42 既可能是真的没有差别,也可能是样本量不够、差别没被检出来,两者从这个 p 值上分不开。规范的写法是「没有证据表明……」;要论证「两者确实相当」,需要另做等价性检验。
报告里有什么
- 输出结果一:数据概览与前提检验
- 输出结果二:回归系数表、阈值表与模型整体检验
- 输出结果三:OR 森林图与分等级预测准确率
- 输出结果四:效应量、预测性能与有序一致性
- 输出结果五:结论与学术表述
每个点为该自变量的累积优势比 OR = exp(B),横向须线为其 95% 置信区间,红色虚线为 OR = 1 的无效参考线。区间跨过参考线(含 1)表示不显著(灰点),整段落在一侧则显著(蓝点)。本图只含自变量,已剔除阈值项。
蓝柱为各等级的实际频数、绿柱为被正确预测的频数,红线(右轴)为该等级的预测准确率;整体准确率 59.00%(训练集回代,预测规则为取后验概率最大的等级)。