一段一段地读:分域之后多得到了什么

用示例批次 48 个样品测点、102 个年龄域,量化「一个测点一个年龄」与「把信号切成几十段分别读」的差别 —— 以及哪些差别是真信息、哪些只是把噪声重新包装了一遍

一句话:分段处理换来的不是「更准的年龄」,而是另外两样东西 ——「这个年龄的前提成不成立」(域级协和度),与「这些段之间能不能用一条混合轨迹解释」(协和度沿深度的走向)。

这两样都不是白来的:把一段信号切成 102 份之后,各段之间并不独立,把它们当作独立观测汇总,会凭空得到一个漂亮得多的误差棒(代价见第五节)。

还有一件事要先说清:本页画出的每一个误差棒都按合成数据的实测放大了 1.9 倍 —— 工具自报的域级 1σ 在中位意义上偏窄,依据与做法见第六节。凡带 σ 的表都给出未校正的对照列,或在表注里说明它是怎么来的。

48样品测点(示例批次)
36判出多个年龄域(75%)
102正式年龄域
4.38整段(不分域)MSWD 中位

一、「一个测点一个年龄」,到底丢掉了什么

一个激光坑打下去,从表面到坑底穿过的是一段连续的地质历史:核、过渡带、增生边。整段积分只给一个数,而这个数多半不对应任何一次真实事件 —— 它只是那段历史的某种加权平均。

DRUID 的做法是把剥蚀段按时间切成滑动窗口(默认 4 s 窗、1 s 步),逐个窗口给一个带 1σ 的年龄,再用 BIC 与 MSWD 把窗口归并成若干个「年龄域」;同一批窗口还会顺带给出每个窗口的协和度(定义见《跨度上千 Ma 的年龄域》)。

接下来的问题是:切细之后多出来的这些量,各自能改变什么判断?答案有点反直觉 —— 拿它们去「分域」几乎没有帮助,用它们去「判断这一段的年龄可不可信」却多出了坪图根本没有的信息。

二、分域本身,并没有变得更有分辨力

相邻两个年龄域分不分得开,用同一个方式量:两域的差值 ÷ 它们的合成不确定度 = 一个等效 σ 数(≥ 3 才算真分开)。同一批 54 个相邻域对,用五把尺子各量一遍,其中与 σ 有关的三把已按第六节的实测倍数校正:

尺子中位 z
σ 校正后
≥ 3 的比例
σ 校正后
中位 z
用自报 σ
≥ 3 的比例
用自报 σ
年龄轴 z_age2.0926%3.9670%
协和平面 z_plane1.7320%3.8367%
协和度轴 z_conc0.332%0.634%
化学 z_ThU2.6943%5.1167%
化学 z_U(238U 计数率)3.7357%7.0981%

表注:左两列是本页展示值(σ 按第六节放大,z 相应缩小);化学那两把用的是窗口内部的散布,严格说需要它自己的合成实验,这里为了可比一并缩放,所以左两列对化学两行只是近似。

结论很清楚:协和平面并不比年龄轴更有分辨力(中位之比 0.84,两者承载同一份信息)——「年龄轴判不出、而平面判得出」的域对 1 个,反向 4 个;而单看协和度这条轴,分辨力几乎为零(校正后中位 0.33、达标率 2%)。这不是数据的问题,而是定义决定的:协和度是两个年龄的比值,两个域若来自同一个协和体系、只是被一起推着走,比值会原地不动。这批域对里真正分得开的是化学——238U 计数率的台阶,校正后达标率 57%,与工具里「化学判据优先」的排序一致。所以不要拿「协和度差多少」当分域判据。

分域之后多得到什么:五把尺子的分辨力、域级协和度、协和度沿深度的走向、整段协和度
图 1 示例批次全览(所有误差棒已按实测倍数放大)。(a) 相邻域对的分辨力:五把尺子各给一个等效 σ 数(箱体=四分位、点=每个域对、虚线=3σ)。(b) 每个正式年龄域的协和度与其自身 1σ —— 灰点为 |z|<2、橙点 2–3、红点 ≥3,标注的是校正后最极端的三个域。(c) 三域及以上的测点,域均值协和度沿深度:红线单调、蓝线非单调。(d) 整段积分协和度与测点年龄,红点为偏离 100% 超 10% 者。

三、真正多出来的第一样:域级协和度

坪图上的每一条水平线都只回答「这一段的年龄是多少」,却不回答「这个年龄的前提成不成立」。同一批窗口投到协和图上,每个域还会各自得到一个协和度:

测点域窗数206Pb/238U 年龄域级协和度其 1σ
σ 校正后
z
σ 校正后
z
用自报 σ
域内 MSWD
S15D128439.0 Ma59.9%±5.7%-7.0-13.31.34
S02D126440.6 Ma38.6%±8.8%-7.0-13.20.90
S26D134466.6 Ma111.8%±2.7%+4.4+8.42.66
S15D23490.9 Ma174.5%±23.5%+3.2+6.01.28
S31D216437.2 Ma110.0%±4.1%+2.4+4.61.55
S27D134470.6 Ma110.2%±5.1%+2.0+3.81.07
S30D310494.9 Ma112.6%±6.4%+2.0+3.71.42
S25D124468.0 Ma108.8%±4.5%+2.0+3.71.52
S32D27454.7 Ma115.3%±8.0%+1.9+3.70.52
S30D214462.5 Ma111.3%±5.9%+1.9+3.61.27

全部 102 个域里,按校正后的 σ 数:|z| ≥ 2 的有 5 个、|z| ≥ 3 的有 4 个(中位 |z| = 0.72);方向上偏正 61 个、偏负 41 个 —— 方向与 σ 无关,不受校正影响(不校正时这些数会大出几倍,对照见第二、第六节)。这一维确实给出了坪图给不出的信息,但误差棒修对之后,真敢下结论的只有那几个,其余只能算「值得回看」。

「这一段与常数年龄模型相容」和「这个年龄是协和年龄」是两件事:前者坪图能回答,后者只有协和分布能回答。最极端的几个域(S15 D1(59.9%,z=-7.0)、S02 D1(38.6%,z=-7.0)、S26 D1(111.8%,z=+4.4))即使用校正后的 σ 也稳稳超过 3σ —— 其中一例的坪图平得像教科书,协和度却整段偏离:

坪图看似正常而协和度整段偏离的测点
图 3 坪图看不见的那一半。左坪图:逐窗口年龄带 ±2σ(已校正),整段加权后与常数模型勉强相容,看不出任何异常;中协和平面:域均值点离协和线很远,域级协和度只有几十个百分点;右协和度沿深度:从约 30% 一路飘到约 140%,是系统性的,不是噪声。⚠ 这类测点有两种可能(真混入普通铅 / 204Pb 校正过度),本工具分不开,需要回看 204 显著性与 CL。

四、真正多出来的第二样:协和度沿深度的走向

把每个域的协和度按深度排成一列,就会看到一个只有协和分布才具备的性质:单一混合轨迹(一次普通铅混入、或一次 Pb 丢失)只会让协和度沿深度单调漂移 —— 浅处混得多就一路偏高,深处理得多就一路偏低。它造不出「高—低—高」。

单调(8 个)—— 与单条混合轨迹相容

  • S06(3 域)100.8% → 103.0% → 116.2%
  • S08(3 域)97.1% → 102.5% → 104.0%
  • S14(3 域)106.3% → 104.8% → 102.8%
  • S18(3 域)97.6% → 92.4% → 90.2%
  • S20(4 域)94.8% → 95.5% → 96.9% → 99.6%
  • S23(3 域)94.7% → 95.8% → 96.2%
  • S30(3 域)106.1% → 111.3% → 112.6%
  • S31(3 域)106.4% → 110.0% → 111.1%

非单调(9 个)—— 单条轨迹造不出

  • S04(3 域)95.7% → 95.8% → 95.0%
  • S07(3 域)104.5% → 102.7% → 118.6%
  • S10(3 域)95.7% → 103.1% → 102.3%
  • S11(3 域)101.3% → 104.1% → 100.3%
  • S12(3 域)92.2% → 95.2% → 91.9%
  • S22(3 域)94.3% → 91.8% → 97.2%
  • S29(3 域)108.0% → 105.0% → 109.2%
  • S38(3 域)99.0% → 102.0% → 96.2%
  • S48(3 域)96.4% → 96.5% → 96.4%

17 个有三域及以上的测点里,8 个单调(与单条混合轨迹相容)、9 个非单调(单条轨迹解释不了 —— 那部分只能是真实的结构)。这与工具在别处反复使用的「老—新—老」论证是同一把尺子,只是这里把它变成了可以对整批数据批量跑一遍的判据。

两个测点的 Wetherill 协和分布与协和度沿深度对照
图 2 同一批窗口的两条读法。左:域点投在 Wetherill 协和图上,菱形为域均值(±2σ),星号为整段积分。右:协和度沿深度,紫点为逐窗口(带 ±2σ 误差棒)、横线为域均值。上排这个测点的协和度是「高—低—高」,下排是一路单调升 —— 后者与「某一条混合轨迹」相容,前者只能解释成真实的结构。

五、代价:为什么「多测一点、切细一点」并不等于更准

这是本页最想说的部分。分段确实换来了上面那两样信息,但它同时把「一个数」变成了「很多个数」,而这些数不是彼此独立的重复测量:它们来自同一段信号、同一批计数,相邻窗口还共用 3/4 的计数。这个代价可以直接算出来 —— 把这些域当作独立观测做加权平均,就得到一个明显偏小的误差棒:

测点域数单域 1σ 中位
σ 校正后
池化后 1σ
σ 校正后
看起来缩小χ²/dof域间跨度
S40215.75 Ma9.68 Ma1.6×367235 Ma
S07311.59 Ma7.31 Ma1.6×343320 Ma
S21212.68 Ma8.74 Ma1.5×8487 Ma
S38312.59 Ma6.61 Ma1.9×6591 Ma
S46211.80 Ma5.90 Ma2.0×4162 Ma
S3429.98 Ma6.96 Ma1.4×3746 Ma
S09218.33 Ma8.98 Ma2.0×3792 Ma
S2239.29 Ma5.66 Ma1.6×3563 Ma

表注:两列 σ 已按第六节的倍数放大(工具自报值的 1.9 倍);本表要看的两个数 ——「看起来缩小」与 χ²/dof —— 都是比值,两边同时放大,不受这次校正影响。

把 36 个多域测点逐个这么算:池化后 1σ 中位是 6.43 Ma,而单个域的 1σ 中位是 11.61 Ma —— 看起来精度提高了 1.7 倍。但同一个计算顺带算出的 χ²/dof 中位是 16.6(同一个量的重复测量应当 ≈ 1):那个「提高了 1.7 倍」完全是虚的 —— 这些段本来就不是同一个量的重复测量,平均起来只是把结构当成了噪声。

于是有了另一条同样重要的结论:数据量不是白来的。整段不分域时,只有 5/48 个测点与常数模型相容,MSWD 中位 4.38 —— 这些测点里绝大多数本来就不是一个年龄,而是若干个年龄叠在一起。这时候再加测点、或把窗口切得更细,得到的并不是「更确定的那个年龄」,而是更多条互相拉扯的曲线。

更有节制的做法是换一层去汇总:以域为单位回答「一次事件是什么年龄」,以域内 MSWD 与域级协和度回答「这一段的年龄可不可信」,而不是靠堆测点把误差棒压小。

还有一层代价:切得越细,每一段越不准。同为相对 1σ、同为 207Pb/235U,逐窗口的中位是 6.8%,整段(结果表)按严格传播是 3.5%,即约 2.0 倍。逐窗口的椭圆宽到会盖住整张图,所以本页的协和图只画点、不画逐窗口椭圆。

六、误差棒:本页把 σ 放大了 1.9 倍,依据在这里

工具的域级 1σ 按「独立观测」的式子算,而窗口之间共用计数、校准漂移与普通铅这些系统性项并不进入计数统计 —— 于是误差棒偏窄。这件事在真数据上无法自查(真值未知),只能造合成数据:tools/synth_sigma_audit.py 用仓库自己的合成机制(tools/synth_profile.py,一个数都不另算)造出真值已知的两域剖面,跑完完整的 run_batch,把解出的域年龄与真值配对,看 pull = (报回 − 真值) / σ —— σ 诚实的话,它应当标准差 ≈ 1、|pull| ≤ 1 占 ≈ 68%。2026-10-11 的两档实测(各 6 个种子):

条件可统计的域pull 标准差
应 ≈ 1
|pull| ≤ 1 的比例
应 ≈ 68%
median|pull|
应 ≈ 0.67
① 只加计数统计381.1963.2%0.68
⑤ 全套效应(+普通铅 5%)361.8141.7%1.28

结论分两层:计数统计这一层是诚实的(条件 ① 的 pull 标准差约 1.19);偏窄来自别的效应 —— 条件 ⑤ 下 pull 标准差 1.81,|pull| ≤ 1 只剩 41.7%(应 ≈ 68%),报出的 1σ 中位 2.68 Ma 而实际误差中位 3.51 Ma。三个互相独立的估计都指向同一量级,于是取 1.9 倍;这个倍数只在 tools/synth_sigma_audit.py 里存一份,--check 可随时重算比对。

它只影响「σ 够不够宽」,不影响任何相对比较 —— 比值、达标率、χ²/dof 两边同时放大,全不受影响,所以第二节的尺子排序与第四节的单调性都不受校正影响;受影响的只有「够不够 3σ 显著」:第三节点名的「显著偏离」域就从 17 降到 4 个。

一处近似也交代在这里:同一个倍数用到了域级协和度的 σ(第三节)、逐窗口误差棒(图 2、图 3)与两把化学尺子上,它们与域年龄共用同一批 s68 / s76,量级应当相近,严格说各自需要一个自己的合成实验 —— 本页只保证「把已知的系统性偏窄大致抹平」。

七、读这一页时要守的边界

八、自己复现

# 单点看图(坪图 + Wetherill + Tera–Wasserburg + 协和度–深度)
python tools/spot_concordia.py --dir examples/EX2022A --spot S10

# 量本页用的 σ 校正因子(合成数据,写 G 盘临时目录、跑完自删)
python tools/synth_sigma_audit.py
python tools/synth_sigma_audit.py --check

# 本页的全部数字、表格与图(只读)
python tools/gen_docs_segmented.py
python tools/gen_docs_segmented.py --check   # 与现算值不一致就非零退出