light-result-analysis について
light-result-analysisはLight研究パイプラインの第7段階で、実験結果の解釈と論文の主張に対する証拠評価を行うスキルです。BH-FDR補正後の有意性、効果量、信頼区間、再現性を確認し、仮説を支持しない結果や不安定な結果を上流工程へ戻せます。
主な機能
- 01統計検定を選択し効果量と信頼区間を算出
- 02多重比較にBH-FDR補正を適用
- 03主張と証拠の表および証拠強度ファイルを生成
- 04リーク、過学習、SHAPによる説明を確認
- 05分析計画、手法の適合性、Rの結果を照合
- 06支持されない結果や不安定な結果を上流へ戻す
活用シーン
- 01多重検定を補正して複数手法の実験結果を比較
- 02指標の向上が有意で実質的かを評価
- 03論文の主張や表現を証拠の強さに合わせる
- 04異常値、リーク、種ごとの不安定さを調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ light0305/ light-skills --skill light-result-analysisインストール後、Claude Code で/light-result-analysisを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references.mdresult-analysis-resource-map.mdassets/result_analysis_report_template.mdexamples/analysis_audit.example.jsonmethod_compatibility.example.jsonstat_spec.example.jsonworked_example.pyscripts/analysis_plan_audit.pyanalyze_results.pyexplain_shap.pyleakage_overfit_check.pymake_figs.pymethod_compatibility.pyr_analysis_crosscheck.pyr_analysis_crosscheck.Rresult_card_gate.pysignificance_test.pystat_rigor_gate.pystats_tests.pytemplates/result-card.example.json詳細
結果分析(result-analysis)—— 科学研究の主線 stage 7 · claim↔証拠の紐付け + 統計的厳密性の critical ゲート
あなたは Light 科学研究パイプラインの DAG 第 7 ノードです。タスクは**「結果の良し悪しを記述する」ことではなく**、実行して得られた結果を**「なぜそうなったのか」まで解釈することです。 どの手法が有効だと示したのか、どの手法が問題を露呈させたのか、どの異常を調査すべきか、どれが論文のハイライトになり得るのかを明らかにし、論文に書けるすべての論断(claim)を、その統計的証拠と証拠強度の段階に確実に紐付けます。そして、結論の信頼性を損なう**レッドライン、つまり p-hacking(多重比較の未補正/選択的報告/HARKing/garden of forking paths)を守ります。統計的誤り/p-hacking = critical、過剰解釈や効果量の欠落 = warn です。有意性は p ではなく q で判断します。
ひとことで言うと:「実験結果を見る際、研究室にいる研究者たちが実際に徹底的に検討すること」——この向上は統計的に有意なのか、それともノイズなのか(効果量はどの程度か、CI に 0 が含まれるか、多重比較は補正されているか)、データセットや乱数シードを変えても成立するのか(頑健性、再現可能性)、各 claim をどの強さの証拠が支えているか(強い証拠には強い表現、弱い証拠には留保を付け、有意でなければ「有意差は認められなかった」とだけ報告する)——これらを決定論的な機械判読可能なゲート + critical findings + 証拠強度の段階として実現します。 真実のソースとの詳細な照合先 =
docs/competitors/result-analysis.md(Round 2:実際に同種の SKILL 8 件 + 仕組みの要点 + 優位点 + 正直な限界)。実ユーザーのフィードバックループについてはresult-analysis-resource-map.mdを参照してください。findings の生成元と critical ゲートの担当(責任範囲を明確に):本スキルは統計的厳密性/証拠強度に関する critical findings を生成します(producer=result-analysis、
stat_rigor_gate.pyの 4 つのゲート)——stat_validity(多重比較未補正/選択的報告→BH-FDR を実際に再計算→critical)、hypothesis_support(仮説が結果によって否定された→critical)、reproducibility(複数シードで不安定→critical)はrun_checkpoint --stage 7によって集約され、→ critical fail exit 1 となります。evidence_strength(証拠の段階 + 過剰解釈/効果量の欠落)は warn で DAG をブロックしません(spec §4.2 の定義)+evidence_strength.jsonを出力します。research-ethics との分担(evidence_contract が橋渡し):result-analysis は stage 7 で証拠強度を定めます(
evidence_strength.jsonを生成: 各 claim の q/効果量/CI → 証拠の段階 strong/moderate/weak/none + 許可/禁止される表現)。research-ethics は stage 8 のclaim_evidence_bindで表現が証拠を超えていないか確認します(同じevidence_strength.jsonを使用します)。本スキルが強度を定め、research-ethics が表現を確認します。重複はありません。_shared/evidence_contractは両者が共用する橋渡し役です。特殊な位置付け(上流への差し戻しを開始する側。experiment-coding とは逆):experiment-coding は 7→6 の差し戻し先(受動的に受け取る側)です。result-analysis は 7→5 と 7→6 の 2 つの戻り経路を開始する側(能動的に開始)です。結果が仮説を支持しないと判断した場合(findings に「仮説/支持/効果」のシグナルあり)→ 統括
reroute --stage 7により、research-plan への 7→5 を提案します。結果が再現できないと判断した場合(「シード/再現」のシグナルあり)→ experiment-coding への 7→6 を提案します。これは本スキルの 非線形な中核です。終点ではなく、結果を上流に戻して修正するハブです。(p-hacking が critical の場合は stage 7 内で分析をやり直し、reroute は manual に渡します。)横断的に常時適用されるのか? いいえ。これは必要に応じて
/で呼び出す主線ノードです。file-reading / memory-pm / project-structure / consistency / research-ethics は全工程に横断的に常時適用されますが、本スキルはそれらを重複して扱いません。
いつ起動するか(トリガーシグナル)
- 実験が完了し、結果を解釈する必要がある(experiment-coding から
run_manifest.mdを受け取る:複数シードの指標 + 成果物のパス)——主な用途です。 - ユーザーが「これらの結果は何を示していますか/この向上は信頼できますか/有意なのかノイズなのか/効果量はどの程度か/データセットを変えても成立しますか」と質問した場合——いずれか 1 つでも該当すれば起動します。
- 有意性検定 + 効果量 + 信頼区間 + 多重比較補正(p の報告だけにしない)/対応のある検定/スライス分析/SHAP による解釈可能性を実施する必要がある場合。
- 「指標が異常に良い(リークが隠れている?)/p<.05 が大量に報告されている(多重比較は補正された?)/成功した結果だけが報告されている(選択的報告?)」と疑われる場合——本スキルの critical ゲートがまさに対応する状況です。
- 各 claim の証拠強度を定め、後続の執筆で表現を調整する必要がある場合(
evidence_strength.jsonを生成)。 - 差し戻しの判断(本スキルが能動的に開始):結果が仮説を支持しない(→7→5 で research-plan に戻る)/再現できない(→7→6 で experiment-coding に戻る)と判断した場合——
意思決定のポイントです。いったん停止してユーザーに確認してください(どこに戻るか/問題を抱えたまま進めるか/既知の限界として扱うか)。
どのように動作するか:ACT / ASK / NEVER
それぞれのアクションについて、まず分類してください:**自分で実行する(ACT)**のか、**停止してユーザーに確認する(ASK)のか、それとも絶対に実行しない(NEVER)**のか?
ACT — 跑确定性统计门,自己做(不烦用户)
- 先审分析计划与证据来源(warn-only,不扩大 critical 面):
python scripts/analysis_plan_audit.py --spec analysis_audit.json --report analysis_audit_findings.json --json-out analysis_audit_full.json——核结果前 plan lock、统计单位/复杂设计、comparison family、 expected↔observed seed/fold/sample coverage,以及 raw result 的 hash/owner/time/run manifest/commit。 - 先判方法能不能用:解释器、统计检验或诊断法运行前用
method_compatibility.py核对domain_scope/input_modalities/task_types/requires_access/supported_dependence/labels; 已知不兼容FAIL,条件缺失UNRESOLVED,不得把“脚本能跑”误写成“方法适用”。 - 一键统计分析:
python scripts/analyze_results.py results.csv --group method --metric acc f1——EDA(n/均值±std/中位/95%CI/ 正态性)+ 按正态性与组数自动选检验(2 组正态→Welch t / 非正态→Mann-Whitney;≥3 组→先 Levene 方差齐性→ANOVA+Tukey 或 Welch-ANOVA / 非正态→Kruskal-Wallis)+ 每对 Cohen's d(Hedges 校正)+ BH-FDR 跨比较校正。共享种子/折加--paired-by seed走配对 t / Wilcoxon(功效更高)。给了--paired-by后,claim/evidence 只采用配对比较;独立样本结果仅留 advisory,不得生成 duplicate claims。--slice-by <col>切片分析防聚合掩盖子群失败(小 n 切片自动标「待核查」)。 - 统计严谨/证据强度 critical 门(本技能灵魂):
python scripts/stat_rigor_gate.py --spec stat_spec.json --report stat_findings.json --evidence-out evidence_strength.json编排 BH-FDR 真重算 + 消费 evidence_contract → 产light.findings.v1:多重比较未校正/ 选择性报告 / 假设证否 / 多种子不稳 → critical;过度解读/效应量缺失 → warn。critical →run_checkpoint --stage 7exit 1。 - 产标准机读工件:
analyze_results.py --emit-claim-table(claim_evidence_table.md:每个比较↔检验/p/q/d/CI/n)+--emit-evidence(evidence_strength.json:挂接_shared/evidence_contract,q/效应量/CI→证据档+措辞档)。显著性一律以 BH-FDR 后 q 为准,不显著的比较标「不得声称更好」。 - 效应量 + CI + DeLong:
significance_test.py(cohens_d/mean_diff_ci/bootstrap_ci/benjamini_hochberg/delong_two_auroc比较同测试集两模型 AUROC 差是否显著)。只报 p 不报效应量 = 误用:p 小不代表差异大。 - R/Python 真交叉核验:
python scripts/r_analysis_crosscheck.py --input results.csv --group method --metric acc --paired-by seed --out r_acc.csv。launcher 会找RSCRIPT/PATH/Windows Program Files;base R 真算 paired t 或 independent Welch。R 不可用就明确返回 unavailable;复杂 mixed/repeated/nested 设计仍需专门模型。 - 可解释性 / 失败案例 / 泄漏体检:
explain_shap.py(SHAP beeswarm/bar/waterfall,非因果,shap 缺失优雅降级)+leakage_overfit_check.py(train/val/test gap + 特征-标签高相关泄漏 + 重复行)——指标好得反常先查泄漏。 - 出分析报告:按
assets/result_analysis_report_template.md每个发现写「现象→原因→证据→对论文的意义」+ 亮点/异常/待补实验清单。
ASK — 停下问用户,给「证据 + 推荐 + 备选」(决策点 🧑)
| 决策点 | 何时 | 你怎么问 |
|---|---|---|
| 回炉发起 7→5(不支撑假设)(最重要) | hypothesis_support 判主假设 grade=none | 「主假设 H1『新模块提升 acc』未被结果支撑:BH-FDR 后 q=0.2≥.05、CI=[-0.2,0.4] 含 0、效应量 d=0.1 过小。建议回 research-plan(7→5)重审假设/设计(也许 H 本就不成立,或需更强实验)。回炉带『哪条假设没撑住 + 对应效应量/CI』——还是带病推进 / 转已知局限?(方向你定,绝不 HARKing 删掉换个成功假设重报)」 |
| 回炉发起 7→6(不可复现) | reproducibility 判多种子 sign-flip/CV 过大 | 「结果不可复现:claim X 的效应跨 5 个种子 sign-flip([-0.31,+0.55]),换次跑结论会飘。建议回 experiment-coding(7→6)查种子覆盖 / 实现 bug,带『失败的复现证据』。还是多种子报均值±std 并 hedge?别把单次峰值当结论。」 |
| 查出 p-hacking | stat_validity 多重比较未校正/选择性报告 | 「扫到 5 个比较未做多重比较校正:4 个裸 p<.05 中 4 个经 BH-FDR 后 q≥.05(假阳性)。建议在 stage 7 内重做分析:对全部比较做 BH-FDR,显著性以校正后 q 为准。要我直接重算吗?校正后『显著』可能消失——那才是真值。」 |
| 证据弱却想强措辞 | evidence_strength 判 asserted_grade 强于实算档 | 「claim Y 证据档=weak(显著但小效应 d=0.2),但措辞写了『显著优于』。建议降到『在本实验中略优 / 初步提示』并加 hedge。强措辞会被 research-ethics 的 stage-8 措辞门拦。」 |
| 异常结果:排查 vs 当亮点 | 切片/某指标异常高或异常 | 「切片『夜间』acc 异常高(0.97 vs 整体 0.85)。可能是真亮点(该场景方法特别有效),也可能是泄漏/小样本(该切片 n=12)。建议先查泄漏 + 看 n 再定,别急着写进 contribution。先查哪个?」 |
NEVER — 絶対禁止 [NON-NEGOTIABLE]
このセクションは絶対に譲れません。交渉の余地はなく、「結果が良ければよい」「p<.05 なら有意」「強めに書いたほうが通りやすい」といった理由で回避してはなりません。いずれかに違反した場合、重大な職務怠慢です。
- p だけを見て、効果量と CI を見ないのは絶対禁止です:p 値の三点セットは p + 効果量(Cohen's d / Cliff's δ)+ 信頼区間です。p が小さくても、差が大きいとは限りません(大標本では、ごく小さな差でも有意になります)。CI が 0 を含む = 差の方向が定まらない = 有意ではない。p だけの報告は
evidence_strengthwarn です。 - 多重比較を補正しないのは絶対禁止です:複数の比較を報告する場合、必ず BH-FDR(FDR を制御し、検出力が高い)または Bonferroni(FWER を制御し、保守的)を適用してください。有意性の判断には必ず補正後の q を使い、未補正の p は使いません——5 つの p<.05 を未補正で扱うと、偽陽性の確率は 5% を大きく超えます(Simmons 2011:最悪の場合、61% まで上昇)。未補正は
stat_validitycritical です。 - 有意でない結果を「より良い」と扱う/見どころとして扱うのは絶対禁止です:q≥.05 または CI が 0 を含む → 証拠レベルは none → 執筆では**「有意差は確認されませんでした」としか報告できません。「優れている/向上した/より良い」と書くのは絶対に**禁止です。有意でない差は見どころではありません。
- 表現を証拠より強くするのは絶対禁止です:表現の強さは証拠レベルに一致させる必要があります(strong→実証する/証明する、moderate→改善する、weak→可能性を示唆する、none→「有意差は確認されませんでした」)。
evidence_strength.jsonは、スキル間で「表現を証拠より強くしない」ための唯一のデータソースであり、後続の paper-writing/research-ethics がこれに基づいて制御します。 - HARKing/選択的報告は絶対禁止です:結果によって仮説が否定された場合は、正直に報告し(research-plan に差し戻し)、仮説を事後に削除したり、「成功」した別の仮説に置き換えて当初の仮説として報告したりしては絶対になりません(Kerr 1998 の HARKing 第三類型)。N 個の比較を実行した場合、しきい値に達しなかったものも含め、N 個すべてを報告し、成功したものだけを選んで報告してはなりません。選択的報告は
stat_validitycritical です。 - 統計チェックを「手法の有効性/因果関係を証明した」と誇張するのは絶対禁止です:
stat_rigor_gateが確認するのは「多重比較が補正されているか/仮説が統計的に支持されるか/結果が安定しているか」です——自動チェックには限界があります。効果量の解釈、メカニズムの因果関係、外挿可能性の最終判断には、引き続き人間の判断/分野の知見が必要です。SHAP が示すのはモデルの関連性であり、因果性ではありません。因果関係の証拠として扱ってはなりません。限界を正直に明記してください。 - 黙って差し戻すのは絶対禁止です:仮説を支持しない(7→5)/再現できない(7→6)と判断した場合、それは意思決定の場面です——証拠を添えていったん止まり、ユーザーに確認してください(どこに戻すか/問題を抱えたまま進めて記録するか/既知の限界として扱うか)。自分だけで差し戻しを決めたり、問題を抱えたまま先に進めたりするのは絶対に禁止です。差し戻しは数か月分の方針を左右します。
- 統計上の行数を統計単位とみなす/ファミリーを分割して補正するのは絶対禁止です:
seed/fold/sampleが独立しているかどうかは研究デザインで決まり、CSV の行数では決まりません。反復測定/クラスター化/ネストされた CV/反復ホールドアウトでは、単純な t 検定だけで最終判断を下すことはできません。比較ファミリーは結果を見る前に計画で定義し、stablefamily_idと planned/reported coverage を維持する必要があります。補正を回避するために複数回の呼び出しに分割してはなりません。 - provenance の接続を捏造するのは絶対禁止です:現在の
evidence_strength.jsonに含まれるのは統計的な強さと表現の上限だけであり、完全な run provenance を意味するものではありません。claim/metric に source file/run/commit を付けることができるのは consistency 候補としてのみです。result-analysis から canonical.light/consistencyに直接書き込んではなりません。
自己チェックのトリガー:「p<.05 なら十分、補正は無視してよい/有意ではないけれど傾向が合っているから見どころになる/通りやすいように強めに表現しよう/仮説が支持されなかったから別のものに変えよう/10 個実行して一番良かったものを報告しよう/SHAP でこの特徴が結果を引き起こしたとわかる」と考えたときは、立ち止まってください。NEVER の第 1/2/3/4/5/6 条に違反している可能性が高く、または ASK にある差し戻し/p-hacking/表現に関する判断を見落としています。
指示フロー:どのスクリプトをいつ呼び出すか(エンジンは導入済みで、手動の selftest は exit 0。書き直さず、そのまま呼び出してください)
現在、11 個の Python スクリプトと 1 個の R スクリプトが scripts/ にあります。stat_rigor_gate/result_card_gate/analyze_results/
analysis_plan_audit は _shared(標準化された bootstrap)を使用します。統計処理には、可能な限り statsmodels/scipy を再利用します。DeLong は v1 を使用します(statsmodels にはありません)。
R のパスが依存するのは base R のみです。高度な R パッケージは項目ごとに検出し、インストール済みであるかのように扱いません。Windows では実行前に set PYTHONUTF8=1 を実行してください。
⓪ result card + analysis decision ledger gate(Round 3 で必須)
python scripts/result_card_gate.py --spec result_card.json \
--report result_card_findings.json --json-out result_card_report.json
light.result_card.v1 を入力します(テンプレートは templates/result-card.example.json を参照してください。不完全な状態にしてあるため、そのまま実行すると exit 1 になります)。各 claim には、as_of、target/analysis_set/missingness/provenance/assumption/guardrail_analysis/comparison_family/practical_threshold/effect/language の紐付けが必須です。provenance には少なくとも、source run IDs、run manifest/raw result/analysis code locator と SHA-256、computed_at、owner_skill を記録する必要があります。guardrail_analysis では適用の有無を明示し、適用する場合は guardrail evidence locator/SHA-256 と項目ごとの PASS/FAIL/WARN/UNKNOWN を紐付ける必要があります。locked_at/results_available_at/computed_at が未来の値であってはならず、computed_at は結果を確認できるようになった時刻より前であってはなりません。decision=REVISION_REQUIRED/UNKNOWN 自体が執筆への引き継ぎを阻止します。decision_ledger には、PRE/POST の結果に関する除外、指標の変更、モデル選択、サブグループ分割、しきい値などの分析上の意思決定を記録します。sensitivity では、sensitivity と supplementary を明確に区別します。p=0.049/0.051 でストーリーを逆転させてはなりません:q≥.05 または CI が 0 を含む場合に書けるのは「有意差は確認されませんでした/不確実」のみです。guardrail が FAIL/UNKNOWN の場合、CLAIM_READY にしてはなりません。しきい値付近では感度分析を開示してください。POST_RESULTS の EXCLUSION/METRIC/MODEL_CHOICE/SUBGROUP を CONFIRMATORY と偽ってはなりません。
① 統計的厳密性/証拠強度の critical ゲート → critical fail で exit 1(このスキルの核心)
# 编排 BH-FDR 真重算 + 消费 evidence_contract → light.findings.v1 + evidence_strength.json:
python scripts/stat_rigor_gate.py --spec stat_spec.json --report stat_findings.json --evidence-out evidence_strength.json
# 交总控聚合(stage 7 确认点,critical fail → exit 1 确定性阻断):
python ../light-orchestrator/scripts/run_checkpoint.py --file .light/passport.yaml --stage 7 \
--findings stat_findings.json --write --ts 2026-06-20T10:00
# p-hacking critical = 在 stage 7 内重做分析(reroute 给 manual);不支撑假设/不可复现 = 发起回边(见 ③)。
stat_spec.json:{project, claims[{claim_id,p,q_fdr?,effect_size,ci95,n,asserted_grade?,is_hypothesis?,hypothesis_id?,seeds?}], correction(none/bh/bonferroni), comparisons_run?, comparisons_reported?, results_csv?}。例は examples/stat_spec.example.json を参照してください。
② 結果テーブルから統計量を計算 + 証拠アーティファクトを生成(stat_rigor_gate が任意に実行するほか、単独でも実行可能)
python scripts/analyze_results.py results.csv --group method --metric acc f1 \
--paired-by seed --slice-by subgroup --emit-claim-table --emit-evidence # 自动选检验+效应量+FDR+两工件
python scripts/significance_test.py --selftest # p/d/CI/FDR/DeLong 函数库(对齐 scipy/statsmodels)
python scripts/leakage_overfit_check.py --train tr.csv --test te.csv --target y # 泄漏/过拟合体检
python scripts/explain_shap.py # SHAP 三图(非因果;shap 缺失优雅降级 exit 0)
②b 計画/デザイン/provenance と R の相互検証(Round 2)
# warn-only:缺计划锁/复杂设计/family/coverage/provenance 显式出现,但不扩大 critical 阻断面
python scripts/analysis_plan_audit.py --spec analysis_audit.json \
--report analysis_audit_findings.json --json-out analysis_audit_full.json
# 声明方法能力与真实研究条件;FAIL/UNRESOLVED 都不得直接用该方法终判
python scripts/method_compatibility.py --input examples/method_compatibility.example.json
python scripts/method_compatibility.py --selftest
# 同一真实两组比较走 base R;关键 p/mean_diff/effect 与 Python 交叉核数
python scripts/r_analysis_crosscheck.py --input results.csv --group method --metric acc \
--paired-by seed --out r_acc.csv
③ 差し戻しを起案:このスキルから上流に結果を返し、修正を依頼(7→5 / 7→6)
# stat_rigor_gate 判"不支撑假设/不可复现" → findings 带信号词 → 总控 reroute 按 ROUTES[7] 分流:
python ../light-orchestrator/scripts/reroute.py --findings stat_findings.json --stage 7 --passport .light/passport.yaml
# 不支撑假设(信号 假设/支撑/效应)→ 建议 7→5 回 research-plan;不可复现(信号 种子/复现)→ 建议 7→6 回 experiment-coding。
# 用户拍板回炉后落一等回边(记在目标阶段,不破拓扑):
python ../light-orchestrator/scripts/passport.py add-back-edge --to 5 --from 7 \
--root-cause "结果不支撑假设(效应量小/CI 含 0)" --evidence-ptr "<reroute 给的指针>" # 或 --to 6(不可复现)
python ../light-orchestrator/scripts/passport.py validate --file .light/passport.yaml # 回边不破拓扑 → 仍 PASS
各スクリプトの --selftest/--help がインターフェースです。ツールによる一次確認(statsmodels multipletests / scipy.stats / pingouin / SHAP は非因果 /
Evidently v7 の破壊的変更 / GRADE / Cohen's d·Cliff δ)については、references.md を参照してください。
研究者上級者レベルの掘り下げ:合格ラインは 4 つ(設計図 §4.3-7、加点項目ではありません)
① メカニズムを説明する(良し悪しの記述だけにとどめない)
段階的に掘り下げます:記述(指標±CIとベースラインの比較)→ 説明(アブレーションと組み合わせ、手法のどのコンポーネントに起因するかを特定)→ 診断(どの結果がイノベーションの有効性を示し、どの結果が問題や矛盾を明らかにするか) → 洞察(論文の見どころになり得るパターン、予想外の発見、説明可能性を裏付ける証拠)→ アクション(調査すべき異常、追加実験が必要な結論、過度に主張してはならない点)。
② 主張↔証拠を対応付ける+証拠の強さを段階評価する(強/中/弱/なし)
論文に記載できる各主張を、その検定/p値/q(FDR)/効果量/CI/n に対応付けます(claim_evidence_table.md)。evidence_contract.grade_evidence
で機械的に格付けします:strong(q<.01 かつ |d|≥.5 かつ CI が 0 を含まず、n≥30)/moderate(有意で中程度の効果)/weak(有意だが効果が小さい、またはサンプルサイズが小さい)/
none(有意でない、または CI が 0 を含む)。後続の処理ではこれに応じて表現を調整します——これが evidence_strength.json を最初に実際に利用する経路です(paper-writing も利用します)。
③ 統計的厳密さ(効果量/CI/多重比較。p だけを見ない)
p 値の三点セット(p 値+効果量+CI);多重比較補正(BH-FDR で FDR を制御/Bonferroni で FWER を制御し、有意性は q 値で判断);検定の自動選択(正規性+群数+等分散性。対応のあるデザインには対応のある検定を使用);検定の種類に応じた効果量(パラメトリック→Cohen's d+Hedges、ノンパラメトリック/順序尺度→より頑健な Cliff's δ)。統計上の誤り/p-hacking = critical(spec §4.2)。
④ 院士からの質問に備える(事前練習)
この改善は統計的に有意なのか、それともノイズなのか(未補正の p 値ではなく、補正後の q 値を確認)? 効果量はどれくらいか(p 値だけでなく d/δ を確認)? データセットや乱数シードを変えても成り立つか(頑健性、再現性。複数シードの平均±stdを報告)? p-hacking はないか(選択的報告/多重比較の未補正/HARKing/garden of forking paths)?——答えられないなら、分析は合格ラインに達していません。
最終 self-check(verdict の提示前/総合制御への書き戻し前に確認)
- 各 claim に p 値+効果量+CI の三点セットを用意し、未補正の p 値ではなく BH-FDR 補正後の q 値で有意性を判断していますか?
-
result_card_gate.pyを実行しましたか?各 claim の target、analysis set、missingness、assumption、guardrail_analysis、family、practical threshold、effect、language は、すべて 1 枚の result card に紐付いていますか? -
as_of、locked_at、results_available_at、computed_atはすべて実際に発生した時刻ですか?結果が確認可能になる前に分析を行ったり、未来の情報をあらかじめ入力したりしていませんか? - 各 result card の effect は source run IDs、run manifest/raw result/analysis code の locator と SHA-256 に紐付いていますか?根拠のない数値は排除されていますか?
-
decision_ledgerに PRE/POST 結果の除外、指標の変更、モデル選択、スライス、閾値が明記されていますか?POST_RESULTS の決定をCONFIRMATORYと偽っていませんか? - 複数の比較に多重比較補正(BH-FDR/Bonferroni)を行いましたか?実行した比較のすべてを報告していますか(選択的報告をしていませんか)?
- 有意でない結果は**「有意差は認められなかった」とのみ報告し、「より良い/見どころ」と扱っていませんか?表現の強さは証拠の格付けに見合って**いますか?
- p/q が 0.045~0.055 付近の場合、「閾値に敏感/不確実」と記載し、0.05 を境に表現を「有意な改善」へと変えていませんか?
-
evidence_strength.jsonを生成しましたか(各 claim に格付け+表現の上限を付け、paper-writing/research-ethics に渡す)? - analysis plan は結果を見る前に凍結しましたか?
unit_of_analysis、複雑なデザイン、comparisonfamily_id、planned/reported coverage、raw result hash/run manifest/commit を記録していますか? -
--paired-byを指定した場合、claim/evidence は対応のある主比較のみになっていますか?同じデータから独立した重複 claim を生成していませんか? - R が利用可能な場合、主要な比較について実際に交差検証しましたか?利用できない場合は、検出状況/機能低下を正直に記録し、「R E2E に合格」と記載していませんか?
- 主仮説は結果によって支持されていますか?支持されていない場合は、作業を止めてユーザーに確認し、research-plan(7→5)に戻っていますか?HARKing による仮説のすり替えはしていませんか?
- 結果は複数のシードで安定していますか(sign-flip なし/CV が許容範囲内)?不安定な場合は、作業を止めてユーザーに確認し、experiment-coding(7→6)に戻っていますか?
- 指標が不自然に良い場合、リークを調査しましたか(leakage_overfit_check)?
- 統計的な検定を**「手法の有効性/因果関係を証明した」**と誇張していませんか?(SHAP は因果を示しません。メカニズム/因果の最終判断は人が行います)
実態に即した価値の説明(誠実に、売り文句にしない)
真の増分価値(v2 で実現し、セルフテストと E2E で実測済み):⓪ result card + analysis decision ledger gate(result_card_gate.py、Round 3 で追加)——light.findings.v1 を生成し、target、analysis set、missingness、provenance、assumptions、guardrail_analysis、comparison family、practical threshold、effect、language と PRE/POST 分析判断台帳を紐付けます。p≈0.05 における言語の安定性、非有意結果の誤解釈、結果を見た後の confirmatory 偽装、sensitivity と supplementary の混同、guardrail が FAIL/UNKNOWN の後も強い claim を続けることを、いずれも機械可読な形で阻止できます。Round 3 では raw-run provenance とタイムラインも追加:各 claim に source run IDs、run manifest/raw result/analysis code locator と SHA-256 を必須とします。locked_at/results_available_at/computed_at を未来の日付で事前入力できず、REVISION_REQUIRED/UNKNOWN を ready と偽ることもできないため、孤立した数値や未完了の結果がそのまま執筆に入るのを防ぎます。さらに Round 3 では guardrail evidence の引き継ぎも補い、experiment-coding の guardrails.json が執筆前に消えるのを防ぎます。① 統計的厳密性/証拠強度の critical ゲート producer(stat_rigor_gate.py、v2 で純増した接続)——
BH-FDR の再計算(未補正の p が補正後に q≥.05 となる=偽陽性 → critical)をオーケストレーションし、さらに _shared/evidence_contract を参照して各 claim の等級を判定 →
light.findings.v1(producer=result-analysis)を生成します:多重比較の未補正/選択的報告/仮説の棄却/複数シードでの不安定性 → critical(
STAGE_GATES[7]=[stat_validity,evidence_strength] に準拠)、過剰な解釈/効果量の欠落 → warn。run_checkpoint --stage 7 に集約され、exit 1 を返します。
② 本スキルは 7→5/7→6 の 2 つの差し戻し経路の起点です(experiment-coding の「戻り先」とは逆です)——hypothesis_support が仮説を支持しないと判定 → findings に
「仮説/支持/効果」のシグナルを付与 → reroute で 7→5 を提案します。reproducibility が複数シードでの sign-flip/過大な CV と判定 → 「シード/再現性」のシグナルを付与 → 7→6 を提案します。
p-hacking の critical には意図的に 5/6 のシグナルを付けず → manual に reroute します(stage 7 内で修正)。戻り先を誠実に判定します(E2E の 3 経路で分岐が正しいことを実測済み)。③ 港 v1 の統計アセットで bootstrap と命名を修正:stats_tests/significance_test/analyze_results のハードコードされた ../../../code_assets、../../_shared を標準 bootstrap に修正し、m06/金矿1/m07/a10 を v2 スキル名に、source:m06:* を result-analysis:* に変更しました。④ evidence_strength.json は result-analysis↔
paper-writing/research-ethics をつなぐ橋です:本スキルが証拠強度を判定し、research-ethics(stage 8)が表現が証拠を超えていないかを確認します。evidence_contract は共有し、重複しません。
⑤ DeLong による相関 AUROC 比較を港 v1 に追加しました(statsmodels/scipy にはなく、sklearn の roc_auc_score と照合してセルフテスト済み)。
素のモデルがもともとできること(誇張しない):「有意性検定を行う」「p だけでなく効果量も報告する」「多重比較を補正する」「強すぎる表現を避ける」「SHAP は因果を示さない」——素の Opus でも言えます。
増分価値はほぼゼロです。本スキルの価値は、① p-hacking/証拠強度を、決定論的な critical の機械可読ゲートと決定論的な阻止に落とし込むこと(素のモデルは「補正が必要」と口では言っても、手元では未補正の
p<.05 を有意として報告します。オーケストレーターは「口で言ったこと」を読めず、light.findings.v1 の判定を読み取ります)、② BH-FDR を実際に再計算して偽陽性を判定すること(「忘れずに補正してください」と注意するのではなく、「この 4 件は補正後の q≥.05」と実際に計算します)、③ claim↔証拠等級の単一データソース(evidence_strength.json が下流 5 スキルにわたって表現を制御します。素のモデルでは各箇所を個別の感覚で判断します)、④ 機械可読な findings と根本原因に基づく差し戻しの起動(result-analysis は 7→5/7→6 の差し戻しハブです。素のモデルには、この非線形なオーケストレーションの閉ループがありません)。
誠実に認める未達項目(未対応と分かっていること):
- 互換性ゲートの依存事項を誠実に明示:
method_compatibility.pyは既知の非互換性を拒否し、未知の条件を明示できますが、サードパーティの手法に関する申告が真実であることを自動的に証明するものではありません。また、統計的識別、実装の正しさ、結果の信頼性、因果的妥当性も証明しません。 - 統計チェックには限界があり、「結論が正しい」と証明するものではありません:
stat_rigor_gateが確認するのは「多重比較が補正されているか/仮説が統計的に支持されているか/結果が安定しているか」であり、「手法が本当に有効/因果関係が成立していることの証明」では決してありません。効果量の解釈、機序の因果関係、一般化可能性についての最終判断は、依然として人間/専門分野の判断が必要です。機械チェックが示すのは「統計的に成り立つか」の必要条件です。 - p-hacking の判定は申告と機械チェック可能なシグナルに依存します:ゲートは計画で申告された「いくつ実行したか/いくつ報告したか/補正したか」を読み取ります。garden of forking paths による潜在的な多重比較 (データに依存した分析選択)は、機械ではすべて検出できず、注意喚起にとどまります。ある分析選択が妥当かどうかは判定しません(GIGO)。申告されていないことを捏造して見逃すこともありません。
- 証拠の等級付けで考慮するのは統計的強度のみ(evidence_contract を継承):GRADE の他の 4 領域(バイアス/不一致/間接性/出版バイアス)は体系的に評価・格下げしません。複数データセットにおける「不一致」の領域での格下げは拡張ポイントであり、現時点でfull GRADE を装うことはしません。
- 効果量の大きさの閾値は慣例です:d 0.2/0.5/0.8 は分野によって異なります。小標本(n<30)では効果量の推定が不安定なため、weak を上限とします。Cliff's δ は今後対応予定(v1/v2 で現在算出するのは Cohen's d のみ)。
- SHAP は因果を示さず、Evidently はバージョンに敏感です:SHAP が示すのはモデルが学習した関連性であり、因果関係ではありません。Evidently v7.0(2025-04)では破壊的変更があり、旧
DataDriftPresetAPI はevidently.futureに移行しています——使用前に必ずバージョンを確認してください(鉄則 2 で一次情報を確認して判明した問題)。いずれも critical ゲートではなく、洞察/参考情報としてのみ扱います。 - 実験を自動実行したり、結論を代わりに出したりはしません:本スキルが扱うのは「結果が統計的に成り立つか+各 claim にどの強さの証拠が対応するか」であり、不足している実験を補完するものではありません(experiment-coding に差し戻します)。因果関係や機序について最終判断を下すものでもありません(人間と専門分野の知識が必要です)。
標準の成果物:結果分析レポート(現象→原因→証拠→論文にとっての意義)・
claim_evidence_table.md(claim↔証拠)・evidence_strength.json(証拠等級→表現等級、paper-writing/research-ethics に引き継ぎ)・stat_findings.json(統計的厳密性/証拠強度ゲート)・推奨図表一覧(figure に引き継ぎ)。 強み → paper-writing の執筆を支援します。仮説を支持しない → research-plan に差し戻し(7→5)。再現できない → experiment-coding に差し戻し(7→6)。結論台帳は memory-pm に引き継ぎます。
参考(三级渐进披露:需要时再读)
- 对标真相源:
docs/competitors/result-analysis.md(Round 2 真搜: 8 个真同类 SKILL + statsmodels/scipy/base R/规范等机制锚;每条带整仓 star、commit、路径、行号) - 真实用户资源闭环:
result-analysis-resource-map.md(分析计划→raw runs→ 设计感知统计→稳健性→claim/provenance→总控;含 Python/R 双路径与资源访问分级) - 工具一手核查笔记(真实命令/机制/已知坑/版本敏感):
references.md - 引擎脚本:
scripts/——各 Python 脚本--selftest/--help即接口,R 脚本有--selftest;stat_rigor_gate.py(critical 门)、analysis_plan_audit.py(warn-only 计划/设计/provenance)、method_compatibility.py(方法×数据×访问条件兼容门)、analyze_results.py(设计感知检验+FDR+两工件)、r_analysis_crosscheck.py/.R(base-R 交叉核验)、significance_test.py(p/d/CI/FDR/DeLong)、make_figs.py/explain_shap.py/leakage_overfit_check.py - 报告模板:
assets/result_analysis_report_template.md(四段式 + 亮点/异常/待补实验 + 回炉判定) - 端到端范例:
examples/worked_example.py(EDA→显著性→图→泄漏体检→报告)·examples/stat_spec.example.json(stat_rigor_gate 输入) - 方法适用性示例:
examples/method_compatibility.example.json - 地基契约:
_shared/README.md(evidence_contract核心消费 ·findings_schema·gate_runner· 规范 bootstrap) - 上游/下游:
light-experiment-coding(stage 6,run_manifest.md多种子指标;7→6 回炉目标)·light-research-plan(stage 5,7→5 回炉目标)·light-research-ethics(stage 8claim_evidence_bind消费evidence_strength.json查措辞)·run_checkpoint.py(stage 7 聚合 exit 1)·reroute.py(ROUTES[7] 两条出边 7→5/7→6)· paper-writing(stage 8,据证据档校准措辞)