场景案例 ·

公共卫生研究数据分析全流程 — AI 一句话完成患病率/危险因素/逻辑回归/分层分析

公共卫生/流行病学论文必看:患病率描述统计、危险因素Logistic回归OR值、卡方检验、趋势检验、分层分析与交互检验,ChatSRS一句话完成,自动输出流行病学报告规范结果,可直接用于论文方法/结果章节。

公共卫生和流行病学数据分析的难点不在于单个方法,而在于完整的分析链条:描述患病率要用什么分母?卡方检验什么时候换 Fisher 精确检验?调整 OR 和粗 OR 差距很大要怎么解释?分层分析是为了控制混杂还是检验交互?趋势检验和多组卡方有什么不同?这篇文章把公共卫生研究最常见的分析链条一次串通,每步给出 ChatSRS 可直接使用的指令,以及可抄进论文的流行病学报告规范句式。


公共卫生数据分析为什么方法链条长

公共卫生论文涵盖流行病学调查、横断面研究、病例对照研究、队列研究、健康调查等多种设计,数据分析的挑战来自多个维度:

  • 患病率描述:粗率(Crude Rate)还是标准化率(Age-standardized Rate)?分母是人口数还是调查人数?
  • 危险因素识别:单因素筛查后纳入多因素 Logistic 回归,"是否有统计学意义 p < 0.05/0.10/0.20"作为纳入标准?
  • 混杂控制:粗 OR 和调整 OR 差距大是混杂效应的直接证据,如何描述混杂变量的作用?
  • 分层分析:区分"控制混杂(Stratified Analysis)"和"检验效应修饰(Effect Modification)",前者取 Mantel-Haenszel 合并 OR,后者看 Breslow-Day 检验
  • 趋势检验:对有序分类变量(如暴露剂量分组、年龄组)检验线性趋势(Cochran-Armitage 检验),不能用普通卡方代替

chatsrs.com 把这整条链条变成对话,下面以实际研究场景演示。


典型公共卫生研究设计

设计一:横断面调查(患病率 + 危险因素分析)

适用场景:某市中老年人群高血压患病率及影响因素调查(样本量 2,400 人)

典型数据结构

ID     性别    年龄组   BMI组    吸烟   饮酒   高盐饮食   体力活动   高血压
001    男      45-54    正常     是     否     是         低         有
002    女      55-64    超重     否     否     是         中         无
...    ...     ...      ...     ...    ...    ...        ...        ...

关键分析链:

  1. 描述统计(分组频率分布)
  2. 患病率计算(分性别、年龄组、各暴露因素)
  3. 单因素卡方检验(逐个变量与高血压的关联)
  4. 多因素 Logistic 回归(控制混杂,得到调整 OR)
  5. 分层分析(性别/年龄分层的 Mantel-Haenszel 合并 OR)
  6. 趋势检验(年龄组、BMI 组的线性趋势)

设计二:病例对照研究(OR 值分析)

适用场景:某新发传染病危险因素病例对照研究

ID     状态    年龄    性别    暴露A   暴露B   暴露C   匹配变量
001    病例    45      男      是      否      是      社区1
002    对照    46      男      否      否      是      社区1
...    ...     ...     ...     ...     ...     ...     ...

关键分析链:条件/非条件 Logistic 回归 → 粗 OR / 调整 OR → 分层 OR → Breslow-Day 交互检验


全流程分析演示(横断面调查)

以"某市中老年人高血压患病率及危险因素研究"为例:调查 2,400 名 40-74 岁居民,横断面设计。

第一步:患病率描述统计

打开 chatsrs.com,上传数据后输入:

"请计算整体高血压患病率(95% CI),并分别按性别、年龄组(40-44、45-54、55-64、65-74)、BMI 分组(正常 < 24、超重 24-28、肥胖 >= 28)输出患病率(%)及各组 95% CI;生成 APA 格式三线表,各分组用行表示,列分别为:患病人数、调查人数、患病率(%)、95% CI。"

ChatSRS 自动输出:

表 1  分组高血压患病率(N = 2,400)

分组                  患病人数    调查人数    患病率(%)    95% CI
总体                    864        2,400       36.0%       [34.1, 37.9]
性别
  男性                  482        1,168       41.3%       [38.4, 44.1]
  女性                  382        1,232       31.0%       [28.4, 33.6]
年龄组(岁)
  40-44                  74          386       19.2%       [15.3, 23.1]
  45-54                 187          611       30.6%       [26.9, 34.3]
  55-64                 311          748       41.6%       [38.1, 45.1]
  65-74                 292          655       44.6%       [40.9, 48.3]
BMI 分组(kg/m^2)
  正常(< 24)          183          768       23.8%       [20.7, 27.0]
  超重(24-28)         348          924       37.7%       [34.6, 40.7]
  肥胖(>= 28)         333          708       47.0%       [43.4, 50.7]

注:95% CI 基于 Wilson 评分法计算。

解读要点:患病率随年龄和 BMI 的梯度变化,为后续趋势检验提供直觉基础。


第二步:趋势检验(有序分类变量的线性趋势)

"对年龄组(40-44、45-54、55-64、65-74 赋分 1-4)与高血压的关联做 Cochran-Armitage 趋势检验,报告趋势 chi^2 值、df、p 值;同样对 BMI 分组做趋势检验;并对所有分类暴露变量(性别、吸烟、饮酒、高盐饮食、体力活动)分别做 Pearson 卡方检验(期望频数 < 5 时用 Fisher 精确检验),输出汇总表。"

ChatSRS 输出:

表 2  各暴露因素与高血压关联的单因素分析

变量                          患病率(暴露组 vs 非暴露)    检验统计量            p
年龄组(线性趋势)              19.2% → 44.6%             chi^2_trend = 148.32   <.001 ***
BMI 分组(线性趋势)            23.8% → 47.0%             chi^2_trend = 92.18    <.001 ***
性别(男 vs 女)               41.3% vs 31.0%             chi^2(1) = 28.42       <.001 ***
吸烟(是 vs 否)               45.2% vs 31.6%             chi^2(1) = 44.81       <.001 ***
饮酒(是 vs 否)               40.1% vs 34.2%             chi^2(1) = 8.94        .003 **
高盐饮食(是 vs 否)           41.8% vs 30.4%             chi^2(1) = 31.72       <.001 ***
体力活动(低 vs 中/高)        44.1% vs 30.8%             chi^2(1) = 41.65       <.001 ***

注:趋势检验采用 Cochran-Armitage 法;所有期望频数 >= 5,无 Fisher 精确检验替换。

注意区分:趋势检验(Cochran-Armitage)和普通卡方不同——它利用有序分类的梯度信息,检验统计量更聚焦于单调增/减趋势,即使同等 p 值,趋势检验的流行病学解读意义更强。


第三步:多因素 Logistic 回归(危险因素分析核心)

"以高血压(1 = 有,0 = 无)为因变量,纳入所有单因素分析中 p < 0.10 的变量(年龄组、BMI 组、性别、吸烟、饮酒、高盐饮食、体力活动)做多因素二元 Logistic 回归。年龄组和 BMI 组处理为连续变量(赋分)以检验线性趋势。输出:(1) 粗 OR(95% CI)和调整 OR(aOR,95% CI)对比三线表;(2) 模型拟合指标(Nagelkerke R^2、Hosmer-Lemeshow 检验、AUC);(3) 模型整体显著性检验;(4) 流行病学报告格式文字描述。"

ChatSRS 输出:

表 3  高血压危险因素 Logistic 回归分析

变量                    粗 OR(95% CI)          p        aOR(95% CI)           p
年龄组(连续,每组)    1.43(1.35, 1.52)      <.001    1.36(1.27, 1.46)     <.001
BMI 组(连续,每组)    1.67(1.55, 1.80)      <.001    1.54(1.42, 1.68)     <.001
性别(男 vs 女)        1.56(1.33, 1.83)      <.001    1.41(1.19, 1.67)     <.001
吸烟(是 vs 否)        1.78(1.51, 2.10)      <.001    1.52(1.27, 1.82)     <.001
饮酒(是 vs 否)        1.28(1.08, 1.51)      .004     1.18(0.99, 1.41)     .069
高盐饮食(是 vs 否)    1.63(1.40, 1.90)      <.001    1.44(1.22, 1.70)     <.001
体力活动(低 vs 中/高) 1.74(1.47, 2.06)      <.001    1.48(1.24, 1.77)     <.001

模型拟合:Nagelkerke R^2 = .264;Hosmer-Lemeshow chi^2(8) = 9.12,p = .332;AUC = 0.74

注:aOR = 调整 OR,控制表中所有变量;参照类别已标注在变量旁括号内。

解读要点:饮酒的粗 OR = 1.28 但调整后 aOR = 1.18(CI 包含 1,p = .069),提示饮酒与高血压的粗关联部分是由年龄、性别等混杂因素所致。


第四步:分层分析与效应修饰检验

分层分析有两种目的,必须明确区分:

目的一:控制混杂(Mantel-Haenszel 合并 OR,前提是各层 OR 同质)

"按性别(男/女)分层,分别计算吸烟与高血压关联的分层 OR(95% CI),再用 Mantel-Haenszel 方法计算合并 OR;同时做 Breslow-Day 检验,检验各层 OR 的同质性(Homogeneity Test)。"

ChatSRS 输出:

吸烟与高血压关联的性别分层分析

              患病率(吸烟 vs 不吸烟)    OR(95% CI)         p
男性            48.1% vs 36.4%           1.63(1.29, 2.06)   <.001
女性            38.2% vs 27.8%           1.60(1.21, 2.12)   .001

Mantel-Haenszel 合并 OR = 1.62(95% CI: 1.37, 1.91)
Breslow-Day 检验:chi^2(1) = 0.04,p = .836(各层 OR 同质,合并 OR 有意义)

Breslow-Day p = .836(不显著)说明各层 OR 同质,可以报告合并 OR(1.62)作为控制性别混杂后的效应量。

目的二:检验效应修饰(Breslow-Day p < .05 时,各层 OR 不同质,有效应修饰)

"按年龄组(< 55 岁、>= 55 岁)分层,检验 BMI 与高血压关联是否存在年龄效应修饰。"

ChatSRS 输出(假设效应修饰显著):

BMI 与高血压关联的年龄分层分析

              OR(95% CI)                p
< 55 岁       2.14(1.72, 2.67)         <.001
>= 55 岁      1.37(1.14, 1.64)         .001

Breslow-Day 检验:chi^2(1) = 8.24,p = .004(OR 不同质,存在效应修饰)

解释:BMI 对高血压的作用在较年轻人群中更强(OR = 2.14),在老年人群中相对减弱
(OR = 1.37),需分层单独报告而非合并。

第五步:人口归因危险度(PAR%)—— 可选报告

公共卫生研究中常用人口归因危险度(Population Attributable Risk,PAR%)量化某暴露因素对人群患病负担的贡献:

"计算吸烟对该人群高血压的人口归因危险度(PAR%),报告公式和结果,说明其公共卫生意义。"


论文写法(流行病学报告规范句式)

方法章节:统计分析策略描述

采用 chi^2 检验(期望频数 < 5 时用 Fisher 精确检验)分析分类变量与高血压的单因素关联;对有序分类变量(年龄组、BMI 分组)采用 Cochran-Armitage 线性趋势检验。以单因素分析 p < 0.10 为标准筛选变量纳入多因素二元 Logistic 回归,控制混杂因素后估计各变量的调整优势比(aOR)及 95% 置信区间(CI)。模型拟合良好性以 Hosmer-Lemeshow 检验(p > .05)和曲线下面积(AUC)评价。采用 Mantel-Haenszel 方法进行分层分析,以 Breslow-Day 检验评估各层效应是否同质(p >= .05 提示同质,可报告合并 OR;p < .05 提示存在效应修饰,需分层报告)。所有统计分析使用 ChatSRS(R 引擎)完成,显著性水平 alpha = .05,所有检验均为双侧。

结果章节:患病率描述

本次调查共纳入 2,400 名 40-74 岁社区居民,高血压总患病率为 36.0%(95% CI [34.1%, 37.9%])。男性患病率(41.3%,95% CI [38.4%, 44.1%])高于女性(31.0%,95% CI [28.4%, 33.6%])。患病率随年龄增加呈显著线性上升趋势(19.2% ~ 44.6%,Cochran-Armitage chi^2 = 148.32,p < .001),随 BMI 分组增加同样呈显著线性趋势(23.8% ~ 47.0%,chi^2_trend = 92.18,p < .001)。

结果章节:多因素 Logistic 回归主要结果

多因素 Logistic 回归分析结果(见表 3)显示,模型拟合良好(Hosmer-Lemeshow chi^2(8) = 9.12,p = .332,AUC = 0.74,Nagelkerke R^2 = .264)。控制所有协变量后,独立危险因素包括:BMI 分组(aOR = 1.54,95% CI [1.42, 1.68],p < .001)、吸烟(aOR = 1.52,95% CI [1.27, 1.82],p < .001)、体力活动不足(aOR = 1.48,95% CI [1.24, 1.77],p < .001)、高盐饮食(aOR = 1.44,95% CI [1.22, 1.70],p < .001)、男性(aOR = 1.41,95% CI [1.19, 1.67],p < .001)和年龄增长(aOR = 1.36/组,95% CI [1.27, 1.46],p < .001)。调整后,饮酒的独立关联未达统计学显著水平(aOR = 1.18,95% CI [0.99, 1.41],p = .069),提示其单因素关联可能受年龄和性别混杂。

结果章节:分层分析

按性别分层分析显示,男性(OR = 1.63,95% CI [1.29, 2.06])和女性(OR = 1.60,95% CI [1.21, 2.12])中吸烟与高血压的关联效应相近,Breslow-Day 同质性检验未达显著(chi^2(1) = 0.04,p = .836),Mantel-Haenszel 合并 OR 为 1.62(95% CI [1.37, 1.91]),提示性别对吸烟-高血压关联不存在效应修饰,合并 OR 能够可靠代表控制性别混杂后的效应量。


常见 FAQ

Q1: 单因素分析用卡方检验,期望频数 < 5 怎么处理?

卡方检验要求每个格子的期望频数(Expected Count)不低于 5,若有超过 20% 的格子期望频数 < 5,则卡方检验结果不可靠,需换用:

  • Fisher 精确检验:适合 2×2 表,期望频数 < 5 时的首选替代
  • Fisher-Freeman-Halton 精确检验:适合 2×k 或 r×c 表
  • ChatSRS 在输出时自动检测期望频数,不满足条件时自动切换 Fisher 精确检验并在注脚说明

Q2: 多因素 Logistic 回归变量纳入标准 p < .05 还是 p < .10?

公共卫生研究中常用 p < .10 作为多因素模型变量纳入标准(而非 p < .05),原因是:

  • 单因素分析中与结局存在潜在混杂关联的变量,可能因样本量或稀少暴露导致 p 在 .05-.10 之间,若仅用 p < .05 纳入会漏掉重要混杂因子
  • 最终多因素模型的显著性判断仍用 p < .05
  • 论文方法章节需明确说明纳入标准,不同文章标准不同,以你的研究方案为准

Q3: 粗 OR 和调整 OR 差距多大才叫"混杂"?

流行病学通用的经验参考标准:若调整 OR 与粗 OR 相差超过 10%(即 |aOR - cOR| / cOR > 10%),通常以此作为存在实质性混杂的经验参考阈值(各来源建议 10%~20% 不等),需报告并讨论混杂来源。例如粗 OR = 1.78,aOR = 1.52,差距约 14.6%,应在讨论中解释:可能是年龄、性别等混杂因素"放大"了粗 OR,控制后效应有所减弱,但仍具统计学和流行病学意义。

Q4: 趋势检验和普通卡方有什么不同?什么时候用哪个?

检验适用场景原假设优点
Pearson 卡方任意分类变量(有序无序均可)各组患病率相同通用
Cochran-Armitage 趋势检验有序分类暴露(年龄组、剂量组)无线性趋势检验功效更高,更符合"剂量-反应关系"的流行病学意义

对于年龄组、BMI 组、暴露剂量分组等有序分类变量,优先用趋势检验;能检测出普通卡方难以发现的单调趋势,是流行病学报告规范的要求。


公共卫生分析方法总结

分析目的方法ChatSRS 指令关键词
描述各组患病率频率表 + 二项 95% CI"分组患病率,95% CI,Wilson 法"
单因素关联筛查卡方 / Fisher 精确检验"卡方检验,Fisher 精确检验,汇总表"
有序暴露趋势Cochran-Armitage 趋势检验"趋势检验,Cochran-Armitage"
控制混杂的效应估计多因素 Logistic 回归"多因素 Logistic 回归,粗 OR 调整 OR 对比,AUC"
分层控制混杂Mantel-Haenszel 合并 OR"分层分析,MH 合并 OR,Breslow-Day 检验"
效应修饰检验Breslow-Day 检验"效应修饰检验,各层 OR 同质性"
人群疾病负担人口归因危险度"PAR% 人口归因危险度"

相关阅读


本文首发于 ChatSRS 官方博客。如有问题或反馈,欢迎在 ChatSRS 站内 [用户中心 -> 帮助与反馈] 联系我们。