返回 Skill 列表
extension
分类: 数据与分析无需 API Key

红曲数据分析助手

【世界药师节·AI药学技能大赛参赛作品】帮临床药师/中药师把一份药学研究数据(红曲制剂/血脂康 vs 他汀类 RCT 或真实世界数据)按 STROBE 规范跑成可发表的"数据分析报告"——依次完成数据体检、Table 1 基线三线表、主要结局(含 PSM 与效应量)、≥4 张期刊图表、结论要点,并强制保留三线表/ P 值/单位换算等格式规范。当学员给出红曲/血脂康/他汀类课题的 Excel 数据集并要求"出分析报告、STROBE 报告、基线表、KM 曲线、PSM、森林图"时触发。

person作者: user_ac76f862hubcommunity

红曲数据分析助手

定位(AI 必读)

本 skill 是 AI 的工作手册,把"一份药学研究 Excel 数据 → 一份药学期刊风格 STROBE 数据分析报告(Word,含三线表+图表)"的全流程固化。它是「药学数据分析助手」的 红曲/血脂康 domain 专用分支,默认按"血脂康 vs 阿托伐他汀治疗老年原发性高脂血症:血脂达标率及安全性"的真实数据结构设计,但脚本顶部留有 CONFIG 适配块,换数据集只需改 CONFIG。

完整工作流(六步,必须按顺序执行)

Step 1  数据体检      缺失率 / 异常值 / 日期格式 / 单位一致性 / 清洗建议清单
   ↓
Step 2  Table 1       两组基线可比性(连续:均值±SD 或 中位数(IQR);分类:n(%));每行给统计量+ P 值
   ↓
Step 3  主要结局      达标率 χ²+RR/RD(95%CI);MACE 用 Cox+KM;安全性(肝酶异常);PSM 匹配后平衡性
   ↓
Step 4  图表(≥4)      KM 生存曲线(含 risk table) / 亚组森林图 / 随访轨迹或箱线图 / 相关性热力图 / PSM Love plot
   ↓
Step 5  中介效应      任务书缺变量时→机制替代变量;Bootstrap 5000 次,报间接/直接/总效应+95%CI
   ↓
Step 6  结论要点      3–5 条,数据驱动;文末附【图表清单】+【方法学说明】+【需人工确认事项】

通用统计规则(正态性判定、检验选型、PSM、Cox、Bootstrap)继承「药学数据分析助手」,本 skill 仅补充 红曲课题的已知数据陷阱格式铁律


开工前:材料矛盾核查(红曲课题特有,必须先做)

红曲课题的数据集常被套用错模板,开工前必须核对两项结构性冲突,否则整份报告建立在错误假设上:

| # | 冲突点 | 核查动作 | 处理 | |---|---|---|---| | 1 | 分组数不符:任务书常写"两组",但真实数据可能是三组(血脂康单药 / 阿托伐他汀单药 / 血脂康联合) | 跑 value_counts(分组列) 看真实组数 | 与研究者确认主分析分组。默认"两单药组对照",第三组仅作描述+敏感性分析 | | 2 | 结局变量不存在:任务书常把"认知队列"模板(MoCA/MCI/hs-CRP/HOMA-IR)错贴到高脂血症数据 | 检查数据集列名是否含这些变量 | 不存在则改用真实结局(LDL-C 达标、MACE、肝酶异常),并在报告"研究背景与数据说明"透明披露 |

PII 处理:数据集若含姓名/身份证号/联系电话,分析前必须删除(即使标注为虚构标识),并在体检清单中登记。

单位一致性:高脂血症数据的血脂多为 mmol/L、酶为 U/L、肌酐为 μmol/L。开工前全表扫描"同一指标是否混用两种单位",若混用,必须先换算再分析,并在报告中注明换算关系。


Step 1 · 数据体检

输出内容(写入 results.jsonqc 键):

  1. 样本量与中心数len(df)就诊中心.nunique()、分组计数、入组日期跨度。
  2. 缺失率:对所有列算 isna().mean()*100,仅列出 >0% 的字段。注意区分"真缺失"与"设计性缺失"(如把第三组排除于两组对照导致的 group2 缺失)。
  3. 异常值:对年龄/BMI/血脂/CK/肌酐按生理合理范围扫描(outlier_count(s, lo, hi)),超界计为异常。
  4. 日期格式:所有日期列 pd.to_datetime,检查是否混用 YYYY-MM-DD / YYYY/MM/DD / 含时间。统一为 YYYY-MM-DD
  5. 变量类型判断表:标识/日期/连续/二分类/有序分类/多中心分类 → 决定后续检验方法。
  6. 清洗建议清单(表 0):个人标识、缺失值、单位、日期、异常值、变量类型 → 每项给"结果+处理建议"。

Step 2 · Table 1 基线特征三线表

  • 连续变量:先 Shapiro–Wilk 正态性检验。
    • 正态 → 均数±标准差 + 独立样本 t 检验(Welch 校正),统计量记 t=xx.xx
    • 偏态 → 中位数(四分位距) + Mann–Whitney U 检验,必须报标准化 Z(见 Pitfalls①),统计量记 Z=xx.xx
  • 二分类n(%);理论频数≥5 用 Pearson χ²(记 χ²=xx.xx),<5 用 Fisher 精确检验(记 Fisher)。
  • 有序/多分类(如 ASCVD 危险分层):行×列 χ²,结果写各层 n(%)
  • 每行必须给 统计量 + P 值(P 值格式见格式铁律)。
  • 三线表格式:仅 3 条横线(顶线/栏目线/底线),无竖线(实现见 references/format_spec.md)。

Step 3 · 主要结局分析 + PSM

  • 主要疗效(二分类达标率):χ² 比较率,计算 RR、RD 及其 95%CI(公式见脚本 risk_ratio/risk_diff)。
  • 安全性:肝酶异常(ALT>3×ULN)同法。
  • 硬终点(时间-事件):Cox 比例风险回归报 HR + 95%CI,KM 法 + log-rank 检验,KM 必须含 at-risk 表(Pitfalls⑤)。
  • PSM(控制混杂)
    • Logistic 回归估 PS;协变量含人口学+基线血脂+肝功能+合并用药+中心。
    • 1:1 最近邻匹配,卡钳 = 0.2 × SD(logit PS)
    • 必须保留原始索引(Pitfalls②),否则 SMD 错位。
    • 报告匹配前后各 n、最大 |SMD|(目标 <0.10),并画 Love plot。
    • 匹配后重跑 Table 1(含匹配前失衡的变量)与主要结局。

Step 4 · 图表(≥4 张,图题在图下方)

| 图 | 内容 | 要点 | |---|---|---| | 图 1 | PSM Love plot | 匹配前后 |SMD|,虚线 0.10 参考 | | 图 2 | KM 曲线 | 含 risk table + log-rank P | | 图 3 | 亚组森林图 | 各层 HR(95%CI),含 0.2/2.2 等边标线 | | 图 4 | LDL-C 随访轨迹 / 箱线图 | 均值±SE 或 基线 vs 末次 | | 图 5 | 多重用药相关性热力图 | Spearman,annot 显示系数 |

  • 中文图用 SimHei 字体(matplotlib.rcParams["font.sans-serif"]=["SimHei",...])。
  • 表题在表上方、图题在图下方(Word 汇编时控制)。

Step 5 · 中介效应(Bootstrap 5000)

  • 任务书原拟中介变量(HOMA-IR/hs-CRP)在数据中常缺失 → 改用机制对应的可得变量(如 ΔLDL-C 中介 "治疗组→MACE"),并透明说明。
  • Bootstrap 5000 次:间接效应 a×b、直接效应 c'、总效应 c,各报 95%CI(偏差校正百分位数)。
  • 稳定性加固(Pitfalls④):① 中介前先落盘已完成结果;② 预构建设计矩阵用 np.linalg.lstsq 算 a 路径,避免循环内重复 patsy 解析;③ 每 1000 次 gc.collect();④ 整体 try/except 兜底,异常时跳过且不污染其他结果。

Step 6 · 结论要点 + 清单

  • 3–5 条,数据驱动(直接引用率/HR/RR+95%CI),规避禁用词(见下)。
  • 文末附【图表清单】(表0/表1/…/图1/图2/…)。
  • 附【方法学说明】(可直抄进论文"统计分析"段)与【需人工确认事项】(结局替代、分组、中心数、PSM 后 |SMD| 略超阈值、罕见事件等)。

格式铁律(必须保留)

  1. 三线表:只有 3 条横线(顶线粗、栏目线、底线粗),禁止任何竖线。表题在表上方。
  2. P 值格式P<0.001 / P=0.032(保留 3 位)/ P>0.05。绝不写 P=0.000
  3. 数字精度:正文与表格精确到小数点后 1–2 位。
  4. 单位换算提醒:单位不统一的变量必须先换算再分析,并在报告"数据体检"或脚注注明换算关系。
  5. 图题在图下方,图内需含必要标注(KM 的 risk table、森林图的 HR 标签)。
  6. 禁用词(报告正文绝对禁止出现):根据数据显示 / 由此可见 / 结果表明具有一定 / 差异较为明显 / 呈现出一定趋势

Pitfalls(红曲课题已踩过的 5 个坑,必须规避)

  1. Mann–Whitney 报标准化 Zscipy.stats.mannwhitneyu 返回的是 U 统计量,不是 Z。需手算 Z=(U−n1·n2/2)/√(n1·n2·(n1+n2+1)/12),再报 Z=xx.xx
  2. PSM 索引对齐:匹配后如果用 reset_index(drop=True) 再按行算 SMD,会与原始 X 错位导致 SMD 失真。须 X.index = ps_df.index 并保留 iloc 选出的原始索引。
  3. Cox 置信区间lifelinessummaryexp(coef) lower/upper 95% 列在部分版本不可靠,必须用 se(coef) 重算 HR=exp(coef)CI=exp(coef±1.96·se)。森林图同样。
  4. Bootstrap 中介内存崩溃:5000 次循环内反复 patsy 解析公式易触发段错误/内存峰值被杀。预构建设计矩阵 + lstsq + 显式 gc.collect() + 预落盘 + try/except
  5. KM 必须含 risk table:药学期刊硬要求。在图下方用 plt.figtext 逐时点写 at-risk 人数,并给足 bottom 留白避免与 xlabel 重叠。

适配新数据集(换一份药学研究数据怎么用)

  1. 复制 scripts/analyze.py,改顶部 CONFIG
    • src / out 路径;sheets 各逻辑表名;id_colpii_colsdate_cols
    • group_col + two_arm_map(你的"两组"映射)+ treat_name(trt=1 那组)。
    • primary_var / safety_var / event_var / time_var / ldl_base / ldl_last
    • covars_cont / covars_cat / psm_vars 列表。
    • unit_note(写明单位核对结论)。
  2. 亚组定义(build_subgroups)与中介变量(run_mediation)按新数据调整(见脚本注释)。
  3. 运行 analyze.py → 生成 results.json + figs/*.png
  4. 复制 scripts/build_doc.py,按需改标题/封面;运行 → 生成 Word。
  5. 校验:表格数、图片数、禁用词命中、三线表边框(脚本见 references/format_spec.md)。

环境:用隔离 venv 安装 pandas numpy scipy statsmodels matplotlib seaborn scikit-learn lifelines openpyxl python-docx。详见 references/format_spec.md 末尾"环境搭建"。


触发词

红曲数据分析 / 血脂康分析报告 / STROBE 数据分析报告 / 高脂血症 RCT 出表 / 基线三线表 / 红曲 vs 他汀 KM 曲线 / 真实世界研究出报告