skills/paper-reproduce/SKILL.md
Systematic methodology for reproducing published academic papers using provided data. Use when the user asks to reproduce, replicate, or verify results from a published paper, including sample selection, descriptive statistics, regression analyses, and generating reproduction reports (Markdown + LaTeX PDF). Covers the full pipeline: data exploration, variable identification/mapping, sample filtering, variable construction, statistical analysis, result comparison, and documentation. Applicable to any observational study, clinical cohort, or survey-based research paper.
npx skillsauth add xjtulyc/MedgeClaw paper-reproduceInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
输入: 论文 PDF/任务文档 + 数据文件
输出: 变量映射表 (variable_mapping.json)
精读任务文档,提取:
探索数据结构:
df = pd.read_stata('data.dta') # 或 read_csv/read_sas
print(f"维度: {df.shape}")
print(f"变量: {df.columns.tolist()}")
# 按前缀分组查看变量
# 检查是否有 wave/time/year 标识
变量识别四步法(最关键的步骤):
dc009s1)mem, recall, orient)total = sub1 + sub2 + sub3)经验教训: harmonized 数据集的变量名与原始问卷变量名通常完全不同。 不要假设
dc009s1存在,要搜索语义等价的变量。
输入: variable_mapping.json
输出: 构建好变量的 DataFrame
逐个构建变量,每个变量构建后立即验证:
组合变量的验证技巧:
# 验证 total = sub1 + sub2 + ... + subN
calc = df['sub1'] + df['sub2'] + df['sub3']
diff = (df['total'] - calc).abs()
match_rate = (diff < 0.01).mean()
print(f"吻合率: {match_rate:.1%}")
分类变量编码注意事项:
value_counts() 检查所有可能值经验教训: 当变量均值与论文偏差大时(如 MS 均值 7.11 vs 论文 5.73), 优先怀疑变量构成定义有误,而非数据问题。尝试不同的子变量组合。
输入: 构建好变量的 DataFrame
输出: 分析用的最终样本
Step N: 描述 → 保留 XXXX [论文: YYYY, 差 ZZZ]
经验教训: 要求多个变量同时不缺失会导致排除量远超预期。 如果论文未说明如何处理缺失,尝试:(a) 只要求核心变量不缺失, (b) 分步排除而非一次性
dropna(subset=all_vars)。
输入: 最终样本
输出: Table 1, Table 2, Table 3 等
# 连续变量: M(SD) + t 检验
t_stat, p_val = stats.ttest_ind(group1[var], group2[var])
# 分类变量: % + 卡方检验
ct = pd.crosstab(grouping_var, category_var)
chi2, p_val, dof, expected = stats.chi2_contingency(ct)
# 标准化所有变量(因变量和自变量都标准化 → 得到标准化 beta)
from sklearn.preprocessing import StandardScaler
df_std = df[all_vars].copy()
for col in df_std.columns:
df_std[col] = (df_std[col] - df_std[col].mean()) / df_std[col].std()
# OLS + 稳健标准误 (HC3)
model = smf.ols('y ~ x1 + x2 + ...', data=df_std).fit(cov_type='HC3')
# 标准化后再构建交互项
df_std['interaction'] = df_std['var1'] * df_std['var2']
# 对每个子群体分别标准化后回归(不要用全样本的标准化参数)
for subset_name, subset in subsets.items():
sub_std = subset[vars].copy()
for col in sub_std.columns:
sub_std[col] = (sub_std[col] - sub_std[col].mean()) / sub_std[col].std()
model = smf.ols(formula, data=sub_std).fit(cov_type='HC3')
经验教训:
- 标准化beta要求因变量和自变量都标准化
- HC3 是最常用的稳健标准误,但不同软件默认不同(SPSS 用 HC0)
- 分层分析时去掉分层变量(如按性别分层时不控制性别)
- 分层分析对每个子群体独立标准化
逐项核对论文报告值,使用三级标记:
| 标记 | 含义 | 标准 | |------|------|------| | ✅ | 验证 | 数值接近(允许末位四舍五入差异),显著性一致 | | ⚠️ | 趋势一致 | 方向相同,但显著性不同(通常因样本量差异) | | ❌ | 未复现 | 方向相反或差距太大 |
对每个 ❌ 和 ⚠️ 给出可能原因。
同时生成两种格式:
LaTeX 编译注意事项:
ctex 包 + xelatex 编译tikzbooktabs(三线表)\checkmark 需要 amssymb 包xelatex -interaction=nonstopmode report.tex # 第一遍
xelatex -interaction=nonstopmode report.tex # 第二遍(交叉引用)
reproduce_<study>/
├── scripts/
│ └── full_analysis.py # 主分析脚本(可独立运行)
├── figure1.json # 筛选流程数据
├── table1.csv # 描述统计
├── table2.csv # 回归结果
├── table3.csv # 分层/补充分析
├── analysis_output.txt # 完整控制台输出
├── 复现报告.md # Markdown 报告
├── 复现报告.tex # LaTeX 源文件
├── 复现报告.pdf # PDF 报告
└── data files... # 原始数据(不修改)
| 陷阱 | 表现 | 解决 |
|------|------|------|
| harmonized vs 原始数据 | 变量名不同、缺失模式不同、编码不同 | 基于语义+范围搜索变量,不要硬编码变量名 |
| 组合变量定义错误 | 均值偏差大(>1SD) | 用 total = sum(parts) 验证;尝试不同的子变量组合 |
| 缺失值级联 | 多变量同时要求非缺失 → 排除量远超论文 | 分步排除;先排核心变量缺失,再排协变量缺失 |
| 分类变量编码 | 中文标签多义("未婚"的范围) | value_counts() 全部列出,逐一确认 |
| 标准化方式 | β系数方向对但数值偏大/偏小 | 确认是全变量标准化还是只标准化连续变量 |
| 稳健标准误类型 | p 值略有差异 | HC0/HC1/HC3 选择;SPSS 默认 HC0 |
| Docker 文件同步 | 脚本修改后容器内仍是旧版 | 每次修改后 docker cp 同步 |
详细的调查数据库特定操作,参见对应的数据库 skill(如 charls-reproduce)。
development
Generate professional SVG UI panels for structured information display. Use when presenting lists, task checklists, pipeline/dependency status diagrams, or rich-text report layouts as SVG images. Covers four templates - list-panel, checklist-panel, pipeline-status, richtext-layout. Style is professional, business-oriented, academic-grade with Material Design color palette.
development
Send rich interactive cards with embedded images in Feishu group chats. Use when reporting progress, sharing analysis results, or presenting any content that benefits from mixed text+image layout in Feishu. Combines SVG UI templates (or matplotlib/PIL charts) with Feishu Card Kit API.
development
# Local Research Dashboard Skill ## 概述 每次科研任务开始时,生成一个临时的本地 dashboard,动态展示任务关键信息和产物预览。 ## 组件 - `state.json`:数据协议,openclaw 负责写入和更新 - `dashboard.html`:本地单文件页面,轮询 state.json 并渲染 - `dashboard_serve.py`:静态文件服务器,serve 任务根目录 所有文件放在**任务独立目录**中(如 `data/<task_name>/dashboard/`)。 --- ## state.json Schema ```json { "title": "任务标题", "updated_at": "2024-01-01 12:00:00", "panels": [ { "type": "progress|text|list|code|table|image|files|step", "label": "面板标题(可折叠的标识)", "content":
tools
CJK (中日韩) 字体检测与 matplotlib 配置。任何涉及中文标签、标题、图例的 可视化任务启动前必须先执行本 skill 的字体检测流程,确保不会出现方块乱码。 适用于 matplotlib / seaborn / plotly 静态导出等场景。