# 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* *基于医学统计学原理的系统分析* *含专家二审意见及终审意见*