Files
AIclinicalresearch/docs/03-业务模块/RVW-稿件审查系统/04-开发计划/RVW V2.0 统计方法可验证性分析报告.md
HaHafeng e785969e54 feat(rvw): Implement RVW V2.0 Data Forensics Module - Day 6 StatValidator
Summary:
- Implement L2 Statistical Validator (CI-P consistency, T-test reverse)
- Implement L2.5 Consistency Forensics (SE Triangle, SD>Mean check)
- Add error/warning severity classification with tolerance thresholds
- Support 5+ CI formats parsing (parentheses, brackets, 95% CI prefix)
- Complete Python forensics service (types, config, validator, extractor)

V2.0 Development Progress (Week 2 Day 6):
- Day 1-5: Python service setup, Word table extraction, L1 arithmetic validator
- Day 6: L2 StatValidator + L2.5 consistency forensics (promoted from V2.1)

Test Results:
- Unit tests: 4/4 passed (CI-P, SE Triangle, SD>Mean, T-test)
- Real document tests: 5/5 successful, 2 reasonable WARNINGs

Status: Day 6 completed, ready for Day 7 (Skills Framework)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:15:27 +08:00

603 lines
26 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# RVW V2.0 统计方法可验证性分析报告
**创建日期**: 2026-02-17
**最后更新**: 2026-02-17
**文档版本**: v1.2 (含终审意见)
**测试文档数**: 5 篇
**分析视角**: 医学统计学原理
**审查状态**: ✅ 通过终审,已纳入工程实现建议
---
## 1. 核心原则:可验证性取决于信息完整性
> **关键洞察**能否验证统计结果取决于论文是否报告了足够的汇总统计量Summary Statistics。这不是编程问题而是统计学原理决定的。
### 1.1 统计验证的三个层次
| 层次 | 验证内容 | 示例 |
|------|---------|------|
| **L1: 算术一致性** | 基础数学计算 | n/N = %,合计=各项之和 |
| **L2: 统计量重算** | 从汇总数据反推检验统计量 | 从 M±SD 和 n 计算 t 值 |
| **L2.5: 一致性取证** | 🆕 统计量之间的数学约束关系 | CI↔P, Z↔P 一致性检查 |
| **L3: 模型重拟合** | 重新拟合统计模型 | 重跑 Logistic 回归 |
**核心限制**
- L1 和 L2 可以从论文表格实现
- **L2.5 是专家审查后新增的关键维度**(见第 8 节)
- **L3 需要原始数据,从根本上无法仅凭论文验证**
---
## 2. 统计方法可验证性分类
### 2.1 ✅ 容易验证(有明确公式,信息通常充分)
| 方法 | 验证公式 | 所需信息 | 论文通常报告 | 验证可行性 |
|------|---------|---------|-------------|-----------|
| **百分比计算** | `% = n/N × 100` | n, N | ✅ 通常报告 | **极易** |
| **独立样本 t 检验** | `t = (M₁-M₂) / √(SD₁²/n₁ + SD₂²/n₂)` | M, SD, n | ✅ 通常报告 | **易** |
| **卡方检验 (2×2)** | `χ² = Σ(O-E)²/E` | 频数表 (n, %) | ✅ 通常报告 | **易** |
| **CI 与 P 值一致性** | 95% CI 是否包含 0/1 | CI, P | ✅ 通常报告 | **易** |
| **OR/HR/RR 与 CI 一致性** | `ln(OR) ± 1.96×SE = CI` | OR, 95% CI | ✅ 通常报告 | **易** |
**统计学原理**
- 这些检验有**封闭形式的计算公式**
- 论文的标准报告格式(如 APA、CONSORT要求报告这些汇总统计量
- 可以通过代数运算反推检验统计量
**验证示例**
```
表格数据: 治疗组 45.2±12.3 (n=50), 对照组 38.7±11.8 (n=48), t=2.65, P=0.009
验证计算:
SE = √(12.3²/50 + 11.8²/48) = √(3.03 + 2.90) = 2.43
t = (45.2 - 38.7) / 2.43 = 2.67
结论: 报告 t=2.65,计算 t=2.67,误差 0.8%,在容许范围内 ✅
```
---
### 2.2 ⚠️ 中等难度验证(理论可行,但信息常不完整)
| 方法 | 验证原理 | 所需信息 | 论文通常报告 | 验证障碍 |
|------|---------|---------|-------------|---------|
| **配对 t 检验** | `t = d̄ / (SD_d/√n)` | 差值的均值和SD | ❌ 通常只报告前后各自的M±SD | 无法获得差值SD |
| **单因素 ANOVA** | `F = MS_between / MS_within` | 各组 M, SD, n | ✅ 通常报告 | 计算复杂,需合并方差 |
| **Fisher 精确检验** | 超几何分布精确计算 | 2×2 频数表 | ✅ 通常报告 | 阶乘计算,小样本适用 |
| **Pearson 相关** | `t = r×√(n-2) / √(1-r²)` | r, n | ✅ 通常报告 | 只能验证 r↔t 一致性,不能验证 r 本身 |
| **卡方检验 (R×C)** | 多自由度卡方计算 | 完整频数表 | ⚠️ 常简化报告 | 大表格信息常不完整 |
**统计学原理**
- 这些方法**有公式**,但论文报告格式不总是提供所有必需参数
- 配对 t 检验的核心问题:配对差值的变异性 (SD_d) 通常不报告
- ANOVA 可以验证,但需要理解组间/组内方差分解
**配对 t 检验的本质问题**
```
论文报告:
治疗前: 120.5 ± 15.2 mmHg
治疗后: 108.3 ± 14.8 mmHg
t = 5.23, P < 0.001
无法验证的原因:
配对 t = d̄ / (SD_d / √n)
d̄ = 120.5 - 108.3 = 12.2 ✓ 可知
SD_d = ? ← 这个值论文通常不报告!
SD_d ≠ √(SD₁² + SD₂²),因为前后测量是相关的
SD_d = √(SD₁² + SD₂² - 2×r×SD₁×SD₂)
需要知道前后相关系数 r但论文不报告
```
---
### 2.3 ❌ 无法从根本上验证(需要原始数据)
| 方法 | 验证原理 | 为什么无法验证 | 可做的有限检查 |
|------|---------|---------------|--------------|
| **Logistic 回归** | 最大似然估计 | OR、SE 来自迭代拟合,无封闭公式 | 🆕 SE 三角关系验证 (CI↔P) |
| **Cox 比例风险回归** | 部分似然估计 | HR 来自生存时间拟合 | 🆕 SE 三角关系验证 (CI↔P) |
| **线性多元回归** | 最小二乘估计 | β 系数需矩阵运算 | 🆕 SE 三角关系验证 (β↔P) |
| **Mann-Whitney U** | 秩和统计量 | 需要原始秩次排列 | 🆕 Z↔P 一致性检查 |
| **Wilcoxon 符号秩** | 配对秩差统计量 | 需要原始配对差值的秩 | 🆕 Z↔P 一致性检查 |
| **Kruskal-Wallis H** | 秩方差分析 | 需要各组原始秩次 | H↔P 一致性检查 |
| **Kaplan-Meier 生存曲线** | 乘积极限法 | 需要个体生存时间和删失状态 | 报告的中位生存时间合理性 |
| **Log-rank 检验** | 生存曲线比较 | 需要完整的生存数据 | 检验统计量与 P 值一致性 |
| **ROC/AUC 分析** | 敏感性-特异性曲线 | 需要每个个体的预测值和真实分类 | 报告的敏感性/特异性格式 |
| **重复测量 ANOVA** | 球形性校正 | 需要完整的重复测量矩阵 | 基本无法验证 |
| **混合效应模型** | REML/ML 估计 | 需要层级结构数据 | 无法验证 |
**统计学原理**
**1. 回归分析为什么无法验证?**
```
Logistic 回归: log(p/(1-p)) = β₀ + β₁X₁ + β₂X₂ + ...
问题:
- β 系数通过最大似然估计的牛顿-拉弗森迭代得到
- 没有封闭形式的公式: β = f(数据)
- 必须有原始数据才能重新拟合
我们能做的:
- 检查 OR = exp(β) ✓
- 检查 95% CI = exp(β ± 1.96×SE) ✓
- 🆕 SE 三角关系验证 (详见第 8 节)
- 但无法验证 β 和 SE 本身是否正确
```
**2. 非参数检验为什么无法验证?**
```
Mann-Whitney U 检验:
论文报告: U = 245, Z = -2.35, P = 0.019
问题:
- U = n₁n₂ + n₁(n₁+1)/2 - R₁
- R₁ 是第一组的秩和
- 秩次需要将两组数据合并排序后得到
- 论文只报告中位数和四分位距,不报告原始数据
我们能做的:
- 🆕 Z↔P 一致性检查 (详见第 8 节)
- 但无法验证 U 值本身
```
**3. 生存分析为什么无法验证?**
```
Kaplan-Meier 生存率:
S(t) = Π[(nᵢ - dᵢ) / nᵢ]
问题:
- 需要每个时间点的风险人数 nᵢ 和事件数 dᵢ
- 论文通常只报告中位生存时间和曲线图
- 无法从图中精确反推所有数据点
```
---
## 3. 测试文档中的方法分析
### 3.1 按可验证性分类
```
┌─────────────────────────────────────────────────────────────┐
│ 5 篇测试文档统计方法 │
├─────────────────────────────────────────────────────────────┤
│ ✅ 容易验证 (2种) │ 出现频率 │ MVP 实现 │
│ ├─ t 检验 │ 4/5 │ ✅ Week 2 │
│ └─ χ² 卡方检验 │ 4/5 │ ✅ Week 2 │
├─────────────────────────────────────────────────────────────┤
│ ⚠️ 中等难度 (2种) │ 出现频率 │ V2.1 评估 │
│ ├─ 单因素 ANOVA │ 3/5 │ 🔄 可实现 │
│ └─ 配对 t 检验 │ 1/5 │ ⚠️ 信息常不足 │
├─────────────────────────────────────────────────────────────┤
│ 🆕 一致性可验 (4种) │ 出现频率 │ V2.1 实现 │
│ ├─ Logistic 回归 │ 2/5 │ SE 三角验证 │
│ ├─ Mann-Whitney │ 5/5 │ Z↔P 一致性 │
│ ├─ 线性回归 │ 1/5 │ SE 三角验证 │
│ └─ Spearman 相关 │ 1/5 │ r↔P 一致性 │
├─────────────────────────────────────────────────────────────┤
│ ❌ 无法验证 (3种) │ 出现频率 │ 仅识别 │
│ ├─ ROC/AUC │ 1/5 │ 格式检查 │
│ ├─ LSD 事后检验 │ 1/5 │ 无法验证 │
│ └─ Kruskal-Wallis │ 1/5 │ H↔P 检查 │
└─────────────────────────────────────────────────────────────┘
```
### 3.2 各文档详细分析
| 文档 | 可验证方法 | 一致性可验 | 无法验证 |
|------|-----------|-----------|---------|
| 静脉溶栓分析 | χ² | Mann-Whitney | Kruskal-Wallis, Bonferroni |
| 脑卒中偏瘫 | t, χ² | ANOVA, Mann-Whitney | LSD |
| 高血压脑出血 | t, χ² | ANOVA, Mann-Whitney, Logistic, Spearman | ROC |
| 功能性电刺激 | t, χ² | 配对t(边界), Mann-Whitney | - |
| 骶骨瘤输血 | t | ANOVA, Mann-Whitney, Logistic | - |
---
## 4. MVP 验证策略(终审更新)
### 4.1 优先实现Week 1 Day 3- 🆕 提权
| 方法 | 验证逻辑 | 公式 | 容错阈值 |
|------|---------|------|---------|
| **t 检验** | 从 M±SD, n 反推 t 值 | `t = (M₁-M₂) / √(SD₁²/n₁ + SD₂²/n₂)` | ±5% |
| **χ² 检验** | 从频数表反推 χ² 值 | `χ² = Σ(O-E)²/E` | ±5% |
| **CI↔P 一致性** | CI 包含 0/1 与 P<0.05 逻辑一致 | 逻辑判断 | 逻辑错误即报警 |
| 🆕 **SE 三角验证** | 回归系数 CI↔P 一致性 | `SE = (ln(UCL) - ln(LCL)) / 3.92` | P 值偏差 ±0.01 报 Warning>0.05 报 Error |
| 🆕 **SD > Mean 检查** | 正值指标的启发式规则 | `if metric_positive and SD > Mean: Error` | 直接报 Error |
> **终审关键建议**"SE 三角验证" 从 V2.1 提权到 MVP。理由代码极简单比 ANOVA 简单、回归分析在核心期刊太常见、ROI 极高。
### 4.2 V2.1 评估实现
| 方法 | 可行性 | 实现难度 | 备注 |
|------|--------|---------|------|
| **单因素 ANOVA** | ✅ 可行 | 中等 | 需计算组间/组内均方 |
| **Fisher 精确检验** | ✅ 可行 | 中等 | 2×2 表可用 scipy.stats |
| **🆕 SE 三角验证** | ✅ 可行 | 简单 | Logistic/Cox/线性回归 |
| **🆕 Z↔P 一致性** | ✅ 可行 | 简单 | Mann-Whitney 等非参数 |
| **🆕 启发式检查** | ✅ 可行 | 简单 | SD>Mean, N vs df |
### 4.3 仅标记不验证
| 方法 | 原因 | 可提供的帮助 |
|------|------|------------|
| ROC/AUC | 需预测值 | 提醒审稿人关注曲线图 |
| 重复测量ANOVA | 需完整矩阵 | 标记使用了复杂方法 |
| 混合效应模型 | 需层级数据 | 标记使用了复杂方法 |
---
## 5. 统计学原理总结
### 5.1 可验证性决定因素
```
┌──────────────────────────────────────────────────────────────┐
│ 可验证性 = f(信息完整性, 公式封闭性) │
├──────────────────────────────────────────────────────────────┤
│ │
│ 封闭公式 ──┬── 信息完整 ──→ ✅ 可验证 (t, χ²) │
│ │ │
│ └── 信息不完整 ─→ ⚠️ 部分可验证 (配对t, ANOVA) │
│ │
│ 迭代拟合 ──┬── 数学约束存在 → 🆕 一致性可验 (回归) │
│ │ │
│ └── 无约束关系 ──→ ❌ 无法验证 (生存曲线) │
│ │
│ 秩次统计 ──┬── 大样本近似 ──→ 🆕 Z↔P 一致性 (Mann-Whitney) │
│ │ │
│ └── 小样本 ──────→ ❌ 无法验证 │
│ │
└──────────────────────────────────────────────────────────────┘
```
### 5.2 医学论文统计审查的现实
| 现实情况 | 对验证的影响 |
|---------|------------|
| APA/CONSORT 格式要求报告 M±SD, n | t 检验和卡方检验通常可验证 |
| 配对数据的差值 SD 几乎不报告 | 配对 t 检验难以验证 |
| 回归分析报告 OR, CI, P | 🆕 可做 SE 三角一致性验证 |
| 非参数检验报告 Z, P | 🆕 可做 Z↔P 一致性验证 |
| 复杂模型(混合效应等)| 完全无法验证 |
### 5.3 系统价值定位
```
┌─────────────────────────────────────────────────────────────┐
│ RVW V2.0 数据侦探的价值: │
│ │
│ 1. 捕获"低级错误": 算术错误、格式错误、明显不一致 │
│ → 这些错误在实际论文中出现率约 10-20% │
│ │
│ 2. 验证最常用方法: t 检验和卡方检验覆盖 80% 的论文 │
│ → 这是投入产出比最高的验证点 │
│ │
│ 3. 🆕 一致性取证: 利用统计量的数学约束关系 │
│ → 造假者往往不懂这些关系,容易露出破绽 │
│ │
│ 4. 提供审稿线索: 标记使用了哪些方法,提醒人工关注 │
│ → 辅助审稿人,而非替代审稿人 │
│ │
│ 5. 诚实的边界: 明确告知哪些无法验证 │
│ → 避免给审稿人虚假的安全感 │
└─────────────────────────────────────────────────────────────┘
```
---
## 6. 验证能力完整矩阵
| 方法 | 类别 | 可识别 | 可验证 | 验证原理 | 实现阶段 |
|------|------|:------:|:------:|---------|:--------:|
| 百分比计算 | 描述统计 | ✅ | ✅ | n/N=% | MVP |
| t 检验 | 参数检验 | ✅ | ✅ | M,SD,n→t | MVP |
| χ² 卡方检验 | 非参数检验 | ✅ | ✅ | 频数表→χ² | MVP |
| CI↔P 一致性 | 逻辑检查 | ✅ | ✅ | 逻辑判断 | MVP |
| 🆕 SD>Mean 检查 | 启发式 | ✅ | ✅ | 正值指标 | MVP |
| 🆕 N vs df 检查 | 启发式 | ✅ | ✅ | 自由度交叉验证 | MVP |
| OR/HR↔CI | 格式检查 | ✅ | ✅ | exp(ln±1.96SE) | V2.1 |
| 单因素 ANOVA | 参数检验 | ✅ | ⚠️ | 组间/组内方差→F | V2.1 |
| Fisher 精确 | 非参数检验 | ✅ | ⚠️ | 超几何分布 | V2.1 |
| Pearson r↔t | 相关分析 | ✅ | ⚠️ | r,n→t | V2.1 |
| 🆕 Logistic 回归 | 回归分析 | ✅ | ⚠️ | SE 三角验证 | V2.1 |
| 🆕 Cox 回归 | 生存分析 | ✅ | ⚠️ | SE 三角验证 | V2.1 |
| 🆕 线性回归 | 回归分析 | ✅ | ⚠️ | SE 三角验证 | V2.1 |
| 🆕 Mann-Whitney | 非参数检验 | ✅ | ⚠️ | Z↔P 一致性 | V2.1 |
| 🆕 Wilcoxon | 非参数检验 | ✅ | ⚠️ | Z↔P 一致性 | V2.1 |
| 配对 t 检验 | 参数检验 | ✅ | ⚠️ | 🆕 r 边界探测 | V2.1 |
| Kruskal-Wallis | 非参数检验 | ⚠️ | ⚠️ | H↔P 一致性 | V2.1 |
| Kaplan-Meier | 生存分析 | ⚠️ | ❌ | 需事件数据 | - |
| Log-rank | 生存分析 | ⚠️ | ❌ | 需生存数据 | - |
| ROC/AUC | 诊断分析 | ⚠️ | ❌ | 需预测值 | - |
| Spearman | 相关分析 | ⚠️ | ⚠️ | r↔P 一致性 | V2.1 |
| 重复测量ANOVA | 参数检验 | ✅ | ❌ | 需完整矩阵 | - |
| LSD/Bonferroni | 事后检验 | ⚠️ | ❌ | 依赖主检验 | - |
**图例**: ✅ 完全支持 | ⚠️ 部分支持/一致性验证 | ❌ 不支持
---
## 7. 结论
### 7.1 统计学真相
> **"没有原始数据,就没有真正的验证。"**
但我们可以从"无法重算"转向"一致性取证"
- 我们能做的是**一致性检查**Consistency Check而非**正确性验证**Correctness Verification
- 🆕 **统计量之间存在数学约束关系**,造假者往往破坏这些关系
### 7.2 MVP 价值
即使只验证 **t 检验****卡方检验**
- 覆盖 **80%** 的测试文档
- 这两种方法是医学研究中**最常用**的统计检验
- 能捕获大量**低级计算错误**
### 7.3 诚实的系统
RVW V2.0 数据侦探:
- ✅ 验证能验证的t, χ², 算术)
- 🆕 一致性取证Logistic, Cox, Mann-Whitney
- ⚠️ 标记能识别但无法验证的
- ❌ 诚实承认无法验证的边界
---
## 8. 🆕 专家二审补充:一致性取证方法
> **核心观点**:从"无法重算"转向"一致性取证"。即使没有原始数据,数学逻辑的闭环依然存在。造假者通常不懂统计学原理,他们编造的数据往往破坏了数学上的协变关系。
### 8.1 SE 三角关系验证Logistic/Cox/线性回归)
**原理**回归结果的四个核心指标Estimate, SE, 95% CI, P在数学上是锁死的只要知道其中任意两个就能推算出另外两个。
**验证公式 (The Triangle Check)**
1. **从 CI 反推 SE**(对于 OR/HR 比值类):
```
SE = (ln(CI_upper) - ln(CI_lower)) / 3.92
```
*(3.92 = 1.96 × 2)*
2. **计算 Z 统计量**
```
Z = |ln(estimate)| / SE
```
3. **计算 P 值**
```
P = 2 × (1 - Φ(|Z|))
```
**实战案例**
```
论文报告: OR = 2.5, 95% CI (1.1 - 3.5), P = 0.001
系统验证:
1. SE = (ln(3.5) - ln(1.1)) / 3.92 = 0.295
2. Z = |ln(2.5)| / 0.295 = 3.10
3. P_calc = 2 × (1 - Φ(3.10)) = 0.002
结论: 报告 P=0.001,计算 P=0.002,高度一致 ✅
```
**反例(造假)**:如果作者手写了 P=0.0001,系统算出 0.002,差异巨大 → **报警**
**Python 实现**
```python
import scipy.stats as stats
import numpy as np
def verify_regression(est, ci_lower, ci_upper, p_reported):
# 1. 转换到对数尺度 (如果是 OR/HR)
log_est = np.log(est)
log_lo = np.log(ci_lower)
log_hi = np.log(ci_upper)
# 2. 反推 SE
se_est = (log_hi - log_lo) / 3.92
# 3. 计算 Z 和 P
z_score = abs(log_est / se_est)
p_calc = stats.norm.sf(z_score) * 2
# 4. 比对
return abs(p_calc - p_reported) < 0.05
```
**开发团队评估**:✅ **完全认可**,应纳入 V2.1 高优先级实现
---
### 8.2 Z 值与 P 值一致性检查Mann-Whitney 等非参数检验)
**原理**:当样本量 n > 20 时,非参数检验的统计量近似正态分布,作者通常会报告 Z 值。
**验证点**:检查 Z 值与 P 值是否对应。
```
Z = -2.35 → P = 2 × Φ(-2.35) ≈ 0.019
```
**常见造假模式**:编造 Z=-1.5,却写 P=0.001(实际应为 0.13
**开发团队评估**:✅ **完全认可**V2.1 实现
---
### 8.3 配对 t 检验的边界验证
**原理**:虽然不知道前后相关系数 r范围 -1 到 1但可以计算 t 值的理论最大值和最小值。
```
SD_d = √(SD₁² + SD₂² - 2×r×SD₁×SD₂)
t_max (当 r=-1): SD_d = SD₁ + SD₂
t_min (当 r=1): SD_d = |SD₁ - SD₂|
```
**验证逻辑**:如果作者报告的 t 值跑到了 [t_min, t_max] 范围之外 → **数学上不可能**
**开发团队评估**:⚠️ **部分认可**
- 原理正确,可以检测极端错误
- 但实际价值有限r 通常在 0.3-0.9 之间)
- 建议作为补充检查,标记为"边界探测"
---
### 8.4 启发式检查规则
#### 8.4.1 均值与标准差的合理性 (SD > Mean)
**规则**:对于不可能为负数的生理指标(如血压、血糖、住院天数),如果 SD > Mean提示数据极度偏态或有误。
**案例**
```
住院天数: 7.5 ± 8.2 天
→ 根据正态分布,这意味着有大量病人的住院天数是负数
→ 生物学上不可能
→ 提示:"SD 过大,数据可能非正态分布,建议使用中位数描述"
```
**开发团队评估**:✅ **完全认可**,可纳入 MVP
#### 8.4.2 样本量与自由度 (N vs df)
**规则**:很多统计量的自由度 df 直接关联样本量 N。
```
t 检验: df = n₁ + n₂ - 2
卡方检验: df = (r-1)(c-1)
```
**验证点**:如果作者报告 df=98但表格里两组加起来只有 40 人,那就是直接抄了别人的数据。
**开发团队评估**:✅ **完全认可**,可纳入 MVP
#### 8.4.3 Table 1 的"完美"陷阱 (P 值分布检查)
**规则**在随机对照试验RCT的 Table 1基线表P 值不应该全部 > 0.9。
**逻辑**随机化意味着差异是随机的P 值应该均匀分布在 0-1 之间。如果 Table 1 里 10 个指标的 P 值都是 0.95, 0.98, 0.99,这通常是人工编造数据的特征。
**开发团队评估**:⚠️ **部分认可**
- 统计学原理正确
- 但存在假阳性风险
- 建议作为"提示"而非"报警"
- 话术:"基线数据一致性较高,建议审稿人关注随机化方法"
---
### 8.5 修正后的验证能力矩阵
| 方法 | 原判定 | 专家修正 | 最终判定 | 验证手段 |
|------|--------|----------|----------|----------|
| **Logistic/Cox 回归** | ❌ 无法验证 | ✅ 强验证 | ✅ **一致性验证** | SE 三角关系 (CI↔P) |
| **线性回归** | ❌ 无法验证 | ✅ 强验证 | ✅ **一致性验证** | SE 三角关系 (β↔P) |
| **配对 t 检验** | ❌ 无法验证 | ⚠️ 边界验证 | ⚠️ **边界探测** | r 值边界法 |
| **Mann-Whitney** | ❌ 无法验证 | ⚠️ 近似验证 | ✅ **一致性验证** | Z↔P 一致性 |
| **SD vs Mean** | - | ✅ 逻辑验证 | ✅ **启发式检查** | SD > Mean 检测 |
| **N vs df** | - | ✅ 逻辑验证 | ✅ **启发式检查** | 自由度交叉验证 |
| **Table 1 P 分布** | - | ⚠️ 概率验证 | ⚠️ **提示性检查** | P 值分布分析 |
---
### 8.6 话术规范
对于高级验证,系统提示语应严谨:
| 问题类型 | 推荐话术 | 避免使用 |
|---------|---------|---------|
| CI↔P 不一致 | "置信区间与 P 值不匹配" | "数据错误" |
| Z↔P 不一致 | "统计量内部不一致" | "造假" |
| SD > Mean | "标准差相对于均值过大,建议核查数据分布" | "数据有问题" |
| Table 1 完美 | "基线数据一致性较高,建议关注随机化方法描述" | "可能是编造的" |
---
## 9. 🆕 终审工程挑战与应对策略
终审报告指出了两个关键的工程挑战:
### 9.1 CI 格式解析的鲁棒性
**挑战**:医学论文中 CI 的格式千奇百怪:
- `2.5 (1.1-3.5)`
- `2.5 (1.1, 3.5)`
- `2.5 [1.1; 3.5]`
- `2.5 (95% CI: 1.1 to 3.5)`
**应对策略**
```python
# CI 字符串清洗器正则表达式
CI_PATTERNS = [
r'(\d+\.?\d*)\s*[\(\[]\s*(\d+\.?\d*)\s*[-,;to]+\s*(\d+\.?\d*)\s*[\)\]]', # 标准格式
r'95%?\s*CI\s*[:\s]*(\d+\.?\d*)\s*[-,;to]+\s*(\d+\.?\d*)', # 带 CI 标签
]
def parse_ci_string(text: str) -> tuple[float, float] | None:
"""提取 CI 的下限和上限,容错处理多种分隔符"""
for pattern in CI_PATTERNS:
match = re.search(pattern, text, re.IGNORECASE)
if match:
return float(match.group(-2)), float(match.group(-1))
return None
```
### 9.2 舍入误差的容错阈值
**挑战**:作者报告的 OR=2.5 可能是 2.49 或 2.51 舍入来的,导致反推的 P 值有轻微偏差。
**应对策略**(终审建议采纳):
```python
# 容错阈值配置
TOLERANCE_CONFIG = {
"p_value_absolute": 0.01, # P 值绝对误差 ±0.01
"p_value_relative": 0.05, # P 值相对误差 ±5%
"ci_relative": 0.02, # CI 端点相对误差 ±2%
}
def classify_discrepancy(calculated_p: float, reported_p: float) -> str:
"""根据偏差程度分类问题严重性"""
abs_diff = abs(calculated_p - reported_p)
rel_diff = abs_diff / max(reported_p, 0.001)
if abs_diff > 0.05: # 严重矛盾
return "ERROR" # 🔴 算出 <0.001,报告 >0.05
elif abs_diff > TOLERANCE_CONFIG["p_value_absolute"]:
return "WARNING" # 🟡 可能是舍入误差
else:
return "OK" # 在容错范围内
```
### 9.3 问题严重程度分级(终审强调)
| 级别 | 标准 | 示例 |
|------|------|------|
| 🔴 **Error** | 数据确定性错误 | 算术错误、P 值严重矛盾(>0.05 差异、SD > Mean |
| 🟡 **Warning** | 疑似问题 | P 值轻微偏差、Table 1 P 值完美、无法验证仅提示 |
| 🔵 **Info** | 提示信息 | 未检测到方法、跳过表格 |
---
## 10. 变更记录
| 版本 | 日期 | 变更内容 |
|------|------|---------|
| v1.0 | 2026-02-17 | 初版,基于医学统计学原理分析 |
| v1.1 | 2026-02-17 | 纳入专家二审意见,新增第 8 节"一致性取证方法" |
| v1.2 | 2026-02-17 | 纳入终审意见SE 三角验证提权到 MVP、Error/Warning 分级、工程挑战应对策略 |
---
*分析时间: 2026-02-17*
*基于医学统计学原理的系统分析*
*含专家二审意见及终审意见*