Files
AIclinicalresearch/docs/03-业务模块/RVW-稿件审查系统/06-开发记录/2026-02-17-Day6-统计验证器开发记录.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

6.7 KiB
Raw Blame History

RVW V2.0 Day 6 开发记录

日期: 2026-02-17
开发阶段: Week 2 - Day 6
开发主题: L2 统计验证器 + L2.5 一致性取证
开发状态: 完成


1. 开发背景

1.1 Day 6 任务目标

根据 RVW V2.0 开发计划Day 6 的主要任务是实现 StatValidator 类,包括:

  • T 检验 P 值逆向验证
  • 卡方检验 P 值逆向验证(部分)
  • CI vs P 值逻辑一致性检查

1.2 终审提权

在 Day 6 开发前团队提交了《RVW V2.0 统计方法验证方案终审报告》,提出两个重大建议:

  1. 将 "SE 三角验证" 提入 MVP - 原计划在 V2.1,提权到 Week 1/Day 6
  2. 明确 Error vs Warning 界限 - 避免"狼来了"效应

基于终审建议Day 6 的实际开发范围扩展为:

  • CI vs P 值逻辑一致性检查
  • T 检验逆向验证
  • SE 三角验证(终审提权)
  • SD > Mean 检查(终审提权)
  • Error/Warning 分级与容错阈值

2. 开发成果

2.1 修改的文件

文件 修改内容 新增行数
extraction_service/forensics/types.py 新增 3 个 IssueType +6
extraction_service/forensics/config.py 新增容错阈值配置、CI/Mean±SD 正则 +35
extraction_service/forensics/validator.py 完整实现 StatValidator +500
extraction_service/test_day6_validators.py 单元测试脚本 +246

2.2 新增功能详情

2.2.1 IssueType 扩展

# L2.5 一致性取证(终审提权)
STAT_SE_TRIANGLE = "STAT_SE_TRIANGLE"       # SE 三角验证不一致
STAT_SD_GREATER_MEAN = "STAT_SD_GREATER_MEAN"  # SD > Mean正值指标
STAT_REGRESSION_CI_P = "STAT_REGRESSION_CI_P"  # 回归系数 CI↔P 不一致

2.2.2 容错阈值配置

# P 值容错阈值
PVALUE_ERROR_THRESHOLD = 0.05    # P 值差异 > 0.05 → Error
PVALUE_WARNING_THRESHOLD = 0.01  # P 值差异 > 0.01 → Warning
PVALUE_RELATIVE_TOLERANCE = 0.05 # P 值相对误差 ±5%

# CI 容错阈值
CI_RELATIVE_TOLERANCE = 0.02     # CI 端点相对误差 ±2%

2.2.3 StatValidator 完整实现

方法 功能 统计学原理
_validate_ci_pvalue_consistency() CI↔P 逻辑一致性 CI 跨越 1 ↔ P≥0.05
_validate_ttest() T 检验逆向验证 t = (M1-M2) / SE, P = 2*(1-t.cdf)
_validate_se_triangle() SE 三角验证 SE = (ln(UCL)-ln(LCL))/3.92, Z = ln(OR)/SE
_validate_sd_greater_mean() SD > Mean 检查 正值指标 CV > 100% 异常
_parse_ci() 多格式 CI 解析 支持 5+ 种格式
_parse_pvalue() P 值解析 P=, P<, P>, p值=

2.3 测试结果

2.3.1 单元测试

============================================================
Day 6 验证器测试
============================================================
scipy 可用: True

  CI vs P 值一致性: ✅ PASS
  SE 三角验证: ✅ PASS
  SD > Mean 检查: ✅ PASS
  T 检验逆向验证: ✅ PASS

🎉 所有测试通过!

2.3.2 真实文档测试

测试文档 表格数 问题数 统计方法
刘锦_静脉溶栓指标分析 3 0 chi-square, mann-whitney
吴章薇_骨盆不对称活动 8 2 ⚠️ t-test, chi-square, anova, mann-whitney
陈卫峰_VE-cadherin_S1P 6 0 t-test, chi-square, anova, logistic, mann-whitney
王雪_功能性电刺激 5 0 t-test, chi-square, mann-whitney, paired-t
骶骨瘤_输血策略 3 0 t-test, anova, logistic, mann-whitney

问题详情吴章薇_骨盆不对称活动

  • ⚠️ WARNING: 0.36±0.44CV=122.2%- 差值指标SD > Mean 合理
  • ⚠️ WARNING: 0.08±0.46CV=575.0%- 差值指标SD > Mean 合理

结论: 这两个 WARNING 是合理的假阳性,属于差值指标,不是真正的数据错误。


3. 文档更新

3.1 开发计划更新

文件: docs/03-业务模块/RVW-稿件审查系统/04-开发计划/RVW V2.0 产品升级开发计划.md

更新内容:

  • 版本升级至 v1.2
  • MVP 范围增加 L2.5(一致性取证)
  • Week 1 Day 3 任务扩展SE 三角验证、SD>Mean
  • 新增 4.3.3 章节(问题严重程度分级)

3.2 统计方法可验证性分析报告更新

文件: docs/03-业务模块/RVW-稿件审查系统/04-开发计划/RVW V2.0 统计方法可验证性分析报告.md

更新内容:

  • 版本升级至 v1.2
  • MVP 策略更新SE 三角验证提权)
  • 新增第 9 节(终审工程挑战与应对策略)

3.3 测试报告

文件: docs/03-业务模块/RVW-稿件审查系统/05-测试文档/测试报告-Day6-统计验证器.md


4. 技术要点

4.1 SE 三角验证原理

用于验证回归分析Logistic/Cox中报告的 OR/HR、CI、P 值是否一致。

# 核心公式
SE = (ln(CI_upper) - ln(CI_lower)) / 3.92  # 95% CI
Z = abs(ln(OR)) / SE
P_calculated = 2 * (1 - norm.cdf(Z))

# 验证逻辑
if abs(P_calculated - P_reported) > 0.05:
    return ERROR  # 严重矛盾
elif abs(P_calculated - P_reported) > 0.01:
    return WARNING  # 可能是舍入误差

4.2 SD > Mean 检查原理

对于正值指标年龄、体重、血压等SD > Mean 通常是不合理的。

# 变异系数
CV = SD / Mean

# 判定逻辑
if CV > 1.0 and is_positive_indicator(context):
    return ERROR  # 已知正值指标
else:
    return WARNING  # 未确定指标

4.3 CI 多格式解析

支持医学论文中常见的 CI 格式:

格式 示例
标准括号 2.5 (1.1-3.5)
逗号分隔 2.5 (1.1, 3.5)
方括号 2.5 [1.1; 3.5]
带 CI 标签 95% CI: 1.1-3.5
英文 to 95% CI 1.1 to 3.5

5. 待办事项

5.1 Day 7 计划

  • Skills 核心框架
    • types.ts: Skill 接口定义
    • SkillRegistry: 技能注册表
    • SkillExecutor: 执行器(含 30s 超时熔断)

5.2 后续优化建议

建议 优先级 说明
增加差值指标识别 P2 检测列名含"差值"、"变化"等词
完善样本量提取 P1 增强从表格中提取 n 值的能力
增加更多测试文档 P2 寻找包含明显错误的测试用例

6. 变更日志

时间 变更内容
2026-02-17 09:00 开始 Day 6 开发
2026-02-17 10:30 更新 types.py 和 config.py
2026-02-17 12:00 实现 StatValidator 核心方法
2026-02-17 14:00 完成单元测试
2026-02-17 15:00 完成真实文档测试
2026-02-17 16:00 更新开发计划和统计分析报告
2026-02-17 17:00 生成测试报告和开发记录

开发记录生成时间: 2026-02-17
RVW V2.0 数据侦探模块