Chapter 12 快速批量分析(快速探查数据库得到批量结果)
本章介绍用于快速探查数据库、批量获得初步统计结果的模块。这一类模块用于正式统计分析前的数据预评估,帮助研究者了解数据结构、变量方向、模型稳定性和图表表现。
在实际研究中,很多数据库刚整理完成时,研究者往往还不确定:
- 哪个结局最适合建模;
- 哪些变量方向合理、效应量稳定;
- 哪些分类水平样本太少,容易导致极端 OR、HR 或回归系数;
- 哪些变量存在明显共线性;
- ROC、Calibration、DCA 等图形是否提示模型具备进一步评价价值;
- 生存结局的时间点是否在随访数据支持范围内。
快速批量分析模块面向上述预分析阶段。研究者可先批量生成候选模型结果,用于筛选研究思路、检查数据质量、识别建模风险,再将筛选后的研究方案转入正式模块完成规范的预测研究分析和论文写作。
12.1 nomogram 快速批量预分析(线性/Logistic/Cox 回归、列线图、ROC、Calibration、DCA)
本模块用于对不同结局类型的候选预测模型进行快速批量预分析,支持以下三类结局:
- 连续性结局:使用多因素线性回归,快速输出回归结果、线性列线图、预测值-实测值图和连续结局校准曲线;
- 二分类结局:使用 Logistic 回归,快速输出 OR 表、列线图、ROC 曲线、PR 曲线、Calibration 校准曲线、DCA 曲线和内部验证结果;
- 生存型结局:使用 Cox 回归,快速输出 HR 表、Cox 列线图、timeROC 曲线、Calibration 校准曲线、DCA 曲线和内部验证结果。
需要特别强调:本模块不是正式的 nomogram 预测研究成文模块。 Mstata 已经在顶部菜单的“预测研究”中提供了正式的 Linear / Logistic / Cox nomogram 模块,这些正式模块按照临床预测模型论文的流程设计,包括数据集划分、变量筛选、验证、图表整理和论文初稿生成。本模块的定位是快速批量预分析,用于在正式分析前完成数据结构、候选变量和模型表现的初步评估。
12.1.1 什么时候使用本模块
推荐在以下场景中使用本模块:
数据库整理完成后,需要进行初步质量评估。
先看候选结局、候选预测因子是否能够正常建模,是否存在缺失过多、分类水平过稀、完全分离、随访时间不足等问题。需要比较不同结局类型的建模表现。
例如同一批临床变量既可能预测住院天数,也可能预测并发症发生,还可能预测生存时间。可以在本模块中分别选择连续性、二分类和生存型结局,快速观察结果形态。需要初步筛选预测因子组合。
可以反复更换预测因子,观察多因素回归表、共线性诊断、ROC 或 timeROC、校准曲线和 DCA 是否合理。需要在正式建模前识别明显数据问题。
例如事件水平选反、status 编码错误、随访时间单位错误、某个分类变量水平人数太少、变量之间高度重复等,都可以通过本模块提前暴露。需要形成正式分析前的阶段性记录。
模块提供 Word 报告下载,可作为数据预评估、变量筛选和正式分析前的记录,不建议直接作为投稿论文的最终统计报告。
12.1.2 什么时候不应该只用本模块
如果研究目标是正式发表一篇临床预测模型论文,不建议停留在本模块。完成预分析后,应转入“预测研究”菜单下对应的正式模块:
| 研究结局 | 预分析后建议转入的正式模块 |
|---|---|
| 连续性结局,例如住院天数、评分、实验室指标 | Linear - 连续性结局 nomogram |
| 二分类结局,例如是否复发、是否死亡、是否发生并发症 | Logistic - 二分类结局 nomogram |
| 生存型结局,例如 OS、PFS、DFS、复发时间 | Cox - 生存结局 nomogram |
| 希望上线交互式网页计算器 | 生成动态 nomogram 并自动搭建互动网站 |
正式模块会更系统地处理训练集/验证集或内部 CV / Bootstrap 验证、基线特征表、变量筛选、模型性能、校准、DCA、论文图表和论文初稿。因此,本模块的结果主要用于判断数据是否具备进一步预测建模的条件,以及哪些变量组合需要在正式分析中重点评估。
12.1.3 数据准备要求
使用本模块前,建议先在“数据准备”相关模块中完成以下工作:
确认每一行是一名研究对象或一次独立观察。
确认变量类型正确。
连续性结局应为数值型;二分类结局应只有两个水平;生存结局需要一个随访时间变量和一个二分类状态变量。处理明显错误值和异常值。
例如随访时间为负数、年龄不合理、实验室指标单位混乱等,应先在数据清理阶段处理。处理缺失值。
如果候选预测因子缺失较多,模型会因完整病例数不足而不稳定。缺失率较低时可考虑在数据准备模块中先做缺失填补,并用原始数据和填补后数据分别预分析。合并过稀的分类水平。
如果某个分类变量的某些水平只有极少数样本,Logistic 和 Cox 模型中容易出现极端 OR/HR、无限置信区间或模型不收敛。生存结局要确认时间单位。
生存型结局需要明确原始随访时间是天、周、月还是年,并设置希望展示和分析的时间单位。输入的预测时间点不能超过数据中的最大随访时间。
12.1.4 操作流程
进入模块后,建议按以下顺序完成设置和分析。
12.1.4.1 第一步:选择结局变量类型
左侧面板顶部先选择结局类型:
- 连续性变量:用于线性回归预分析;
- 二分类变量:用于 Logistic 回归预分析;
- 生存型变量:用于 Cox 回归预分析。
结局类型设置错误会导致结果解释错误。例如,将二分类结局作为连续性结局处理时,系统会输出线性回归系数而不是 OR;将生存结局仅作为是否死亡处理时,会丢失随访时间信息。
12.1.4.2 第二步:选择结局变量和事件水平
连续性结局只需要选择要预测的连续变量。
二分类结局需要额外指定哪个水平表示“事件发生”。例如结局变量为 Yes/No 时,如果希望预测发生并发症,应选择 Yes 作为事件水平。事件水平选反会导致 OR、ROC、DCA 和校准曲线的方向全部反转。
生存型结局需要选择:
- 随访时间变量;
- 生存状态变量;
- 哪个状态水平表示发生事件;
- 原始随访时间单位;
- 希望在 nomogram、timeROC 和校准曲线中展示的时间单位;
- 需要预测的时间点。
如果输入的时间点超过最大随访时间,模块会给出提示。此时应根据随访数据支持范围重新设置时间点。
12.1.5 结果解释要点
12.1.5.1 连续性结局
连续性结局使用线性回归。主要看:
- 单因素和多因素线性回归表中的 Estimate、95% CI 和 P 值;
- 模型拟合指标,例如 R²、调整 R²、RMSE 和 MAE;
- 预测值-实测值图中散点是否接近理想线;
- 连续结局校准曲线是否显示预测值和观察值有较好一致性;
- 共线性和残差诊断是否提示明显问题。
连续性结局默认不提供 ROC、PR 或 DCA。如果研究问题本质上需要判断“是否发生某事件”,应先在数据准备阶段把连续指标按临床阈值转成二分类结局,再进入 Logistic 预分析或正式 Logistic nomogram 模块。
12.1.5.2 二分类结局
二分类结局使用 Logistic 回归。主要看:
- OR、95% CI 和 P 值是否方向合理;
- 是否出现极端 OR、Inf、NA 或非常宽的置信区间;
- ROC / AUC 是否具有一定区分度;
- PR 曲线在事件率较低时是否比 ROC 更能反映模型表现;
- Calibration 曲线是否接近理想对角线;
- DCA 曲线是否在临床有意义的阈值范围内提供净获益;
- 内部验证后的 C-index/AUC 是否明显下降。
如果表格中出现极端结果,应优先检查事件水平、稀有分类水平、缺失值和共线性,避免对不稳定模型作出过度解释。
12.1.6 Word 报告如何使用
本模块提供 Word 报告下载,报告会尽量整合当前已成功生成的表格和图形。没有生成或运行报错的结果会自动跳过。
这份 Word 更适合作为:
- 数据库初筛记录;
- 课题组讨论材料;
- 正式变量筛选前的参考;
- 与统计人员沟通建模方案的依据;
- 正式预测研究模块运行前的检查清单。
不建议把这份 Word 直接作为最终论文统计结果。正式论文仍应转入“预测研究”菜单下对应的正式模块重新完成建模、验证、图表整理和论文生成。
12.1.7 从预分析转入正式分析
完成本模块预分析后,建议记录以下信息,再进入正式模块:
- 最终希望预测的结局类型和结局变量;
- 二分类或生存结局中事件水平的编码;
- 生存结局的时间单位和目标预测时间点;
- 候选预测因子名单;
- 需要合并或删除的稀有分类水平;
- 需要排除的高缺失变量;
- 可能存在共线性的变量组合;
- 初步表现较好的模型方案;
- 需要在正式分析中重点报告的 ROC、Calibration 或 DCA 结果。
随后根据结局类型进入“预测研究”菜单下的正式模块。正式模块输出的结果才更适合作为论文正文、补充材料和投稿文件的基础。
12.1.8 常见问题
1. 为什么本模块也能生成列线图,却说它不是正式 nomogram 模块?
因为本模块强调快速预分析,允许用户快速尝试不同结局、不同变量组合和不同图形结果。正式 nomogram 研究还需要更完整的研究流程,例如训练/验证策略、变量筛选记录、基线表、模型验证、报告规范和论文撰写,这些由“预测研究”菜单下的正式模块承担。
2. 可以把本模块生成的图放进论文吗?
一般不建议直接作为最终版本。本模块生成的图形可用于预评估模型表现,正式论文图表应在正式预测研究模块中重新生成,并结合完整方法学描述。
3. 为什么选择所有变量后容易报错或结果很极端?
常见原因包括样本量不足、分类水平太稀、事件数太少、变量高度共线、缺失值导致完整病例减少,或二分类/生存结局事件水平设置错误。建议先减少变量数量,合并稀有水平,并检查事件编码。
4. 生存型结局时间点应该怎么选?
时间点应小于数据中最大随访时间,并且在该时间点附近有足够事件和随访人数。常见选择如 1 年、3 年、5 年,但必须结合实际随访长度和研究目标确定。
5. 连续性结局为什么没有 ROC 和 DCA?
连续性结局预测的是数值,不是事件概率。其重点是预测值与实测值是否接近,因此更适合看 R²、RMSE、MAE、预测值-实测值图和连续结局校准曲线。如果需要 ROC/DCA,应先定义清楚二分类事件,再使用 Logistic 模块。
12.2 批量回归阳性筛查(多 Y × 多 X,排序/筛选 P 值、效应量、AUC)
本模块用于在正式统计分析前,对数据库中的多个结局变量和多个候选自变量进行快速批量回归筛查。它的核心思想是:把每一个候选结局 Y 和每一个候选自变量 X 组合成一个独立的回归模型,在同一批固定协变量调整下快速拟合,然后把所有 Y-X 结果合并成可排序、可筛选、可下载的汇总表。
与前一节的 nomogram 快速批量预分析不同,本模块不生成列线图,也不追求完整预测模型流程。它更像一个正式分析前的“阳性信号探测器”,用于回答以下问题:
- 哪些候选自变量可能与哪些结局有关;
- 哪些结局变量更容易出现可解释、方向合理的阳性结果;
- 哪些分类变量存在稀有水平、极端效应量或模型不稳定;
- 是否需要在正式建模前合并水平、转换变量、处理缺失值或重新定义事件水平;
- 哪些
Y-X组合值得进入后续正式回归、预测模型、中介分析或亚组分析模块。
需要特别强调:本模块是正式分析前的快速筛查工具,不能直接替代正式建模和论文级统计分析。 筛查结果可以帮助形成研究假设、缩小候选变量范围、发现数据问题,但最终论文结果仍应在相应正式模块中重新完成模型设定、诊断、敏感性分析和规范报告。
12.2.1 什么时候使用本模块
推荐在以下场景中使用本模块:
数据库刚整理完成,需要快速摸底。
先看候选结局和候选自变量是否能够正常建模,是否存在模型报错、样本量不足、事件数不足、分类水平太稀等问题。一个课题中存在多个可能结局。
例如同一批临床变量可能与疗效、毒性反应、再入院、住院费用、生活质量或生存时间都有关。可以一次选择多种结局类型,让系统按结局类型自动拆分模型并合并结果。需要从大量候选自变量中寻找阳性线索。
例如基线特征、治疗方式、实验室指标和分期变量很多时,可先通过 P 值、效应强度、AUC 等指标筛选出值得进一步正式分析的候选关系。需要比较不同结局模型类型的结果形态。
本模块支持 Logistic、Log-Binomial、Ordered Logistic、Linear、Cox、Poisson 和带 offset 的 Poisson 模型。不同模型类型会拆成独立发表格式表格,便于分别查看。需要形成课题组讨论材料。
模块可下载 Word 汇总报告,适合在正式分析前给课题组展示候选阳性结果、变量方向和下一步建模计划。
12.2.2 什么时候不应该只用本模块
如果研究目标是正式发表论文,不建议只停留在本模块。原因包括:
- 本模块默认是快速批量单关系筛查,不负责完整研究设计;
- 筛选过程本身会产生多重比较和选择偏倚;
- apparent AUC 只能作为快速参考,不能替代训练集/验证集或 Bootstrap / CV 验证;
- 分类变量的多个水平虽然会在表格中一起展示,但正式论文仍需根据研究目的解释参照组、水平合并和临床意义;
- 协变量只作为固定调整项批量加入模型,正式分析仍需说明协变量选择依据。
因此,本模块更适合用于“找方向”和“排雷”。当筛查结果提示某些关系值得进一步研究时,应转入 Mstata 中对应的正式模块,例如 Logistic 回归、Cox 回归、Poisson 回归、预测模型、中介分析、亚组分析或疗效安全性分析模块。
12.2.3 支持的结局类型和模型
本模块按结局变量类型组织模型:
| 结局类型 | 模型 | 常见效应量 | 适合场景 |
|---|---|---|---|
| 二分类结局 | Logistic 回归 | OR | 是否发生疗效、并发症、再入院、死亡等 |
| 二分类结局 | Log-Binomial 回归 | RR | 希望直接估计相对风险时使用 |
| 有序多分类结局 | Ordered Logistic 回归 | OR | 分级结局,例如毒性等级、ECOG 分级、疾病控制等级 |
| 连续性结局 | 线性回归 | Beta | 住院天数、生活质量评分、实验室指标、费用等 |
| 生存型结局 | Cox 回归 | HR | OS、PFS、DFS、复发时间等 |
| 计数结局 | Poisson 回归 | IRR | 急诊次数、感染次数、治疗延迟次数等 |
| 计数/率结局 | Poisson + offset | IRR | 不同随访人时或暴露量下的发生率比较 |
软件会根据左侧选择,把不同结局类型拆成不同模型批次;最终结果在右侧按模型类型分成独立表格,而不是混在一张难以阅读的大表中。
12.2.4 数据准备要求
使用本模块前,建议先完成以下数据整理:
确认变量类型正确。
二分类结局应只有两个水平;连续结局应为数值型;Cox 结局需要时间变量和状态变量成对出现;Poisson 结局应为非负整数计数。确认事件水平。
二分类结局需要指定哪个水平表示事件发生,例如Yes、Event、Death或1。事件水平选反会导致 OR、AUC 和结果方向全部反转。确认 Cox 时间-状态配对。
Cox 模型不是只选择一个状态变量,而是每个随访时间变量都要对应一个状态变量,并指定哪个状态代表事件发生。处理缺失值和异常值。
批量模型默认基于完整病例运行。某些变量缺失较多时,该Y-X模型的样本量会明显下降,结果可能不稳定。整理分类变量水平。
对人数极少的分类水平,应考虑在数据准备阶段合并。否则可能出现非常大的 OR/HR、置信区间极宽或模型不收敛。提前确定固定调整变量。
如果需要调整年龄、性别、中心、分期等协变量,应在左侧“混杂/协变量”中一次性选择。所有模型会使用同一批固定协变量。
12.2.5 操作流程
进入模块后,建议按左侧面板顺序完成设置。下列截图按左侧面板的操作区分段展示,便于逐步对照。
12.2.5.1 第一步:选择应变量 Y
先选择要批量筛查的结局/模型类型。默认勾选 Logistic、Linear 和 Cox,适合多数临床数据库的初步探索。如果需要分析有序分级、计数结局或发生率结局,可以再勾选 Ordered Logistic、Poisson 或 Poisson + offset。
每种结局类型都有自己的变量选择框,可以同时选择多个 Y。系统会按不同模型类型分别拟合,最后合并为结果页中的多个独立表格。
对于二分类结局,页面会提供一个可折叠区域,用于为每个二分类 Y 设置事件水平。对于 Cox 结局,每个随访时间变量都需要选择对应状态变量和事件状态。
12.2.5.2 第二步:选择自变量 X
在“选择自变量 X”中选择候选自变量。候选 X 可以是连续变量,也可以是分类变量。对于分类自变量,模块提供“分类自变量参照组”折叠菜单,可为每个分类 X 设置参照水平。
分类变量在结果表中采用接近 gtsummary 的发表格式:变量名称作为主行,分类水平缩进显示在下面;参照组显示为 Ref.,其余水平显示对应 OR、RR、HR、IRR 或 Beta。
12.2.5.3 第三步:决定是否标准化
“标准化设置”是一个独立醒目的蓝色提示框,默认不勾选。勾选后:
- 连续候选自变量 X 会按 1 个标准差为单位进行临时标准化;
- 线性回归中的连续结局 Y 也会同步标准化;
- 固定协变量不会被标准化;
- 原始数据不会被写回或改变。
如果 X 的量纲差异很大,例如年龄、CRP、费用、肿瘤负荷同时进入筛查,标准化可以帮助比较效应强度。但正式论文中是否报告标准化效应量,应结合研究目的决定。
12.2.6 阳性排序表如何阅读
阳性排序表是本模块最重要的结果页。每个 Y-X 组合按模型类型分表展示,表格整体采用发表格式:
- Outcome:结局变量;
- Variable:候选自变量。连续变量直接显示变量名;分类变量先显示变量名,再缩进显示各水平;
- N:该模型使用的完整病例数;
- Events:二分类、Cox 或计数结局中的事件数;
- OR / RR / HR / IRR / Beta (95% CI):效应量和置信区间;
- P value:原始 P 值;
- BH-FDR:批量筛查下的 Benjamini-Hochberg FDR;
- AUC / Delta AUC:二分类模型中用于快速参考的区分度指标。
分类自变量不会在排序和筛选时被拆散。也就是说,一个三水平分类变量虽然会有多个非参照水平、多个 P 值和多个效应量,但排序和筛选时仍按同一个 Y-X 块处理,命中后所有水平同进同出。
12.2.7 排序和筛选规则
每个模型类型表格右侧都有独立控制面板。这样 Logistic、Linear、Cox 等结果可以使用不同的排序和筛选逻辑。
排序采用“第一排序字段、第二排序字段、第三排序字段”的方式。例如可以先按 Outcome 顺序排序,再在每个 Outcome 内按 P 值升序、效应强度降序排序。
常用排序字段包括:
- Outcome(选择顺序);
- Outcome 名称升序或降序;
- P 值升序;
- BH-FDR 升序;
- 效应强度降序;
- AUC 降序;
- Delta AUC 降序。
对于分类自变量,排序和筛选的代表值按以下原则计算:
- P 值和 FDR:使用该分类变量所有非参照水平中的最小值;
- Linear 模型效应强度:使用最大
|Beta|; - OR、RR、HR、IRR 等比值型效应量:使用最大
|log(效应量)|,而不是直接比较 OR 或 HR 的数值大小; - AUC 和 Delta AUC:按该
Y-X模型整体指标排序。
这种设计可以避免把同一个分类变量的不同水平拆开后单独筛选,从而更符合发表表格和正式建模的阅读习惯。
筛选功能只作用于已经完成的汇总结果,不会重新拟合模型。常用筛选条件包括:
- 只显示模型成功结果;
- P 值 ≤ 阈值;
- 效应量强度 ≥ 阈值;
- AUC ≥ 阈值;
- Delta AUC ≥ 阈值;
- BH-FDR ≤ 阈值。
12.2.8 回归热图
回归热图用于快速查看 Y × X 结果矩阵。热图颜色表示 -log10(P 值),颜色越深,说明原始 P 值越小。这里不使用 FDR 作为热图颜色,因为热图的目的不是给出最终多重校正结论,而是帮助研究者快速查看原始关联强度和结果分布。
阅读热图时要注意:
- 一片颜色很浅,可能说明当前候选 X 与这些 Y 关系较弱;
- 某一列普遍较深,可能说明某个 X 与多个结局有关,也可能提示该变量与疾病严重程度或数据结构高度相关;
- 某一行普遍较深,可能说明该结局容易被多个变量解释,也可能提示结局定义与多项基线变量高度耦合;
- 热图只用于探索,不应单独作为论文结论。
12.2.9 Top 森林图
Top 森林图展示当前筛选和排序后的前若干个候选关系。森林图横轴使用 beta 或 log(OR/RR/HR/IRR),因此不同模型结果可以在方向和强度上做快速比较。
森林图适合用于课题组讨论,例如快速指出哪些变量方向一致、哪些效应量很大但置信区间过宽、哪些结果可能受稀有水平影响。正式论文图仍建议在正式分析模块中根据最终模型重新生成。
12.2.10 Word 报告如何使用
“下载Word报告”标签页只保留 Word 汇总报告下载。报告默认使用当前筛选后的结果和当前排序规则,导出按模型类型分开的发表格式表格。
这份 Word 更适合作为:
- 数据库初筛记录;
- 课题组会议材料;
- 与统计人员讨论正式建模方案的依据;
- 后续正式分析前的候选变量清单;
- 记录哪些结果需要进一步做敏感性分析或亚组分析。
不建议直接把这份 Word 当成最终论文统计结果。正式论文应重新在相应模块中完成模型设定、诊断、图表整理和文字报告。
12.2.11 从筛查结果转入正式分析
完成本模块筛查后,建议记录以下信息,再进入正式模块:
- 最终准备正式分析的结局变量;
- 二分类或 Cox 结局的事件水平和编码;
- Cox 模型中的时间变量、状态变量和事件状态;
- 初步阳性的候选自变量;
- 分类自变量的参照组和是否需要合并稀有水平;
- 是否需要对连续变量进行 log、sqrt、截尾或标准化;
- 需要固定调整的协变量及其选择依据;
- 是否存在 AUC 较高但临床解释较弱的变量;
- 是否存在 P 值显著但效应量很小、临床意义有限的结果;
- 是否需要进一步做中介分析、交互作用、亚组分析或预测模型。
如果某个 Y-X 结果在本模块中表现稳定、方向合理、样本量充足,并且与研究问题相符,才建议进入正式分析。
12.2.12 常见问题
1. 本模块筛出的阳性结果能直接写论文吗?
不建议。批量筛查本质上会产生多重比较和选择偏倚。本模块适合用于提出候选假设,正式论文应在明确研究问题后,用正式模块重新建模、诊断和报告。
2. P 值排序和 FDR 排序应该怎么选?
如果目的是快速找线索,可以先看 P 值排序;如果候选关系很多,希望控制假阳性比例,可以参考 BH-FDR。无论哪种排序,都应结合效应量大小、置信区间宽度、样本量和临床意义一起判断。
3. 为什么 OR 或 HR 的排序不是按数值越大越强?
OR、RR、HR 和 IRR 都是比值型效应量,0.5 和 2.0 在方向相反但强度相近。直接按数值大小排序会偏向大于 1 的结果,忽视小于 1 的强保护效应。因此本模块用 |log(效应量)| 表示效应强度。
4. 分类自变量为什么不能把每个水平单独筛选出来?
因为一个分类变量的多个水平属于同一个变量。如果把某个水平单独筛出,而把同一变量其他水平丢掉,正式建模和发表表格都会变得不完整。因此本模块采用“同一个分类变量的各水平同进同出”的规则。
5. AUC 高就说明这个变量值得正式建模吗?
不一定。AUC 只是二分类模型的区分度指标。一个变量可能因为与结局定义高度重叠而 AUC 较高,也可能因为数据泄漏、时间顺序错误或分类水平过稀而表现异常。正式建模前仍需检查变量来源、临床可用性和因果时间顺序。
6. 什么时候需要勾选标准化?
当连续 X 的量纲差异很大,或者希望比较不同连续变量的单位效应强度时,可以勾选标准化。标准化只临时作用于连续候选 X,以及 Linear 模型中的连续 Y,不会改变协变量和原始数据。
7. 为什么有些模型失败?
常见原因包括完整病例数太少、事件数太少、分类水平过稀、完全分离、Cox 时间-状态配对错误、offset 变量不合适或模型不收敛。模型失败不代表整个分析失败,应回到数据准备阶段检查对应变量。
12.3 批量 LOESS/RCS/GAM 曲线探查(多 Y × 多连续 X,快速发现非线性关系)
本模块用于在正式统计分析前,对数据库中的多个结局变量 Y 和多个连续性自变量 X 进行批量曲线关系探查。它的核心思想是:把每一个候选结局 Y 和每一个连续自变量 X 组合起来,分别尝试 LOESS、RCS 和 GAM 曲线方法,快速观察变量之间是否存在值得进一步复核的非线性关系。
与上一节“批量回归阳性筛查(多 Y × 多 X)”不同,本模块不只关注线性效应量和 P 值,而是重点观察曲线形态:
- 某个连续变量与结局之间是否可能不是直线关系;
- RCS 曲线是否提示阈值、平台期、U 型或 J 型趋势;
- GAM 平滑曲线是否提示更灵活的非线性变化;
- LOESS 描述性平滑是否支持继续进入正式曲线建模;
- 哪些
Y-X组合值得转入单独 RCS/GAM 模块,进一步调整参数、完善图形和诊断模型。
需要特别强调:本模块是正式分析前的快速曲线筛查工具,不能直接替代正式论文分析。 批量运行的目的,是帮助研究者发现可能的曲线信号、排查变量编码和模型稳定性问题。最终论文中的曲线图、拐点解释、协变量调整方案和敏感性分析,仍应在单独曲线模块或正式回归模块中重新完成。
批量探查完成后,模块的核心结果包括批量曲线图像和多行参数汇总表。每一张小图对应一个 method-Y-X-Cov 组合,每一行参数对应一个批量模型记录。下面先用一组包含 RCS、GAM 和 LOESS 的曲线缩略图,以及 RCS/GAM/LOESS 三类多行参数表,展示本模块最终输出的统计结果形态。
12.3.1 什么时候使用本模块
推荐在以下场景中使用本模块:
正式建模前想先看连续变量是否可能存在非线性。
例如年龄、BMI、CRP、NLR、肿瘤负荷、剂量、费用等连续变量,与缓解、并发症、生存时间或连续结局之间不一定是简单直线关系。一个课题中有多个可能结局。
同一个连续自变量可能同时影响疗效、安全性、住院天数、实验室指标和生存结局。可以一次选择多个结局类型,先看哪些结局更值得深入画曲线。需要比较 RCS、GAM 和 LOESS 的结果形态。
RCS 更适合发表级回归曲线,GAM 更灵活,LOESS 更偏描述性。三种方法一起看,可以帮助判断曲线信号是否稳定。需要快速发现模型不稳定或数据范围问题。
例如某个X的极端值过多、某个结局事件数不足、曲线置信区间很宽、RCS knot 自动选择不稳定、GAM edf 过高,都可以在批量结果中暴露出来。需要形成正式曲线分析前的候选清单。
模块可导出 Excel,里面保留页面同款参数汇总表和全部曲线图像,适合课题组先讨论“哪些曲线值得正式复跑”。
12.3.2 什么时候不应该只用本模块
如果研究目标是正式发表论文,不建议只停留在本模块。原因包括:
- 批量曲线探查会产生大量
Y-X-method组合,最显眼的曲线可能只是探索过程中的偶然发现; - RCS 的 knot 数、参考分位数和截尾范围会影响曲线形态;
- GAM 的平滑程度、基函数维度和样本量会影响 edf 与曲线稳定性;
- LOESS 只是描述性平滑,不支持协变量调整,不能替代调整后的回归曲线;
- 曲线尾部样本少时,置信区间会明显变宽,不宜过度解释尾部形态;
- 协变量调整方案应来自研究设计和临床知识,不能只根据哪条曲线更显著来决定。
因此,本模块更适合用于“发现曲线线索”和“排查建模风险”。当某条曲线形态清楚、样本量充足、方向符合研究问题时,应转入单独 RCS/GAM 模块,围绕一个明确 Y-X 关系重新设定模型、调整协变量、检查图形范围并整理论文图表。
12.3.3 支持的结局类型和曲线方法
本模块按结局变量类型组织批量模型:
| 结局类型 | 主要模型口径 | 常见曲线尺度 | 适合场景 |
|---|---|---|---|
| 二分类结局 | Logistic / Log-Binomial / modified Poisson 相关思路 | OR、RR 或类似比值尺度 | 缓解、复发、并发症、死亡等 |
| 连续性结局 | 线性回归曲线与 LOESS 描述性平滑 | Beta 或原始结局均值趋势 | 住院天数、评分、实验室指标、费用等 |
| 有序多分类结局 | Ordered Logistic 曲线模型 | OR | ECOG、毒性等级、症状分级等 |
| 生存型结局 | Cox 曲线模型 | HR | OS、PFS、DFS、复发时间等 |
| 计数结局 | Poisson 曲线模型 | IRR | 急诊次数、住院次数、不良事件次数等 |
| 计数率结局 | Poisson + offset 曲线模型 | IRR | 每人年事件率、单位暴露量发生率等 |
三种曲线方法的定位不同:
| 曲线方法 | 主要用途 | 协变量调整 | 参数汇总重点 |
|---|---|---|---|
| LOESS | 快速描述连续结局下 Y-X 的局部平滑趋势 |
不支持协变量调整 | LOESS R-squared |
| RCS | 用限制性立方样条观察调整后的非线性关系 | 支持协变量调整 | Overall P value、Nonlinear P value、RCS knot number |
| GAM | 用广义加性模型观察更灵活的平滑关系 | 支持协变量调整 | Smooth term P value、Effective degrees of freedom、GAM basis dimension |
如果选择了协变量,RCS 和 GAM 会把协变量纳入模型;LOESS 仍然只作为未调整的描述性平滑,页面和曲线标题中会标注 Cov=未调整(LOESS)。
12.3.3.1 参数指标分别代表什么
本模块的参数主要用于批量筛查,帮助研究者判断哪些 Y-X 组合值得进入正式曲线分析,而不是直接给出论文结论。常见指标可按下面理解:
- Overall P value:整体关联 P 值,主要用于判断当前模型中连续自变量
X与结局Y是否存在总体关联。它回答的是“这条曲线整体上是否有统计学信号”,但不能单独说明关系是不是非线性。 - Nonlinear P value:RCS 的非线性 P 值,用于判断
X-Y关系是否偏离简单直线。数值较小时,提示可能存在 U 型、J 型、阈值或平台期等非线性形态;仍需结合曲线图、样本分布和置信区间判断。 - RCS knot number:RCS 使用的 knot 数,反映样条曲线的分段复杂度。knot 数不是效应大小,也不是显著性指标;它主要帮助判断当前曲线是由几个样条节点支撑出来的。
- Smooth term P value:GAM 平滑项的 P 值,用于判断平滑函数
s(X)是否与结局有关。数值较小时,提示 GAM 曲线在统计上有信号,但仍不能替代对曲线方向和临床意义的人工解释。 - Effective degrees of freedom:GAM 的有效自由度,简称 edf,用来描述平滑曲线的复杂程度。edf 接近 1 时,关系更接近线性;edf 越高,曲线越弯曲、越复杂,但 edf 高不等于一定有临床意义。
- GAM basis dimension:GAM 的基函数维度,常写作
k,表示允许平滑曲线使用的复杂度上限。k是模型设定参数,不是最终曲线复杂度;实际复杂度主要看 edf。 - LOESS R-squared:LOESS 描述性平滑的拟合参考值,只用于连续结局的未调整趋势观察。LOESS 不纳入协变量,因此这个数值不能解释为调整后模型的拟合优度。
- Adjustment covariates:调整协变量。RCS 和 GAM 会显示实际纳入模型的协变量;LOESS 固定显示未调整,提醒读者不要把 LOESS 曲线当作协变量调整后的回归结果。
12.3.4 数据准备要求
使用本模块前,建议先完成以下数据整理:
确认连续自变量 X 是数值型。
本模块的X必须是连续变量。已经分组的年龄组、CRP 高低组、分期等分类变量不适合放在X中;如果要分析分类变量,应使用批量回归筛查或疗效比较模块。确认结局变量类型正确。
二分类结局应只有两个水平;连续结局应为数值型;Cox 结局需要时间变量和状态变量配对;计数结局应为非负整数。确认事件水平。
二分类结局和 Cox 结局需要指定哪个水平表示事件发生。事件水平选反,会导致 OR、RR、HR 曲线方向反转。处理极端值和异常范围。
曲线方法对连续变量范围比较敏感。极端值较多时,曲线尾部可能被拉扯,置信区间也会变宽。正式分析前建议结合直方图或箱线图检查X的分布。提前确定协变量调整方案。
如果要调整年龄、性别、分期、中心等协变量,应在左侧协变量框中一次性选择。所有 RCS/GAM 模型会使用同一批固定协变量;LOESS 不进行协变量调整。控制一次批量任务的规模。
组合数约等于结局个数 × 连续自变量个数 × 曲线方法个数。变量太多时,运行时间和图形数量都会明显增加。建议先用少量核心变量试跑,再逐步扩大。
12.3.5 操作流程
进入模块后,建议按左侧面板顺序完成设置。
12.3.5.1 第一步:选择应变量 Y
先勾选要分析的结局/模型类型。默认勾选 Logistic、Linear 和 Cox,适合多数临床数据库的初步探索。如果需要分析有序分级、计数结局或发生率结局,可以再勾选 Ordered Logistic、Poisson 或 Poisson + offset。
每类结局会出现独立的 Y 变量选择框。二分类结局需要设置事件水平;Cox 结局需要分别选择随访时间变量和事件状态变量,并按拖拽顺序配对。
12.3.5.2 第二步:选择连续自变量 X 和协变量
在“连续性自变量 X”中选择要画曲线的连续变量,例如 Age、BMI、CRP、NLR、肿瘤负荷或剂量。
协变量是可选项。选择协变量后:
- RCS 会在样条模型中固定调整这些协变量;
- GAM 会在平滑项模型中固定调整这些协变量;
- LOESS 不支持协变量调整,仍然只显示未调整的描述性平滑曲线。
12.3.5.3 第三步:选择曲线方法和参数
可以同时勾选 LOESS、RCS 和 GAM,也可以只选择其中一种或两种。
RCS 参数包括:
- AIC 自动搜索 knot:适合快速筛查,系统会自动选择较合适的 knot 数;
- 手动指定 knot:适合已有明确设置时使用;
- RCS 参考分位数:用于设定曲线相对效应的参考点,默认 0.50,即中位数。
GAM 参数包括:
- 自动 k:适合常规探索;
- 手动 k:适合需要控制平滑复杂度时使用。
LOESS 参数包括:
- span:控制平滑程度。span 越小,曲线越贴近局部波动;span 越大,曲线越平滑。
12.3.6 全量曲线图库如何阅读
“全量曲线图库”是本模块的主结果页。运行后,页面上方会先显示批量任务摘要,包括全部模型记录数、成功模型数、已生成曲线数和失败/不适用数。
下图从一次批量运行结果中抽取多张曲线,展示同一个模块可以同时生成 RCS、GAM 和 LOESS 等不同方法的结果。实际页面中,左侧显示当前选中的曲线,右侧目录按 method、Y、X 和协变量标注每一张曲线,便于在多张图之间快速切换。
曲线标题采用统一格式:
method | Y=结局变量 | X=连续自变量 | Cov=协变量
如果是 LOESS,标题会显示 Cov=未调整(LOESS),提醒读者这不是协变量调整后的曲线。RCS 和 GAM 如果没有选择协变量,则显示 Cov=无;如果选择了协变量,则显示具体协变量名称。
阅读曲线时建议同时看以下几点:
曲线整体形态。
是否接近直线,是否存在 U 型、J 型、阈值、平台期或反向变化。不同方法的图形元素。
RCS 图通常包含拟合曲线、置信区间、参考线、直方图和P-overall/P-nonlinear;GAM 图重点看平滑曲线、置信区间、edf和P-smooth;LOESS 图重点看散点分布和红色描述性平滑线,且不代表协变量调整后的模型。置信区间宽度。
置信区间越宽,说明该范围内估计越不稳定。曲线两端常因样本较少而置信区间变宽。横轴分布。
RCS 图通常会叠加直方图或分布信息。若某个区间样本很少,不宜过度解释该区间的曲线波动。不同方法是否支持同一趋势。
如果 RCS、GAM 和 LOESS 都提示相近方向,说明该曲线信号更值得复核;如果三者差异很大,应回到数据分布和模型设置中找原因。
12.3.7 参数汇总如何阅读
“参数汇总”页按方法分成三张表:RCS 参数汇总、GAM 参数汇总 和 LOESS 参数汇总。每张表右侧都有独立排序和筛选面板。
RCS 参数汇总主要包含:
- Outcome type:结局类型;
- Outcome variable:结局变量;
- Continuous predictor:连续自变量;
- Curve method:曲线方法;
- Adjustment covariates:调整协变量;
- Overall P value:整体关联 P 值;
- Nonlinear P value:非线性 P 值;
- RCS knot number:RCS knot 数。
RCS 的默认推荐排序优先看 Nonlinear P value。如果非线性 P 值较小,提示该 Y-X 关系可能存在非线性成分,但正式解释仍需结合曲线形态、样本分布和研究问题。
GAM 参数汇总主要包含:
- Smooth term P value:平滑项 P 值;
- Effective degrees of freedom:有效自由度,常用来观察曲线复杂程度;
- GAM basis dimension:GAM 基函数维度。
GAM 的 edf 接近 1 时,关系更接近线性;edf 较高时,提示曲线更复杂。但 edf 高并不等于一定有临床意义,需要结合图形和样本量判断。
LOESS 参数汇总主要包含:
- LOESS R-squared:描述性平滑对连续结局的拟合参考值;
- Adjustment covariates:固定显示为
Not adjusted (LOESS)。
LOESS 只用于连续结局的描述性平滑,不应把 LOESS R-squared 当作调整后模型的证据。
12.3.8 Excel 结果如何使用
“下载”页提供 Excel 工作簿。导出的 Excel 包含页面同款参数汇总字段和全部曲线图像。下面的截图来自导出的 Excel 工作簿本身,而不是软件下载界面。
Excel 主要包含以下 sheet:
- RCS 参数汇总:字段与页面 RCS 参数表一致;
- GAM 参数汇总:字段与页面 GAM 参数表一致;
- LOESS 参数汇总:字段与页面 LOESS 参数表一致;
- 曲线图像:按曲线标题嵌入所有成功生成的曲线。
参数汇总表只保留页面中已经显示的字段,不额外加入运行设置、内部参数或 R 代码。这样 Excel 与页面“参数汇总”页保持一致,便于在页面和下载文件之间逐项核对。
Excel 适合用于课题组讨论和后续人工复核。建议先在页面中查看曲线和参数汇总,再下载 Excel 作为归档材料。正式论文图仍建议在单独曲线模块中根据最终模型重新生成。
12.3.9 从批量探查转入正式曲线分析
完成本模块后,建议记录以下信息,再进入正式曲线模块:
- 最值得深入分析的结局变量;
- 最值得关注的连续自变量;
- 该关系来自哪种结局类型和模型口径;
- RCS 的非线性 P 值、knot 数和参考分位数;
- GAM 的平滑项 P 值、edf 和 k;
- LOESS 是否支持相近趋势;
- 曲线两端样本是否过少,置信区间是否过宽;
- 是否需要对
X做 log 转换、截尾或分段; - 需要固定调整的协变量及其选择依据;
- 是否需要进一步做亚组分析、交互作用或敏感性分析。
如果某个 Y-X 组合在 RCS/GAM 中形态稳定、非线性指标有提示、样本分布合理,并且符合研究问题,才建议进入正式曲线分析。
12.3.10 常见问题
1. 本模块生成的曲线能直接放进论文吗?
不建议。本模块用于批量筛查,图形参数和模型设定偏向快速探索。正式论文应在单独曲线模块中围绕一个明确研究问题重新建模、诊断、调整图形并规范报告。
2. LOESS 为什么不显示协变量?
LOESS 是描述性局部平滑方法,本模块不把它作为协变量调整后的回归模型。因此即使左侧选择了协变量,LOESS 曲线和 LOESS 参数汇总仍会标注为未调整。
3. RCS 的 Nonlinear P value 小,就说明一定有非线性吗?
它提示可能存在非线性成分,但不能单独作为结论。还要看曲线形态是否合理、置信区间是否过宽、样本是否集中在少数区间,以及正式模型中协变量调整后是否稳定。
4. GAM 的 edf 应该怎么理解?
edf 接近 1 时,关系更接近线性;edf 越高,曲线越灵活。但 edf 高也可能来自噪声、样本分布不均或 k 设置过大。正式解释要结合平滑项 P 值和曲线图。
5. 为什么有些模型失败或不适用?
常见原因包括完整病例数不足、事件数太少、变量类型不符合模型要求、Cox 时间-状态没有正确配对、计数模型不收敛、RCS/GAM 拟合失败等。失败组合不会影响其他模型运行。
6. 为什么连续结局下才有 LOESS?
LOESS 在本模块中用于展示连续 Y 随连续 X 的描述性平滑趋势。二分类、生存、计数等结局需要在合适的回归模型尺度上解释,因此不使用 LOESS 作为主要方法。
7. 应该优先看 RCS 还是 GAM?
如果目标是形成论文中常见的回归曲线,通常优先用 RCS 进行正式分析;GAM 适合帮助观察更灵活的趋势和检查 RCS 是否遗漏复杂形态。两者方向一致时,结果更值得进一步复核。
12.4 批量多组比较疗效分析:多治疗分组 × 多结局的疗效比较摘要
本模块用于对数据库中的多个治疗分组变量和多个疗效结局变量进行批量组间比较。它的核心思想是:研究者一次选择多个 factor 类型的治疗分组(暴露)变量,再选择多个结局变量,系统自动生成每一个“治疗分组(暴露) × 结局”的比较结果,并把结果整理成可以排序、筛选、查看详情和导出 Excel 的汇总页面。
它与上一节“批量回归阳性筛查(多 Y × 多 X)”的区别在于:
- 上一节重点是把多个结局
Y和多个自变量X自动交叉做回归筛查,适合寻找广义的阳性关系; - 本节重点是围绕治疗组、暴露组或临床分组,集中展示每个结局的分组描述、组间比较、效应量和生存曲线;
- 上一节更像“回归阳性信号探测器”;
- 本节更像“批量疗效/暴露比较摘要器”,适合快速回答“不同治疗组在多个疗效结局上表现如何”。
需要特别强调:本模块适合快速摸底和批量筛选,不能把最显著的一两行结果直接当作最终研究结论。 它可以帮助研究者快速定位值得关注的结局、比较治疗组之间的方向和强度、发现数据问题,并生成便于后续排序筛选的 Excel 结果。若某个结局将作为论文主要终点,还应结合研究设计、临床问题和统计分析计划进一步核对。
12.4.1 什么时候使用本模块
推荐在以下场景中使用本模块:
一个数据库中有多个治疗分组和多个疗效结局。
例如肿瘤研究中同时有Treatment、Biomarker_Group、Stage等分组变量,又有Response、Disease_Control、Tumor_Shrinkage、OS_months、PFS_months等结局。可以一次性批量比较,先看哪些组合更值得重点关注。需要快速比较多组治疗方案。
例如Control / Drug_A / Drug_B三组治疗,系统会默认按“各非参照组 vs 参照组”的方式展示比较结果。若参照组设为Control,结果会自动生成Drug_A vs Control和Drug_B vs Control。需要同时查看不同类型结局。
同一个研究可能既有缓解率等二分类结局,也有肿瘤缩小率、生活质量评分等连续结局,还可能有 OS、PFS 等生存结局。本模块会按结局类型分别采用适合的展示口径。需要快速排查数据问题。
例如某个治疗组样本量太少、某个二分类结局事件数不足、生存状态变量选反、offset 分母变量不合适,都会在批量结果和失败信息中暴露出来。需要形成课题组讨论材料或初筛清单。
模块可导出 Excel。Excel 第一张表把效应量拆成效应量名称、效应量数值、95%CI 下限和上限,便于后续按 P 值、FDR、效应量大小或结局类型继续排序和筛选。
12.4.2 什么时候不应该只看批量结果
如果研究目标是形成论文结论、课题结论或临床决策依据,不建议只看本模块的批量结果。原因包括:
- 批量比较会同时产生很多 P 值,最小的 P 值可能只是大量筛选中的偶然发现;
- 不同结局的重要性不同,论文主结局应来自研究设计和临床问题,而不是事后从表格里挑选;
- 有序结局、计数结局和 offset Poisson 结局属于补充结果,适合帮助观察方向和强度,但不应脱离临床背景单独解释;
- 治疗前后两次、重复测量、PSM、IPTW、加权分析和 AE 专题分析等问题,需要根据具体研究目的单独设计分析方案;
- 若协变量调整方案会影响主要结论,应先明确调整依据,例如年龄、性别、分期、中心效应等是否必须纳入。
因此,本模块更适合用于“先看全局”和“找重点”。当某些治疗分组 × 结局组合表现稳定、方向合理、样本量充足,并且符合临床研究问题时,再围绕这些重点组合进行更细致的统计核对、图表整理和文字报告。
12.4.3 支持的结局类型和结果口径
本模块按结局变量类型组织结果:
| 结局类型 | 主要方法 | 常见效应量 | 适合场景 |
|---|---|---|---|
| 二分类结局 | 事件率描述 + Logistic / Log-Binomial / identity-binomial 回归 | OR / RR / RD | 缓解、复发、死亡、并发症、疾病控制等 |
| 连续结局 | 分组描述 + ANOVA / ANCOVA | Mean difference | 肿瘤缩小率、疼痛评分变化、CRP 下降值、生活质量评分等 |
| 生存结局 | Kaplan-Meier + Cox 回归 | HR | OS、PFS、DFS、RFS、治疗失败时间等 |
| 有序结局 | Ordered Logistic 补充回归 | OR | ECOG、症状等级、不良事件严重程度等 |
| 计数结局 | Poisson 补充回归 | IRR | 就诊次数、住院次数、不良事件次数等 |
| 计数率结局 | Poisson + offset 补充回归 | IRR | 每人年事件率、每导管日感染率、单位暴露量发生率等 |
二分类结局的主要效应量可以在左侧选择:
- OR(logistic 回归):最常见,模型通常较稳,适合大多数快速筛查和传统回归表;
- RR(log-binomial 回归):更接近“风险是几倍”的临床表达,但模型可能不收敛;
- RD(identity-binomial 回归):表示绝对风险差,例如缓解率增加多少个百分点,临床解释直观,但模型也可能不稳定。
如果 RR 或 RD 模型失败,通常提示数据结构、事件率或组别分布不适合该模型。此时可先看 OR 结果和分组事件率,再结合研究问题决定是否采用其他统计方法。
12.4.4 数据准备要求
使用本模块前,建议先完成以下数据整理:
治疗分组(暴露)变量必须是 factor。
例如Treatment、Biomarker_Group、Stage、Sex等已经分好组的变量。连续变量如年龄、CRP、NLR 不能直接作为治疗分组;若确实需要比较高低组,应先在数据准备阶段分组并设为 factor。二分类结局需要确认事件水平。
例如Response=Yes表示缓解,Progression_6m=Yes表示 6 个月内进展。事件水平选反会导致 OR/RR/RD 的方向全部反过来。连续结局应为数值型。
例如肿瘤缩小率、评分变化、实验室指标变化值。若变量其实是分级标签,不应作为连续结局。生存结局必须有时间变量和状态变量。
例如OS_months需要搭配Death,并指定Death=Yes表示死亡事件。只有时间变量或只有状态变量都不能完成生存分析。计数率结局需要选择 offset 分母/暴露量变量。
例如比较每人年住院次数时,结局可以是Hospitalizations,offset 可以是Person_Years。offset 变量必须为正数,不能为 0 或负数。提前处理缺失和稀有水平。
每个治疗分组 × 结局组合都会基于该组合所需变量的完整病例运行。缺失过多或某组人数太少时,模型结果可能不稳定或失败。
12.4.5 操作流程
进入模块后,建议按左侧面板顺序完成设置。
12.4.5.1 第一步:选择分析类型
先勾选要分析的结局类型。可以只勾选一种,也可以同时勾选二分类、连续、生存、有序、Poisson 和 offset Poisson。勾选后,左侧“选择结局”区域会出现对应的结局选择框。
二分类主要效应量默认选择 OR。若希望输出更贴近风险比的结果,可改为 RR;若希望看绝对差值,可改为 RD。对于统计学小白,建议先用 OR 快速筛查,同时结合事件率表理解方向和大小。
12.4.5.2 第二步:选择治疗分组(暴露)
在“治疗分组(暴露)”中选择一个或多个 factor 分组变量。每个分组变量都可以设置参照组。
例如同时选择:
Treatment:参照组设为Control;Biomarker_Group:参照组设为Low。
系统会分别生成 Treatment × 各结局 和 Biomarker_Group × 各结局 的比较结果。多水平治疗分组默认按“各非参照组 vs 参照组”展示。
12.4.5.3 第三步:选择结局变量
每种结局类型都有独立的选择框:
- 二分类结局:例如
Response、Disease_Control、Progression_6m; - 连续结局:例如
Tumor_Shrinkage、QoL_Change、Pain_Score_Change; - 生存时间变量:例如
OS_months、PFS_months、TTF_months; - 有序结局:例如
Symptom_Grade、ECOG_Status、AE_Severity; - 计数结局:例如
Visits、AE_Count、Hospitalizations; - 计数率结局:选择计数结局后,还要选择 offset 分母变量,例如
Person_Years。
对于二分类结局,每个结局下面都要单独指定事件水平。对于生存结局,每个时间变量都要指定对应的状态变量和事件状态。
12.4.6 总览表如何阅读
总览表是本模块最重要的结果页。每一行代表一个治疗分组(暴露) × 结局 × 比较结果。
常见列含义如下:
- 治疗分组(暴露):本次比较使用的分组变量,例如
Treatment或Biomarker_Group; - 结局:当前被比较的结局变量;
- 比较:当前组间比较,例如
Drug_B vs Control或High vs Low; - 结局类型:二分类、连续、生存、有序、Poisson 或 offset Poisson;
- 模型:用于生成主要效应量的模型,例如 logistic、ANOVA、Cox、Poisson;
- 效应量(95%CI):OR、RR、RD、Mean difference、HR 或 IRR 及其置信区间;
- P:原始 P 值;
- BH-FDR:在当前总览表中按 Benjamini-Hochberg 方法校正后的 P 值。
表格默认采用“同一治疗分组和结局下的多个 comparison 放在一起”的展示方式。同一个治疗分组和同一个结局如果有多行比较,治疗分组和结局只在第一行显示,后续比较行留空,便于阅读。
排序和筛选时,系统不会把同一个分组变量的多个比较拆散。命中同一治疗分组(暴露) × 结局时,会把该组合下的比较一起保留,方便连续阅读同一结局下的多组差异。
右侧“排序与筛选”面板只改变当前总览表展示,不会重新拟合模型。常用做法包括:
- 先按治疗分组(暴露)排序,再按 P 值升序,再按效应量强度降序;
- 只显示模型成功结果;
- 设置
P ≤ 0.05或BH-FDR ≤ 0.10快速查看阳性线索; - 按结局类型筛选,例如只看生存结局或只看二分类结局。
表格底部会提示当前调整了哪些协变量、做了哪些筛选,以及最终显示多少行结果。
12.4.7 分类型详细结果如何阅读
“分类型详细结果”页用于查看单个治疗分组(暴露) × 结局组合的完整细节。页面右侧是结果目录,点击某个目录卡片后,中间主面板只显示该组合的详细结果。
目录卡片中会显示:
- 分组变量;
- 结局变量;
- 结局类型;
- 调整协变量;
- 比较数量和运行状态;
- 最小 P 值和最小 BH-FDR。
中间详细结果按结局类型展示:
- 二分类结局:分组事件率、组间 OR/RR/RD 比较、P 值和调整后 P 值;
- 连续结局:各组均值/标准差、中位数/IQR、ANOVA/ANCOVA 和组间均值差;
- 生存结局:Kaplan-Meier 生存曲线、中位生存期、Cox HR、PH 检验摘要;
- 有序/Poisson/offset 结局:作为补充回归结果展示效应量和 P 值。
这种目录式设计适合批量结果很多时逐个查看重点组合。比如总览表中发现 Treatment × OS_months 的 P 值较小,就可以在目录中点击该组合,直接查看对应 KM 曲线、Cox HR 和分组生存描述。
12.4.8 生存曲线如何阅读
对于生存结局,详细结果页会同步展示 Kaplan-Meier 生存曲线。曲线纵坐标为英文 Survival probability,横坐标使用所选生存时间变量的单位和变量名。
阅读时建议同时看三部分:
KM 曲线形态。
曲线越高,表示同一时间点仍未发生事件的比例越高。若两条曲线早期重叠、后期分开,提示疗效差异可能主要出现在随访后期。HR 和 95%CI。
HR < 1 通常表示相对于参照组,事件风险更低;HR > 1 通常表示事件风险更高。是否具有统计学意义还要结合 95%CI 和 P 值。Number at risk。
随访后期在险人数很少时,曲线尾部波动较大,不宜过度解释。写报告时应同时说明中位随访时间和删失情况。
本模块中的 KM 曲线适合快速比较不同分组的生存趋势。若生存结局是研究的主要终点,建议进一步核对 Log-rank 检验、Cox HR、PH 假设、在险人数和删失分布,再决定图形是否可以用于汇报。
12.4.9 Excel 结果如何使用
“下载Excel结果”标签页用于导出当前筛选后的结果。
Excel 适合用于后续人工筛选和课题组讨论。导出文件主要包含:
第 1 个 sheet:总览表。
这里把原本合并显示的效应量拆成四个字段:效应量名称、效应量数值、95%CI 下限、95%CI 上限。这样在 Excel 中可以按效应量数值或置信区间继续排序。第 2 个 sheet:分类型详细结果。
按原分析结果的展示格式保留分组描述、组间比较、补充回归结果和生存曲线,方便打开后直接审阅,而不是只得到数据库式长表。
如果在右侧总览表中做了筛选,Excel 会按当前筛选后的结果导出。因此导出前建议先确认筛选条件是否符合你的目的。例如课题组会议可以导出“只显示 P≤0.05 的结果”,而用于系统复核时建议导出不筛选或少筛选的完整结果。
12.4.10 后续复核建议
完成本模块后,建议先记录以下信息,便于后续复核和报告整理:
- 最值得关注的治疗分组(暴露)变量;
- 最值得深入分析的结局变量;
- 参照组设置是否符合临床逻辑;
- 二分类结局的事件水平是否正确;
- 生存结局的时间变量、状态变量和事件状态是否正确;
- 哪些组合样本量或事件数不足;
- 哪些结果 P 值较小但效应量很弱,或效应量很大但置信区间很宽;
- 是否需要调整年龄、性别、分期、中心等协变量;
- 是否需要对治疗分组进行 PSM、IPTW 或其他因果推断分析;
- 是否需要对某些重点结局单独整理更完整的统计表、图形和文字说明。
12.4.11 常见问题
1. 为什么治疗分组(暴露)必须是 factor?
因为本模块做的是“组间比较”。治疗方案、暴露状态、分期分组、生物标志物高低组都应是已经分好组的 factor。如果变量是连续数值,例如年龄、CRP、NLR,应先在数据准备阶段分组,或者改用回归模块分析连续变量效应。
2. 多水平治疗分组怎么比较?
多水平分组默认采用“各非参照组 vs 参照组”。例如 Treatment 有 Control / Drug_A / Drug_B,参照组为 Control,则自动生成 Drug_A vs Control 和 Drug_B vs Control。总览表排序和筛选时会把同一分组和同一结局下的 comparison 放在一起。
3. P 值最小的结局是不是论文主结局?
不是。本模块用于探索,P 值只是线索。论文主结局应来自研究设计、临床问题和统计分析计划,而不是从大量结局里事后挑选最显著的结果。
4. 为什么有序、Poisson 和 offset 叫补充结果?
因为这几类结局的临床解释通常更依赖具体场景。它们适合帮助快速观察方向和强度,例如症状等级是否更轻、住院次数是否更少、单位暴露时间内事件率是否更低。若这些结局是研究核心终点,应结合结局定义、分布特点和研究设计进一步核对。
5. 为什么有些组合失败?
常见原因包括完整病例数不足、某个治疗组人数太少、事件数太少、分类水平过稀、RR/RD 模型不收敛、生存状态配对错误、offset 分母变量存在 0 或缺失等。失败组合不影响其他组合运行,反而可以帮助发现数据问题。
6. Excel 里为什么要拆效应量字段?
因为 Excel 排序需要数值列。如果把 OR 1.45 (0.95, 2.30) 放在一个文本单元格里,就无法按 OR 数值或置信区间排序。拆成效应量名称、效应量数值、95%CI 下限和上限后,更适合人工复核和二次筛选。
12.5 协变量组合探查器:固定 Y 和 X,穷举协变量调整组合
本模块用于在正式统计分析前,固定一个结局变量 Y 和一个核心自变量 X,然后把一组候选协变量做全子集穷举组合,批量拟合回归模型。它的核心思想是:研究者先明确“我真正关心的关系是什么”,例如 NLR -> 治疗缓解、BMI -> 糖尿病、治疗方式 -> 生存时间,然后让系统自动尝试不同协变量调整方案,观察核心自变量 X 在什么调整组合下最显著、效应量最大、AUC/R² 更好,或者 AIC/BIC 更优。
它与上一节“批量回归阳性筛查(多个结局变量和多个自变量自动交叉穷举组合)”的区别在于:
- 上一节是找哪个 Y-X 关系值得研究;
- 本节是已经固定一个 Y-X 关系后,探索调整哪些协变量会改变这个关系;
- 上一节关注“海量候选关系的阳性发现”;
- 本节关注“同一个核心关系在不同调整方案下是否稳定、是否更显著、是否更有临床解释力”。
需要特别强调:本模块仍然是正式分析前的快速探查工具,不能替代正式论文建模。 协变量组合穷举会带来选择偏倚,如果只挑 P 值最小的一组协变量直接写论文,很容易形成“事后选择模型”。更合理的用法是把它作为课题设计讨论和敏感性分析的前置工具,帮助研究者发现:哪些协变量一加入模型,核心结论就消失;哪些调整方案下结论方向稳定;哪些模型虽然 P 值好看,但变量太多、AIC/BIC 并不理想。
12.5.1 什么时候使用本模块
推荐在以下场景中使用本模块:
已经有明确核心研究问题,但不确定应该调整哪些协变量。
例如研究NLR是否影响免疫治疗缓解,核心关系是固定的,但年龄、性别、BMI、糖尿病、高血压、ECOG、分期等协变量是否都要调整,并不一定清楚。想观察核心自变量在不同调整方案下是否稳定。
如果X在不调整、少量调整和多变量调整后方向一致,说明结果更稳;如果一加入某个协变量后效应量明显变小或 P 值不显著,提示这个协变量可能解释了部分关系,也可能存在混杂、中介或共线性问题。想比较“统计显著性”和“模型简洁性”。
有些模型 P 值较小,但放入了很多变量;有些模型 P 值略大,但 AIC/BIC 更优、协变量更少、更容易解释。本模块可以同时展示 P 值、效应量、AUC/R²、AIC 和 BIC,便于权衡。正式建模前做敏感性分析准备。
例如正式论文计划报告一个主模型,同时补充 2-3 个不同调整集的敏感性分析。本模块可以帮助快速找出候选调整集。课题组讨论协变量选择依据。
模块可导出 Word 报告,适合与临床老师、统计人员讨论“为什么要调整这些变量、为什么不调整另一些变量”。
12.5.2 什么时候不应该只用本模块
如果研究目标是正式发表论文,不建议直接把本模块中 P 值最小或效应量最大的模型作为最终模型。原因包括:
- 协变量组合是事后穷举,容易产生选择偏倚;
- P 值最小的模型未必是临床最合理的模型;
- 变量越多,完整病例数可能越少,结果可能受缺失值影响;
- 协变量之间可能存在共线性,导致效应量不稳定;
- AUC、R²、AIC、BIC 是模型比较指标,不等于因果解释已经成立;
- 如果某个协变量其实是中介变量,盲目调整可能会削弱真实效应。
因此,本模块更适合用于“比较调整方案”和“发现模型敏感点”。正式论文仍应基于研究设计、临床知识、DAG 或预先设定的统计分析计划来确定最终协变量。
12.5.3 支持的回归模型
本模块一次固定一种回归模型、一个结局 Y 和一个核心自变量 X。支持的模型类型如下:
| 结局类型 | 模型 | 常见效应量 | 适合场景 |
|---|---|---|---|
| 连续性结局 | Linear 回归 | Beta | 白蛋白、CRP、住院天数、生活质量评分等 |
| 二分类结局 | Logistic 回归 | OR | 是否缓解、是否复发、是否发生并发症等 |
| 二分类结局 | Log-Binomial 回归 | RR | 希望直接报告相对风险时使用 |
| 有序多分类结局 | Ordered Logistic 回归 | OR | ECOG、NYHA、疼痛等级、毒性等级等 |
| 生存型结局 | Cox 回归 | HR | OS、PFS、DFS、复发时间等 |
| 计数结局 | Poisson 回归 | IRR | 急诊次数、感染次数、复发次数等 |
| 计数/率结局 | Poisson + offset | IRR | 每人年发生率、每 1000 导管日感染率、IVF 受精率或卵裂率等 |
对于 Poisson + offset,可以把“分子”作为结局变量,把“分母/暴露量”作为 offset。例如 IVF 研究中,Y=受精卵数、offset=获卵数,可用于比较受精率;Y=卵裂胚胎数、offset=受精卵数,可用于比较卵裂率。
12.5.4 数据准备要求
使用本模块前,建议先完成以下数据整理:
确认结局变量类型正确。
连续结局应为数值型;二分类结局应只有两个水平;有序结局应有清楚的等级顺序;计数结局应为非负整数;Cox 结局需要时间变量和状态变量成对出现。确认事件水平。
Logistic、Log-Binomial 需要指定哪个水平代表事件发生,例如Yes、Event、Death或1。事件水平选反,OR/RR 的方向也会反过来。确认 Cox 时间-状态配对。
Cox 模型不是只选一个结局变量,而是需要选择随访时间变量、状态变量,并指定哪个状态代表事件发生。处理缺失值。
每个协变量组合都基于该模型所需变量的完整病例运行。协变量越多,完整病例数越可能下降。合并稀有分类水平。
如果某个分类协变量的某个水平人数极少,可能导致模型不收敛、OR/HR 极大、置信区间极宽。控制候选协变量数量。
选择k个候选协变量会运行2^k个组合模型。5 个是 32 个模型,10 个是 1024 个模型,15 个是 32768 个模型。模块最高限制 15 个,但实际使用时建议控制在 10 个以下。
12.5.5 操作流程
进入模块后,建议按左侧面板顺序完成设置。
12.5.5.1 第一步:选择回归模型和结局 Y
先根据结局变量类型选择回归模型。页面中的问号按钮提供了模型类型的科普解释,并用医学研究案例说明如何选择。
- 如果 Y 是白蛋白、CRP、住院天数等连续值,选 Linear;
- 如果 Y 是是否缓解、是否复发、是否发生并发症,选 Logistic;
- 如果 Y 是 ECOG、NYHA、毒性等级等有序等级,选 Ordered Logistic;
- 如果 Y 是 OS、PFS、复发时间,选 Cox;
- 如果 Y 是次数或发生率,选 Poisson 或 Poisson + offset。
12.5.5.2 第二步:选择固定核心自变量 X
X 是这次真正要追问的核心因素,也就是论文里最想解释的暴露因素、治疗因素或生物标志物。模块会把 X 固定在每一个模型中,只改变协变量组合。
如果 X 是分类变量,可以点击“设置分类变量参照组”的折叠菜单,为分类变量指定参照组。例如治疗组通常以 Control 为参照,肿瘤分期通常以低分期为参照。
12.5.5.3 第三步:选择候选协变量
候选协变量是用于穷举组合的变量。系统会自动运行:
- 不加入任何候选协变量的模型;
- 只加入其中一个候选协变量的模型;
- 加入两个候选协变量的模型;
- 直到加入所有候选协变量的模型。
例如选择 Age、Sex、BMI、ECOG、Tumor_Stage、Diabetes 共 6 个候选协变量,且不设置强制保留协变量时,就会运行 2^6 = 64 个模型。
12.5.5.4 第四步:强制需要保留的协变量
有些变量不是用来探索的,而是研究设计上每个模型都必须调整的基础变量。例如多中心研究中的中心变量、方案预先规定的年龄和性别,或者临床上必须控制的关键分期变量。
放在“强制需要保留的协变量”中的变量会进入每一个模型,不参与全子集穷举。这里的可选项只来自第三步已经选择的候选协变量;例如第三步选择 Age、Sex、BMI、ECOG、Tumor_Stage、Diabetes,第四步就只能从这 6 个变量中挑选强制保留项。设置为强制保留后,该变量仍属于候选协变量池,但会从实际穷举集合中扣除。例如候选协变量有 Age、Sex、BMI、ECOG、Tumor_Stage、Diabetes,并把 Sex 强制保留,系统实际只穷举 Age、BMI、ECOG、Tumor_Stage、Diabetes,因此运行 2^5 = 32 个组合模型。
12.5.6 调整组合排序表如何阅读
调整组合排序表是本模块最重要的结果页。每一行代表一个协变量调整方案。
常见列含义如下:
- Rank:当前排序规则下的顺位;
- Adjustment covariates:这一行模型中加入了哪些候选协变量;
- No. covariates:本行调整组合中参与穷举的候选协变量数量,不包括每个模型都固定保留的协变量;
- Adjusted OR / RR / HR / IRR / Beta (95% CI):核心自变量
X在该调整方案下的效应量和置信区间; - P value:核心自变量
X在该调整方案下的 P 值; - AUC:二分类模型的区分度指标;
- R²:Linear 模型的解释度指标;
- AIC / BIC:模型拟合和复杂度的综合指标。
表格标题会汇总样本量信息,例如 N = 351;Events = 140。N 表示当前结果表中成功模型使用的完整病例数,Events 表示事件数,主要用于二分类、生存或计数结局。如果不同协变量组合因为缺失值导致样本量不同,标题中会显示范围,例如 N = 328-351。
如果 X 是分类变量,表格会显示该分类变量各水平的结果。排序和筛选时不会把同一个分类变量的不同水平拆散,而是按同一个核心 X 作为整体处理。
12.5.7 排序和筛选规则
右侧“排序和筛选”面板只作用于当前已经生成的结果表,不会重新拟合模型。
常用排序方式包括:
- P 值升序:先看核心
X在哪些调整方案下最显著; - OR/HR/RR/IRR 强度降序:先看比值型效应量离 1 最远的调整方案;
- Beta 强度降序:Linear 模型中先看
|Beta|最大的调整方案; - AUC 降序:二分类模型中先看整体区分度更高的调整方案;
- R² 降序:Linear 模型中先看解释度更高的调整方案;
- AIC / BIC 升序:先看拟合更好、同时不过分复杂的调整方案;
- 协变量个数升序:先看更简洁的模型。
筛选功能可以临时隐藏不符合条件的组合。例如探索阶段可以先保留模型成功结果,再设定 P ≤ 0.10 或 OR 强度 ≥ 1.3;准备正式建模时,可以结合 P ≤ 0.05、AIC/BIC 和临床合理性进一步缩小范围。
比值型效应量的“强度”不是简单按数值大小排序。OR=2.0 和 OR=0.50 的方向相反,但强度相近;OR=1.10 虽然大于 1,却很弱。因此模块按 |log(OR/RR/HR/IRR)| 计算效应强度。Linear 模型则按 |Beta| 计算效应强度。
12.5.8 协变量组合热图
协变量组合热图用于查看当前筛选和排序后的 Top 调整组合中,哪些候选协变量进入了模型。
热图适合回答以下问题:
- 排名前面的模型是否都包含某个关键协变量;
- 某个协变量一加入后,核心
X的 P 值是否明显变化; - 哪些协变量经常与更优模型一起出现;
- 排名前列模型是否其实都非常复杂,还是少量协变量就能达到类似表现。
12.5.9 Top 森林图
Top 森林图展示当前筛选和排序后的前若干个调整组合。横轴为 Beta 或 log(OR/RR/HR/IRR),用于比较核心 X 在不同调整方案下的方向和强度。
森林图适合观察:
- 核心
X的方向是否稳定; - 哪些调整方案下置信区间更宽,提示样本量或模型稳定性不足;
- 哪些组合虽然排名靠前,但效应量和置信区间提示结果不稳;
- 是否存在加入某个协变量后效应明显减弱的模式。
12.5.10 Word 报告如何使用
“下载Word报告”会导出当前筛选和排序后的调整组合表。由于协变量组合表通常较宽,Word 报告采用横向页面,并按横向页面宽度适配表格。
这份报告适合用于:
- 数据库初步分析记录;
- 课题组会议讨论;
- 与统计人员沟通正式模型的协变量选择;
- 准备敏感性分析方案;
- 记录不同调整组合下核心
X的效应变化。
不建议直接把这份 Word 当成最终论文结果。正式论文仍应根据研究设计和临床逻辑确定主模型,并在正式模块中重新完成表格、图形和统计描述。
12.5.11 从协变量组合探查转入正式分析
完成本模块后,建议记录以下信息,再进入正式分析:
- 固定的结局变量
Y、核心自变量X和模型类型; - 二分类结局或 Cox 结局的事件水平;
- 核心
X的效应方向是否在多数调整组合中一致; - 哪些协变量一加入模型后,会明显改变
X的效应量或 P 值; - 哪些调整组合 P 值较小,但协变量过多或完整病例数明显下降;
- AIC/BIC 排名前列的模型是否符合临床逻辑;
- 是否需要将部分协变量设为正式模型中的强制调整变量;
- 是否存在共线性、中介变量或时间顺序不合理的问题;
- 是否需要在正式分析中报告多个调整模型作为敏感性分析;
- 是否需要回到数据准备阶段合并分类水平、处理缺失值或转换连续变量。
12.5.12 常见问题
1. 为什么最高限制 15 个候选协变量?
因为候选协变量数量增加时,模型数会按 2^k 增长。10 个候选协变量已经是 1024 个模型,15 个是 32768 个模型。虽然服务器可以承受一定规模的批量计算,但协变量越多,运行时间越长,模型失败和解释困难也越常见。
2. 为什么建议候选协变量最好控制在 10 个以下?
10 个以下通常还能用于快速探索和课题讨论;超过 10 个后,不仅计算量增加,结果也容易变成“从大量组合里挑最好看的模型”。如果确实有很多变量,应先按临床知识筛掉明显不相关或时间顺序不合理的变量。
3. P 值最小的模型是不是最终模型?
不是。P 值最小只能说明在当前数据和当前组合下,核心 X 的统计显著性最强。最终模型还应考虑研究设计、临床意义、变量可解释性、完整病例数、AIC/BIC、共线性和是否存在过度调整。
4. AIC 和 BIC 应该怎么看?
AIC 和 BIC 越小通常越好。AIC 更偏向拟合表现,BIC 对变量数量惩罚更强,更偏向简洁模型。如果多个模型 P 值和效应量接近,可以优先考虑 AIC/BIC 更低、协变量更少、临床更合理的模型。
5. AUC 或 R² 高就说明这个调整方案最好吗?
不一定。AUC 和 R² 是模型整体表现,不等于核心 X 本身更重要。一个模型可能因为加入了强预测变量而 AUC/R² 更高,但核心 X 的效应已经被解释掉。需要同时看 X 的效应量、P 值和临床逻辑。
6. 什么情况下应该使用强制保留协变量?
如果某些变量是研究方案预先规定必须调整的,或者临床上无论如何都应该控制,例如年龄、性别、中心、关键分期,就可以放入强制保留协变量。这样每个模型都会包含这些变量。
7. 标准化会改变原始数据吗?
不会。标准化只在模型拟合时临时转换连续核心自变量 X,以及 Linear 模型中的连续结局 Y。原始数据不会被写回。
8. 为什么有些协变量组合模型失败?
常见原因包括完整病例数不足、事件数太少、分类水平过稀、完全分离、Cox 事件不足、offset 变量不合适或模型不收敛。失败模型不代表整个分析失败,而是提示对应变量组合不适合当前数据。
12.6 相乘交互作用、Joint effect 和相加交互分析:固定 Y、X 和效应修饰变量 Z
12.6.1 模块功能
本模块用于在一个已经明确的 Y-X-Z 研究问题中,一键完成相乘交互作用检验、连续变量拆分后的辅助交互分析、Joint effect 联合分组分析、相加交互作用分析和交互后的分层森林图展示。
换句话说,当研究者已经确定:
- 结局变量
Y是什么; - 核心暴露、自变量或处理因素
X是什么; - 哪个变量
Z可能改变X与Y的关联; - 是否需要调整年龄、性别、炎症指标等协变量;
就可以使用本模块生成论文中常见的相乘交互作用表、Joint effect 表、相加交互作用表、分层森林图、R 源代码和 Word 报告。
本模块与前面的“批量回归阳性筛查”和“协变量组合探查器”不同。批量筛查更适合寻找可能的 Y-X 关系;协变量组合探查器更适合比较不同调整方案;本模块则用于固定 Y、X 和效应修饰变量 Z 后,完成更接近正式论文的交互作用分析。
12.6.2 适用场景
本模块适合以下问题:
- 判断
X与Y的关联是否随Z的不同水平而改变; - 在论文中报告
X × Z相乘交互作用的全局 P 值; - 比较不同
X-Z联合组合相对于共同参照组的 OR、HR、IRR 或 Beta; - 使用 RERI、AP 和 S 评估比值尺度模型中的相加交互作用;
- 当
X或Z为连续变量时,同时查看连续尺度模型和拆分后二分类模型; - 在交互作用分析后,用分层森林图展示各层内的
X-Y关联; - 自动生成论文发表级表格、表格描述文字、R 源代码、原始输出和 Word 报告。
典型应用包括:
- 某个治疗或暴露对结局的影响是否因疾病严重程度不同而不同;
- 生物标志物与不良结局的关联是否在不同年龄、性别或遗传风险组中不同;
- 一个连续评分与结局的关联是否受到分类变量的修饰;
- 两个多水平分类变量是否存在联合模式,需要展示所有联合组合的风险;
- 两个暴露共同存在时,联合效应是否超过相加尺度下的预期效应;
- 交互作用显著后,需要进一步报告分层分析森林图。
不建议用于以下情况:
- 没有明确主问题,只想从大量变量中寻找最显著的交互;
X、Z或结局变量的分类水平过多且样本稀疏;- 事件数不足,却同时加入多个协变量和多水平交互项;
Z更像中介变量,而不是效应修饰变量;- 只想做普通亚组描述,不打算检验
X × Z乘积项。
12.6.3 支持的分析内容
本模块围绕一个固定的 Y-X-Z 问题,支持以下分析内容:
- 主要相乘交互作用分析;
- 连续变量按中位数、P25、P75、自定义 cutpoint 或自定义分位数拆分后的交互作用分析;
- Joint effect 联合分组分析;
- RERI、AP 和 S 相加交互作用分析;
- 多水平分类变量之间的交互作用全局检验;
- 交互作用后的分层分析森林图;
- 分层分析估计表;
- 中文和英文结果描述;
- R 源代码、原始输出和 Word 报告。
12.6.4 主要特点
- 支持 Logistic、Ordered Logistic、Linear、Cox、Poisson 和 Offset Poisson 等常用医学论文模型;
- 连续尺度模型和拆分后二分类模型分开报告,避免混淆不同变量编码下的 P 值;
- 多水平分类变量只需设置参照组,模块会保留所有水平并报告全局交互 P 值;
- Joint effect 表先展示
X和Z各自相对于参照水平的 single effects,再展示所有X × Z联合组合相对于共同参照组的 joint effects; - 相加交互作用表集中报告 RERI、AP 和 S 及其 95% 置信区间,多水平分类变量会按非参照水平逐个生成比较;
- 分层森林图支持默认宽高自适应,也可手动调整标签、坐标轴标题和 P for interaction 位置;
- 表格描述按钮可根据当前分析背景生成中文或英文 Results 段落;
- Word 报告自动整合 Objective、Methods、Results、表格和分层分析结果。
本模块使用常规回归模型完成分析,不是 survey 加权交互分析。如果研究数据来自复杂抽样设计,并需要纳入权重、分层和聚类信息,应使用复杂抽样加权相关模块。
12.6.5 支持的结局类型和模型
左侧第一步先选择结局变量类型。模块会根据结局类型自动切换模型和效应量名称。
| 结局类型 | 常用模型 | 主要效应量 | 典型用途 |
|---|---|---|---|
| 二分类变量 | Logistic 回归 | OR | 有无事件、是否缓解、是否死亡等 |
| 有序多分类变量 | Ordered Logistic | OR | 有序等级评分、严重程度分级等 |
| 连续性变量 | Linear 回归 | Beta | 连续指标、评分、实验室检查值等 |
| 生存变量 | Cox 回归 | HR | 随访时间和事件结局 |
| 计数变量 | Poisson 回归 | IRR | 发作次数、住院次数、事件计数等 |
| 发生率/比值 | Offset Poisson | IRR | 带观察时间或人年作为 offset 的发生率分析 |
相加交互作用指标用于比值尺度模型。连续结局的 Linear 回归仍可进行相乘交互作用和 Joint effect 分析,但不会输出 RERI、AP 和 S 表。
12.6.6 生成的表格和图形
一键自动生成以下表格和图形:
1. 主要交互作用分析表
X 和 Z 进入同一个交互模型;若包含连续变量,连续变量保持连续尺度,并同时给出 per 1-unit 和 per 1-SD 结果。
2. 连续变量拆分后二分类交互作用分析表
当 X 或 Z 至少一个为连续变量时,模块按照左侧设定的中位数、P25、P75、自定义 cutpoint 或自定义分位数拆分后重新拟合交互模型。
3. Joint effect 联合分组表
勾选 Joint effect 分析后,模块先列出 X 和 Z 各自相对于参照水平的 single effects,再列出所有联合组合相对于共同参照组的 joint effects。
4. 相加交互作用表
勾选相加交互作用分析后,模块输出 RERI、AP 和 S 及其 95% 置信区间。连续变量沿用左侧拆分设置;多水平分类变量会按非参照水平逐个生成比较。
5. 分层分析森林图
当分层分析有可估计结果时,模块会在各 Z 水平内展示 X-Y 关联,并在图中标注 P for interaction。
6. 分层分析估计表
森林图下方同步给出分层、比较、效应量、P 值和 P for interaction,便于论文制表和结果核对。
每张主要结果表格下方都有中文和英文表格描述按钮。点击后,系统会把当前表格数值、模型类型、结局、暴露、效应修饰变量、协变量和参照水平等信息一起传给大模型,按医学论文 Results 部分的写法生成描述文字。
12.6.7 背景介绍
相乘交互作用用于评估 X 与 Y 的关联是否随 Z 的不同水平而改变。统计上,常见做法是在回归模型中加入 X、Z 和 X × Z 乘积项,并检验乘积项整体是否显著。相加交互作用则关注两个因素共同存在时,联合效应是否超过相加尺度下的预期效应。
这里需要区分四个概念:
- 主效应:在另一个因素的参照水平处估计的
X或Z作用; - 相乘交互作用:模型中的
X × Z乘积项,通常报告全局 P for interaction; - Joint effect:把
X和Z联合分组后,将每个组合与共同参照组比较; - 相加交互作用:使用 RERI、AP 和 S 判断联合效应是否偏离相加尺度下的预期。
RERI 表示由相加交互作用产生的相对超额风险,AP 表示联合效应中可归因于相加交互作用的比例,S 表示协同指数。通常以 RERI = 0、AP = 0 和 S = 1 作为无相加交互的参照值。判断统计学证据时应同时查看 95% 置信区间,而不是只看点估计的正负或是否大于 1。
Joint effect 不一定是四格。只有当 X 和 Z 都是二分类变量时才是四个组合;如果 X 或 Z 是多水平分类变量,联合组合数会随水平数增加。多水平分类变量在发表表格中通常保留所有组合,并说明共同参照组。
连续变量需要格外注意。连续尺度模型保留连续信息,适合承担主要相乘交互检验;按中位数、P25、P75 或自定义 cutpoint 拆分后的模型更适合临床解释、Joint effect 表、相加交互作用表和森林图展示。两类模型回答的问题不同,因此本模块将它们拆成不同表格。
12.6.8 数据准备要求
进入模块前,建议先整理好以下内容:
Y、X、Z和候选协变量应位于同一个数据框中;- 分类变量最好已经设置好清晰的水平名称,例如
Low、High,不要只保留难以解释的数字编码; - 对二分类结局,应确认哪个水平是事件水平;
- 对 Cox 模型,应准备好随访时间变量和事件变量;
- 对 Offset Poisson,应准备好事件计数和 offset 变量;
- 对多水平分类变量,应保证每个
X × Z组合有足够样本; - 对连续变量,应提前考虑是否需要在 Joint effect、相加交互或分层图中进行二分类拆分;
- 计划解释 RERI、AP 和 S 时,应确认共同参照组具有清晰的医学含义,并避免样本过少的联合组合。
模块使用完整病例数据完成模型拟合。也就是说,当前模型涉及的 Y、X、Z 和已选择协变量中有缺失值的行,会在本次模型中被剔除。若发现样本量明显低于预期,应先回到数据整理阶段检查缺失值。
12.6.9 使用步骤
左侧面板按正式分析流程排列。通常从上到下依次设置即可。
第一步,选择结局 Y 类型。
不同结局类型会出现不同的变量选择菜单。例如二分类结局需要选择事件水平;生存结局需要选择随访时间和事件变量;Offset Poisson 需要指定 offset 变量。这里的选择决定后续模型和效应量列名称。
第二步,选择核心暴露 X 和效应修饰变量 Z。
X 是主要关注的暴露、处理、风险因素或预测因子;Z 是怀疑会改变 X-Y 关系的效应修饰变量。对于分类变量,只需要设置参照水平,不需要只挑一个“目标比较水平”。如果 X 或 Z 有多个水平,模块会保留所有水平,并在交互作用表中给出全局交互 P 值,在 Joint effect 表中列出所有 X × Z 联合组合。
第三步,设置连续变量拆分成二分类方式。
当 X 或 Z 中至少有一个是连续变量时,左侧会出现“连续变量拆分成二分类”卡片。可选方式包括中位数、P25、P75 高暴露、自定义 cutpoint 和自定义分位数。这个设置不影响“主要交互作用分析表”,但会影响“连续变量拆分后二分类交互作用分析表”、Joint effect 表、相加交互作用表和需要分类展示的分层分析结果。
第四步,选择协变量。
协变量进入同一个多因素交互模型,用于调整混杂因素,但不参与 Joint effect 联合分组。若选择了协变量,表格中的效应量会以 Adjusted OR、Adjusted HR、Adjusted IRR 或 Adjusted Beta 的形式展示,并在底注中说明调整了哪些协变量。
第五步,设置是否进行 Joint effect 分析。
默认勾选“进行 Joint effect 分析”。勾选后会单独输出 Joint effect 表;取消勾选时不再输出联合分组表,但其他已勾选且适用的分析不受影响。如果没有 Joint effect 结果,Word 报告中也会静默跳过对应内容。
第六步,设置是否进行相加交互作用分析。
默认勾选“进行相加交互作用分析(RERI / AP / S)”。勾选后会单独输出相加交互作用表;连续 X 或 Z 沿用第三步的拆分设置,多水平分类变量会分别比较各非参照水平与共同参照组。取消勾选时不输出 RERI、AP 和 S。连续结局的 Linear 回归不适用这些比值尺度指标,因此即使勾选也不会生成相加交互作用表。
12.6.10 结果表如何阅读
本模块的主结果最多分为四类表格:主要交互作用表、连续变量拆分后二分类交互作用表、Joint effect 表和相加交互作用表。这样设计是为了避免把连续尺度下的相乘交互检验、拆分后的交互检验、联合分组效应和相加尺度指标混在同一张表里。
12.6.10.1 表 1:主要交互作用分析表
第一张表使用当前 X 和 Z 拟合 X × Z。如果其中有连续变量,连续变量按连续尺度进入模型,不进行二分类。
这张表最适合回答:在不人为切分连续变量的情况下,是否存在 X × Z 相乘交互作用。
需要注意:
- 连续
X会显示原始单位的结果,例如per 1-unit higher; - 同一个连续
X也会增加一行per 1-SD higher,便于不同量纲的变量之间比较; per 1-unit和per 1-SD来自同一个连续尺度模型,只是效应量尺度不同;- “Marginal association” 表示在另一个因素参照水平处估计的主效应,也就是 Main effect at reference level;
- 多水平分类变量的交互 P 值应优先看全局 P,而不是只看某一个乘积项系数。
12.6.10.2 表 2:连续变量拆分后二分类交互作用分析表
如果 X 或 Z 中至少有一个连续变量,模块会增加第二张表。该表按照左侧设置的 cutpoint 或分位数,把连续变量拆分成二分类后重新拟合 X × Z。
这张表适合回答:如果为了临床解释或绘图需要把连续变量分成高低组,拆分后交互检验是否仍然支持相同结论。
需要注意:
- 这张表不包含 Joint effect 组合;
- 它使用的是二分类后的
X或Z,所以交互 P 值可能不同于表 1; - 连续变量切点一旦改变,这张表、Joint effect 表和相关分层图都会随之改变;
- 如果
X和Z都不是连续变量,这张表不会显示。
12.6.10.3 表 3:Joint effect 表
第三张表分为上下两个部分:上半部分展示 X 和 Z 各自相对于本变量参照水平的 single effects,下半部分展示 X × Z 联合分组的 joint effects。所有联合组合都相对于一个共同参照组。
Joint effect 不是一定只有四格。只有当 X 和 Z 都是二分类变量时,Joint effect 表才会形成四个联合组合;如果 X 或 Z 是多水平分类变量,模块会保留所有水平,并自动把每个联合组合与共同参照组比较。
Joint effect 表适合在论文中展示:
X和Z单独处于非参照水平时的效应;- 共同参照组是哪一个
X-Z组合; - 每个联合组合相对于共同参照组的效应量;
- 是否存在某些组合呈现特别高或特别低的风险;
- 多水平分类变量之间的联合模式,而不仅是某一个单独乘积项。
二分类示例中,表格还会给出相乘模型下的预期 Joint effect,帮助读者比较观察到的双暴露联合效应与根据两个 single effects 推算的预期值。该行不是相加交互指标,不能代替 RERI、AP 和 S。
如果 X 或 Z 是连续变量,Joint effect 表会沿用左侧“连续变量拆分成二分类”的设置。因此,Joint effect 表回答的是“按当前切点分组后的联合效应”,不是连续尺度上的效应。
12.6.10.4 表 4:相加交互作用表
第四张表报告 RERI、AP 和 S 及其 95% 置信区间,用于评价两个因素在相加尺度上的交互作用。
读表时应同时关注点估计和置信区间:
- RERI > 0、AP > 0 或 S > 1,方向上提示正向相加交互;
- RERI < 0、AP < 0 或 S < 1,方向上提示负向相加交互;
- RERI 或 AP 的 95% 置信区间包含 0,或 S 的 95% 置信区间包含 1 时,不宜表述为存在明确的统计学证据;
- 二分类
X和Z会得到一组 RERI、AP 和 S;多水平分类变量则会按非参照水平逐个给出相加交互比较; - 连续变量会先按左侧设置拆分成二分类,因此相加交互结论依赖所选切点;
- Linear 回归不输出该表。
相加交互作用表回答的是“联合效应是否偏离相加尺度预期”,与相乘交互作用表中的 P for interaction 不是同一个统计问题。论文中应分别命名和解释,不能把其中一个结果当成另一个结果的替代。
12.6.11 表格描述按钮怎么用
每张主表下方都有“对表格进行中文描述”和“对表格进行英文描述”按钮。
点击后,系统会把当前表格数值、模型类型、结局变量、暴露变量、效应修饰变量、参照水平、协变量、样本量和特殊表格结构一起传给大模型,让大模型按医学论文 Results 部分的写法生成描述文字。
建议使用方式:
- 先确认表格中的变量、参照水平和 P 值没有问题;
- 再点击中文或英文描述按钮;
- 把生成文字作为初稿,而不是最终不可修改文本;
- 正式投稿前,仍应根据研究设计、主次终点和统计方案调整措辞;
- 不要把表格中没有呈现的信息写入 Results。
表格底注是面向论文读者的说明,主要解释效应量、置信区间、P 值、参照组、协变量和交互检验。底注不会出现软件实现细节或调试信息。
12.6.12 分层分析森林图怎么用
“分层分析”标签页用于交互作用分析之后的进一步解释。通常只有当完整模型中的 P for interaction 提示存在交互作用证据,或者研究方案预先指定了分层展示时,才建议继续查看分层结果。
分层分析的基本思想是:在效应修饰变量 Z 的每个水平内,分别估计 X 与 Y 的关联,然后比较不同层内效应量的方向和大小。分层图中的层内 P 值不能替代交互作用检验;P for interaction 仍来自包含 X × Z 乘积项的完整模型。
分层图右侧提供若干可编辑设置:
X轴标题:例如 OR、HR、IRR 或 Beta;Y轴标题:通常是分层变量名称;左侧分类标签:用于修改图中显示的层名称;P for interaction 横向位置和纵向位置:用于微调 P 值标注的位置;- 图像宽度和高度:用于调整导出图像的比例。
模块会根据层数、比较数和文字长度给出默认图像宽高,但发表前仍建议检查一次。如果出现文字拥挤、标签被截断或图像过空,可以用滑块调整后再下载 PNG、TIFF、SVG 或 PDF。
分层页下方还会给出分层分析估计表,并同样提供中文和英文表格描述按钮。
如果前面的 Joint effect 或二分类交互分析中对连续变量进行了拆分,分层分析中需要分类展示的地方会沿用同一个切点。这样可以保证主表、Joint effect 表和分层图使用一致的分类规则。
12.6.13 R 源代码和原始输出
“查看 R 源代码和原始输出”标签页用于结果复核和论文留痕。这里的 R 代码不是只用一行软件封装命令,而是根据当前页面设置展开为可读的、扁平的 R 脚本。
建议使用方式:
- 完成分析后,先下载
RData数据集; - 再下载当前语言版本的 R 源代码;
- 在本地 R 或 RStudio 中运行脚本;
- 核对原始输出中的模型公式、样本量、模型摘要和各结果块;
- 若要给审稿人或统计人员留证据,建议保存英文注释版本。
源代码和原始输出的原则是:每个模型都用常规建模语句直接拟合,依次打印主要相乘交互、拆分后交互、Joint effect 和相加交互结果,结果数字应与模块主表完全一致。中文模式下,代码注释和输出标签使用中文;英文模式下,代码注释和输出标签使用英文。
12.6.14 Word 报告
“下载Word报告”会生成适合论文草稿和课题组讨论的报告。报告包括动态标题、Objective、Methods、Results 文字和分析表格;如果 Joint effect、相加交互或分层分析有结果,也会把相应内容自然合并到报告中。未勾选或当前模型不适用的分析会被静默跳过,不会留下空标题。
Word 报告中的 Results 文字会尽量按标准医学论文 Results 部分撰写。Objective 和 Methods 根据当前数据和左侧面板选项动态生成,包括结局类型、暴露变量、效应修饰变量、模型类型、协变量、参照水平、连续变量拆分方式、Joint effect 设置和相加交互设置。Results 会明确区分相乘交互 P 值、single effects、joint effects 以及 RERI、AP 和 S,避免把不同尺度的结果混为一谈。
报告适合用于:
- 保存本次交互分析的完整过程;
- 给导师、合作者或统计人员初步审阅;
- 作为论文 Methods 和 Results 的起草材料;
- 记录连续变量切点、参照水平和协变量调整方案;
- 保存相乘尺度和相加尺度的交互作用结果;
- 保存分层森林图和分层估计表。
正式投稿前仍建议人工复核报告,尤其是研究设计、因果措辞、变量医学含义和多重比较问题。
12.6.15 从模块结果转入论文写作
如果计划把本模块结果写入论文,建议按以下逻辑整理:
- 在 Methods 中说明模型类型、结局定义、核心暴露、效应修饰变量、协变量和完整病例处理;
- 对连续变量说明是否按原始连续尺度建模,以及是否另行按分位数或 cutpoint 做二分类展示;
- 对相乘交互作用,报告全局 P for interaction;
- 对 Joint effect,先说明 single effects,再说明共同参照组和每个联合组合的比较方式;
- 对相加交互作用,报告 RERI、AP 和 S 及其 95% 置信区间,并说明连续变量的拆分方法;
- 对分层森林图,说明分层变量、每层内比较和 P for interaction 来源;
- 在 Results 中优先描述效应方向、效应量大小和置信区间,而不是只说 P 值;
- 避免把观察性数据中的交互结果直接写成因果结论;
- 如果做了多个交互假设或多个水平比较,应在论文中说明筛选依据或多重检验考虑。
一个较规范的 Results 叙述顺序通常是:
- 先报告主要交互作用表中的主结果;
- 再说明连续变量拆分后二分类交互结果是否一致;
- 若展示 Joint effect,先概括 single effects,再描述共同参照组和最重要的联合组合;
- 若进行了相加交互分析,再报告 RERI、AP 和 S 及其置信区间所提示的证据;
- 若进行了分层分析,再描述各层内效应方向和 P for interaction;
- 最后给出简短的稳健性或解释性总结。
12.6.16 常见问题
1. “Marginal association” 是不是主效应?
是。这里的 “Marginal association” 指在另一个因素参照水平处估计的主效应,也就是 Main effect at reference level。它不是把交互项去掉后的单因素结果。
2. 多水平分类变量需要选择目标比较水平吗?
不需要。左侧面板只需要设置参照水平。模块会保留所有非参照水平,并在表格中自动展示各水平相对于参照水平的比较。Joint effect 表会列出所有 X × Z 联合组合。
3. Joint effect 一定是四格吗?
不是。四格只是 X 和 Z 都是二分类变量时的特殊情况。多水平分类变量会形成更多联合组合,并以共同参照组为基准进行比较。
4. 为什么最多会有四张结果表?
因为连续尺度模型、拆分后二分类模型、Joint effect 联合分组模型和相加交互模型回答的问题不同。分开制表后,读者可以清楚知道每个 P 值和效应量来自哪一种变量编码及哪一种效应尺度。
5. 主要交互作用表中为什么同时有 per 1-unit 和 per 1-SD?
per 1-unit 保留原始量纲,适合临床解释;per 1-SD 便于不同连续变量之间比较效应强度。两者来自同一个连续变量模型,因此 P 值通常相同,只是效应量尺度不同。
6. 为什么表 1 和表 2 的 P for interaction 可能不同?
表 1 使用连续尺度变量,表 2 使用拆分后的二分类变量。变量编码改变后,模型检验的问题也改变,因此交互 P 值可能不同。论文中应明确说明主要结论基于哪一种编码。
7. 分层分析能不能替代交互作用检验?
不能。分层分析用于解释交互模式,不能简单用“某一层显著、另一层不显著”来证明交互。交互作用仍应看完整模型中的 X × Z 乘积项全局检验。
8. 如果交互 P 值不显著,还能看 Joint effect 吗?
可以作为描述性或预设分析查看,但解释应谨慎。若没有统计学证据支持交互,Joint effect 和分层图更适合用于展示模式,不应过度强调某个联合组的偶然显著结果。
9. 协变量会不会参与 Joint effect 联合分组?
不会。协变量只用于模型调整,不会与 X 和 Z 一起形成联合分组。Joint effect 联合分组只由 X 和 Z 决定。
10. 相乘交互作用和相加交互作用有什么不同?
相乘交互作用检验模型中的乘积项,关注相对效应是否偏离乘法关系;相加交互作用关注联合效应是否超过相加尺度下的预期,并用 RERI、AP 和 S 表示。两者可能得出不同结论,应根据研究问题分别报告。
11. 多水平分类变量能做相加交互作用吗?
可以。模块不会把整个多水平变量强行合并成一个二分类变量,而是保留参照水平,并对各非参照水平逐个生成相加交互比较。论文中应明确每一组 RERI、AP 和 S 对应的具体水平对比。
12. 为什么 Linear 回归没有相加交互作用表?
本模块的 RERI、AP 和 S 基于 OR、HR 或 IRR 等比值尺度效应量。连续结局的 Linear 回归不使用这组指标,因此只输出相乘交互作用、Joint effect 和分层分析结果。
13. 这个模块是 survey 加权交互分析吗?
不是。本模块使用常规回归模型和常规 R 建模函数,适合普通数据分析场景。如果研究设计需要复杂抽样权重、分层和聚类,应使用专门的 survey 加权分析流程。