药师审方能力自评数据分析 · SKILL
定位(AI 必读)
本 skill 是 AI 的工作手册,不是给用户读的说明书。
- 用户:给一份 Excel 自评统计表 + 分析诉求,不写代码、不指定统计方法
- AI:读本 skill → 核对数据结构 → 改
config.json→ 跑run_all.py→ 读日志核对数值 → 交付 Word 报告 - 目标:一次跑通,数值可复核,结论表述符合药学期刊规范且经得起审稿
最重要的一条:这类数据有三个固有陷阱——有序结局、天花板效应、区间删失。所有方法选择都必须绕开它们,不能按连续变量硬做。详见 references/统计方法决策.md。
适用与不适用
| 情形 | 是否适用 | |---|---| | 有序等级结局 + 同一批人报告两种情境(自身配对) | ✅ 核心场景 | | 取值高度集中在量表上端(天花板效应) | ✅ 已内建量化与讨论 | | 原始录入混用小数 / 百分号 / 开放区间(>95%、<60%) | ✅ 已内建换算与三套赋值敏感性分析 | | 多选勾选题(空白 = 未勾选) | ✅ 已内建结构性零处理 | | 真正的连续结局、纵向随访、多中心 | ❌ 需另行设计,勿套用 |
快速开始(3 步)
第 1 步:核对数据结构
不要跳过这一步。 先看清表结构再改配置:
python -c "
import pandas as pd
df = pd.read_excel(r'数据.xlsx', sheet_name=None)
for name, d in df.items():
print('===', name, d.shape)
print(d.head(4).to_string())
"
重点确认四件事:
- 表头在第几行(决定
header_row,0-based) - 把握度的全部取值(
df['有系统把握度'].value_counts())——每个取值都必须在config.ordinal.map里有对应等级 - 职称各档例数——高级职称若仅 1~2 人,三分类不可行,必须二分
- 工作年限档位是否语义重叠(如同时存在
>5与>10)——需先定口径
第 2 步:改 config.json
只改 scripts/config.json,不要改任何 .py 代码。必改项:
source.file/source.sheet/source.header_rowoutput.base_dir(其下自动建work/、figs/、output/)columns:左侧原始列名改成实际表头,右侧内部短名固定不动ordinal.map:把握度每个取值 → 等级序号weak_items.raw/short:两个列表必须等长且一一对应report.title/filename/setting
配置里以 _ 开头的键是注释,会被自动忽略。
第 3 步:跑全流程
python scripts/run_all.py --src "数据.xlsx" --base "输出目录"
单步调试用 --only a3_main。每步日志落在 <base>/work/log_*.txt。
跑完必须读日志再写结论,尤其 log_a1_audit.txt(体检)与 log_a3_main.txt(主要结局)。不要凭印象转述数值。
分析模块与产出
| 脚本 | 内容 | 产出 |
|---|---|---|
| a1_audit | 缺失(区分真缺失/结构性零/未应答)、单位换算、区间删失、年限口径、异常值、逻辑一致性 | clean.csv、r1.json |
| a2_table1 | 按职称二分组的样本构成三线表 | r2.json |
| a3_main | 配对 Wilcoxon + HL 估计、调节效应、有序 logistic、天花板量化 | r3.json |
| a4_secondary | 检出率 + Wilson CI、分层比较 + FDR、开放题主题编码 | r4.json |
| a5_figs | 图 1~5 | figs/fig1~5.png |
| a6_report | 组装 Word 报告 | output/*.docx |
图 1 配对斜线图+增益直方图 / 图 2 分层森林图 / 图 3 Spearman 热力图 / 图 4 薄弱环节检出率 / 图 5 开放题主题分布。
关键方法约定(不可随意更改)
- 结局按有序变量处理,绝不按连续变量建模。天花板效应下均值±标准差会误导。
- 区间删失做三套赋值(下界/中值/上界)敏感性分析,三套结论方向必须一致才可下结论;否则只能报告为不确定。
- 效应量用秩二列相关 r 或 Cliff's δ,不用 Cohen's d。所有效应量必须附 95%CI。
- 符号检验作为不依赖赋值的稳健佐证——它只用改善/持平/下降的方向,与赋值方案无关。
- Bootstrap 必须报告抽样次数与随机种子(在
config.stats,默认 5000 次、种子 20260802)。改了配置就要同步改报告表述。 - 调节效应分析标注为探索性,不得表述为确证性结论。
- 不做 PSM、不做中介分析。原因与替代方案见
references/统计方法决策.md,报告中必须单列一节说明。
报告写作红线
禁用表述(出现即需改写):
根据数据显示 / 由此可见 / 结果表明具有一定 / 差异较为明显 / 呈现出一定趋势
三条硬规则:
P>0.05不得写成"无差异""不存在关联",须写"未观察到差异,且本研究效能不足以排除中小效应"- 横断面关联不得写"影响""导致""提升";描述自身配对比较时可用"高于"
- 职称是研究因素不是混杂因素,Table 1 不得表述为"基线可比性验证",只能说"描述样本构成"
格式:数值 1~2 位小数、百分比 1 位;P<0.001 / P=0.032 / P>0.05;三线表仅三条横线无竖线;表题在上、图题在下。
完整规范见 references/报告写作规范.md。
常见问题
| 报错 / 现象 | 原因与处理 |
|---|---|
| 把握度取值未在 config.ordinal.map 中定义 | 有新取值未登记。先 value_counts() 看全,再补进 ordinal.map 和三套 schemes |
| 原始表缺少以下列 | config.columns 左侧列名与实际表头不符,逐字核对(注意全角/半角、空格) |
| 工作年限取值未在 years_relabel 中定义 | 补进 grouping.years_relabel 和 years_order |
| 某分层 0 例导致检验报错 | 已内建保护(全零行列自动剔除、空分层 δ 记 0)。若整档为空,考虑合并档位 |
| 报告里出现 {N} 之类字面量 | 某处字符串漏了 f 前缀,检查 a6_report.py |
| 三线表显示成全框线 | add_table 当前以 Table Grid 为基础样式;如需严格三线,需改写 tcBorders XML |
交付前自查
- [ ] 三套赋值方案结论方向一致(看
log_a3_main.txt敏感性分析段) - [ ] 所有效应量都带 95%CI
- [ ] Bootstrap 次数与种子已在报告中注明
- [ ] 阴性结果按"未观察到差异 + 效能不足"表述
- [ ] 无禁用表述
- [ ] 方法学局限不少于 5 条,且含自我评估偏倚(Dunning-Kruger)、样本量与效能、假设性回忆情境、横断面不支持因果、天花板效应、多重比较
- [ ] 已说明为何不做 PSM 与中介分析
- [ ] 末尾附【图表清单】
- [ ] 已注明软件及版本
微信扫一扫