交付出件箱

← 返回出件箱

眼轴百分位 · 5411数据审计清单(gpt-6-astra 第二意见 · 2026-09-17)

背景:长官拍板「眼轴百分位」功能用本院 5411 条门诊眼轴基线数据做经验排名(不引外部常模)。
下一步定为「先审数据」。但数据文件 ssa2026.xlsx(=B1数据全.xlsx)仍在团队某人电脑上,未上传到服务器。
本文是 gpt-6-astra 第二意见(medium 强度,336秒)+ 我核对后的整理,不是权威结论,是审计准备清单。

结论先行

数据文件没到手,不代表没事可做。文件一到手就该能立刻跑审计,而不是现想脚本怎么写。要先定死四件事:
1. 数据交付规范:文件版本/哈希/字段字典/编码规则/年龄计算规则
2. 分析单位:原始行 vs 眼 vs 就诊 vs child_id 去重后的儿童 —— 双眼和复诊怎么选
3. 年龄分桶口径:按儿童数统计,不按 Excel 行数;明确 ±0.5/0.75/1.0 岁窗口定义
4. 自动化审计脚本:文件一到就能出汇总表+异常明细+"可用/不可用年龄段"结论

⚠️ 最容易踩的坑:直接对 5411 行做排名——复诊多的孩子、双眼都有记录的孩子会被重复加权。5411 行 ≠ 5411 个孩子。


1. 文件到手前,该向团队/长官要什么

必须问清楚的业务规则(不确认,后面"去重"和"样本量"就是歧义)

  1. 年龄怎么算:用「测量日期 − 出生日期」,不能用当前日期或导出日期
  2. 排名对象:儿童级还是眼级?双眼怎么合成(均值/中位数/右眼优先/分别排名)
  3. 复诊怎么处理:基线取首次测量,还是取距目标年龄最近的一次?不能简单 drop_duplicates 后保留 Excel 第一行(结果依赖文件排序)
  4. 性别要不要参与排名
  5. 目标年龄范围:比如 6-18 岁,还是包含更小年龄

必须要的文件元信息

字段字典(至少确认这 7 个字段的真实列名+编码)

child_id / axial_length(单位是否mm) / measurement_date / birth_date / sex(编码) / eye(OD/OS还是R/L) / visit_id


2. 数据到手后的审计清单(可直接抄 · pandas 思路)

检查项 关键点
文件级 sheet数/隐藏sheet/合并单元格/重复标题/原始行数是否=5411
字段完整性 缺失率(child_id/axial_length/birth_date/measurement_date/sex 分别报)
去重审计 原始行数 vs 不同 child_id 数 vs 每儿童记录数分布;必须同时产出"原始行口径"和"儿童级有效口径"两套结果
年龄合法性 出生日期晚于测量日期/生日冲突(同一child_id多个出生日期)/年龄<0或>25
年龄分桶样本量 按儿童数(不是行数!)在 ±0.5/0.75/1.0 岁窗口下逐年龄点统计,标记 不可用(<30)/谨慎(30-99)/常规可用(≥100)
眼轴异常值 硬范围 15-35mm(单位/小数点错位排查用),18-30mm 之外标"可疑需复核";分年龄桶做 IQR 检测(全局IQR会误报)
双眼一致性 同次检查双眼差值 >0.5mm 复核、>1.0mm 高度可疑
儿童内部一致性 同一 child_id 是否有多个出生日期/多个性别/复诊次数异常高

审计报告至少产出 4 张表:总体概览 / 年龄覆盖表 / 异常明细表(带排除原因) / 去重影响表(每一步损失多少记录)。


3. 年龄段样本 <30 时的兜底策略(除扩窗外)

优先级从高到低:
1. 直接显示"暂无百分位",不要用 10-20 个样本硬凑一个精确数字
2. 用年龄段代替精确年龄(如"6-7岁经验百分位"而非"6.32岁精确百分位")
3. 最近可用年龄点替代,但偏差超过 0.5 岁不建议作默认结果、超过 1.0 岁只能内部调试用
4. 限制同一儿童贡献次数(每个窗口只取一次,降低复诊儿童的过度影响)
5. 样本 30-99 时加"样本量有限"提示,更严格可用 bootstrap 给置信区间,区间过宽就显示"结果不稳定"
6. 按年龄段持续追踪数据积累状态,每季度重算

❌ 不建议:引外部常模补缺口、把复诊当独立儿童、均值填补缺失、用极少样本给出过度精确的百分位(如 P63.7)、为凑够30人复制数据。


4. 会导致建议暂缓的审计结果(带具体数值阈值)

长官态度已定,但以下是"数据事实导致功能无法按承诺上线",该明确上报,不是劝阻:

类别 暂缓阈值
child_id 缺失/冲突 缺失率>0.5% 或 去重儿童数无法稳定复现
年龄无法计算 出生/测量日期缺失>1%,或年龄非法记录>0.5%
眼轴值质量 缺失>2%,硬异常(超15-35mm范围)>0.5%,双眼差>1.0mm的比例>1%
关键年龄段覆盖不足 目标年龄点在最大±1.0岁窗口仍<30儿童的比例:>20%→不建议整年龄范围上线;10-20%→需限制适用年龄;存在连续≥1.5岁区间不可用→重新考虑覆盖范围
结果依赖少数儿童 有复诊/多条记录儿童比例>30%,或原始行数/去重儿童数比值>2.0
百分位不稳定 bootstrap 95%区间宽度>10个百分点(中位数附近)或>15个百分点(P10/P90附近)
去重规则敏感 不同去重策略间中位数差>0.3mm 或 可用年龄段数量变化>20%
设备/院区断层 某批次占比>10%且与其他组中位数差>0.3mm

给长官的上线前硬门槛(10条,可直接当验收标准)

  1. 去重后 child_id 可复现,缺失率≤0.5%
  2. 出生/测量日期有效率≥99%
  3. 眼轴缺失率≤2%,硬异常比例≤0.5%
  4. 最大窗口仍<30儿童的年龄点比例≤10%
  5. 复诊/双眼记录不按独立儿童重复计数
  6. 每个输出百分位可追溯到实际儿童数
  7. <100样本有提示,<30不输出百分位
  8. 关键年龄点 bootstrap 区间不超预设宽度
  9. 去重/双眼合并/异常值处理规则写入版本化配置
  10. 第5/6条不满足→缩小年龄范围;第1/2/3/4/7条不满足→建议暂缓这批数据的用户端上线

附:完整原始回答

见 /tmp/astra-axial-audit-response.txt(本次会话临时文件,未入库;完整清单已浓缩进上文,原文含更多 pandas 示例代码)。


关联 memory:project-axial-percentile-research-20260917 · reference-gpt6-astra-second-opinion-tool