---
title: "复算一份相关 SH0ES 距离阶梯子系统"
description: "下载87项真实观测、完整协方差子矩阵与独立 Python 脚本，重现标定偏移和缺失锚点时的失败。"
canonical_url: "https://sandboxphysics.com/zh/stories/distance-ladder/shoes-subsystem-tutorial/"
language: "zh-CN"
page_type: "story"
alternate_languages:
  en: "https://sandboxphysics.com/stories/distance-ladder/shoes-subsystem-tutorial/"
last_modified: "2026-10-28"
---

[宇宙距离阶梯怎样获得尺度](https://sandboxphysics.com/zh/stories/distance-ladder/)

L3 · 宇宙距离阶梯

# 复算一份相关 SH0ES 距离阶梯子系统

Sandbox Physics · 2026-10-28

下载下方公开矩阵、独立参考结果和 Python 脚本，只需 Python3 标准库，就能复算87行拟合，检查保留的全部原系数，并比较三种零点偏移。来源固定为 SH0ES 发布提交 c447f0fea703fcd0fff57de5000947b5ca81286b；计算对象是条件子系统，不是完整论文分析。

## 开始前需要什么

先读前三章，尤其预处理周期斜率约定与广义最小二乘。只需 Python3，不需 NumPy、账号、私有仓库或 Lab 可执行程序。

## 把三个小文件放进空目录

不需要访问代码仓库。约152KB 的数值输入包含选定观测列、87行八列设计矩阵与87行87列协方差。脚本先用 SHA256 检查输入原字节，再求解。参考结果来自独立 NumPy Cholesky 与 SVD 计算，公开脚本另用标准库求解同一方程。

在新目录中运行下面命令。脚本写出 public-reproduction.json，并把基线与独立参考比较。输入校验和应为24b93d2ce7bdbcbfe9789ac35091dc5737e326beecedf0fa84a80d02ed287447。若下载到 HTML 错误页，校验会在计算前停止。

```
            mkdir shoes-small-example
cd shoes-small-example
for file in reproduce-subsystem.py shoes-subsystem.json shoes-subsystem-benchmarks.json; do
  curl --fail --location --output "$file" "https://sandboxphysics.com/stories/distance-ladder/$file"
done
python3 reproduce-subsystem.py --reference shoes-subsystem-benchmarks.json

          
```

对应阅读：PantheonPlusSH0ES DataRelease · Published article license

## 沿选样追到原数组

原 ally FITS 图像包含3492项预处理观测，alll 图像按47个参数行、3492项观测存储；转置后才是通常的观测乘参数设计矩阵。allc 为3492行3492列协方差。普通 raw GitHub 地址可能只返回 Git LFS 指针，来源清单给出真正媒体地址、48,781,440字节长度及 SHA256。

先固定选样，再看拟合哈勃值：M101 的259行区块等间隔取24行，Mrk1337 的15颗全取，NGC4258 的443行区块等间隔取24行；保留3130—3134五行标定光变，3215—3491等间隔取16行哈勃流，再取3209、3212、3213三行约束。合计63颗造父星、五行标定光变、16行哈勃流与三项约束。

每项观测保存从零起算的 sourceRowIndex，以及原47列中全部非零系数。涉及的列只有0、1、37、38、41、42、43和46。提取与拟合都断言其他列在这些行上为零，避免悄悄固定仍有效的干扰参数。第0行还保留实测星号54672、周期6.853491天；未核实名称配对的哈勃流观测只用矩阵行号标识。

对应阅读：PantheonPlusSH0ES DataRelease · Riess et al.

## 拟合前先读懂预处理量和约束

预处理造父星星等已减掉负3.285乘以对数周期偏移，拟合的是斜率修正，报告实际斜率时要再加回负3.285。表2的 F160W 星等是另一个四舍五入显示量。table2.README 提醒表中误差缺少重拟合所需的非对角项，自定义选样也可能需要新人工星测试。本教程沿用发布协方差与光度预处理。

第3209行是发布金属丰度摘要，约每 dex 负$0.215\pm0.120$星等；3212行是宽斜率修正正则项，零、标准差十；3213行是几何锚模数偏移，均值零、标准差约0.032391星等。原完整协方差里，这三行与其他行的交叉项都为零。不过数值上为零，不会把摘要变成独立采集的原始实验；其构造仍属于发布的整体造父星分析。结果称作条件拟合，并额外保存删去金属丰度摘要的比较。

对应阅读：PantheonPlusSH0ES DataRelease · Riess et al.

## 改参数前，先比较保存基线

标准库脚本与独立 NumPy 参考对每个参数的差都小于一亿分之一。哈勃中位数为66.3049059163，中央一标准差变换区间62.2355814993—70.6403064398，卡方75.1994887236，秩八。复算目标就是这些数值，不能为了接近某个期望结果再改样本。

另用完整协方差求解原3492行、47参数发布，得到73.0428191，与表5完整基线73.04相符。小子系统只有两个标定超新星宿主，并条件化于发布摘要；问题缩小、条件改变，中心偏移与区间变宽都有可能。完整论文最终正负1.04还包含作者分析变体，也不是这个子样本的误差条。

| 量 | 冻结结果 |
| --- | --- |
| 哈勃中位数，千米每秒每 Mpc | 66.3049059163 |
| 实际周期斜率，星等每 dex | −3.5186554275 |
| 宿主模数相关系数 | 0.6352832389 |
| 相对模数，星等 | $3.8409126358\pm0.1091028594$ |

对应阅读：Riess et al. · PantheonPlusSH0ES DataRelease

## 逐项读出可控失败

输出依次保留采用锚偏移、仅宿主造父星偏移、共同造父星偏移，均为0.10星等。前两项把哈勃值降到63.32069，残差卡方不变；共同偏移仍得66.30491，只移动造父星零点。磁盘上的原观测始终不变，比较中明确改变的是采用向量与解释。

diagonalCovarianceCounterfactual 只把观测非对角协方差清零，得到66.82894，相对模数误差从0.10910变成0.08882。这是故意改变误差模型的对照。withoutMetallicitySummary 得到68.31781，区间放宽为63.44104—73.56945，能看出发布摘要这一条件确实影响答案。

最后读 noAnchor：秩七、identified 为 false，哈勃中位数和区间均为 null。参数列表只是任选锚偏移为零，以展示同样拟合的一族解中的一个。宿主相对模数和误差仍可辨认。若把显示坐标当作绝对测量，就等于手工把锚重新塞了回去。

对应阅读：Riess et al. · PantheonPlusSH0ES DataRelease

## 为下一份样本保留复算记录

记下来源提交、原行列号、单位和预处理约定。求解前检查协方差字节与全部非零模型系数，先验秩，再把光度拟合变成膨胀率。保存共同误差测试和移除摘要的敏感性测试，与主结果放在一起。

正式发表论文采用 CC BY4.0，原仓库没有另外的代码许可。下载脚本独立求解方程，选定数值附作者出处和来源校验和。完整 FITS 仍由 provenance.json 指向作者固定地址。可选 freeze-shoes-subsystem.py 用 NumPy 独立提取所列行；运行时给出 --source-cache SOURCE\_FOLDER --output-directory extracted --full-reference。加 --fetch 才下载缺少的固定原文件，其中协方差约48MB。主要三文件拟合只需 Python 标准库。

对应阅读：Published article license · PantheonPlusSH0ES DataRelease

## 下载原输入与完整结果

将 Python 脚本、选定矩阵与独立参考结果放在同一目录。来源清单记录原文件与校验和，冻结输出保留标定偏移、去掉锚点和仅用对角误差的对照。

- [reproduce-subsystem.py](https://sandboxphysics.com/stories/distance-ladder/reproduce-subsystem.py)
- [freeze-shoes-subsystem.py](https://sandboxphysics.com/stories/distance-ladder/freeze-shoes-subsystem.py)
- [shoes-subsystem.json](https://sandboxphysics.com/stories/distance-ladder/shoes-subsystem.json)
- [shoes-subsystem-benchmarks.json](https://sandboxphysics.com/stories/distance-ladder/shoes-subsystem-benchmarks.json)
- [public-reproduction.json](https://sandboxphysics.com/stories/distance-ladder/public-reproduction.json)
- [provenance.json](https://sandboxphysics.com/stories/distance-ladder/provenance.json)
- [published-license.json](https://sandboxphysics.com/stories/distance-ladder/published-license.json)

## 亲手观察

### [交互重现一次标定比较](https://sandboxphysics.com/zh/labs/supernova-distance-expansion/)

1. 在“距离阶梯”选“共同偏移相消”，导出采用设置，与基线比较并确认哈勃值不变。
2. 重访原四十源 Pantheon+ 膨胀教程时，再切到“膨胀形状”。该模式剖面化自由亮度零点，报告膨胀形状拟合。

## 练习与答案

共同尺度移动后，卡方相同但哈勃值变了。怎样区分不变性和数值错误？

去掉锚后，用设计矩阵乘给定共同尺度零向量，结果应逐项为零，沿该方向移动参数也应保持所有观测预言。有锚时，只有同时改变采用的锚值，才容许这种共同移动。

[上一篇：用协方差拟合距离阶梯的共同误差](https://sandboxphysics.com/zh/stories/distance-ladder/shared-errors-in-the-ladder/) [下一篇：读懂哈勃标定原文与共同不确定度](https://sandboxphysics.com/zh/stories/distance-ladder/reading-the-hubble-calibration/)

## 来源与计算范围

1. [Riess et al., A Comprehensive Measurement of the Local Value of the Hubble Constant, arXiv:2112.04510 v 3 (2022)](https://arxiv.org/abs/2112.04510v3)

   第2.1节与第4节定义联合模型和标定；第5节、表5、图14—16给出完整拟合与相关性，第6—7节讨论变体和比较。课程所述论文结论固定在这一版本。

2. [PantheonPlusSH0ES DataRelease, commit c447f0fea703fcd0fff57de5000947b5ca81286b](https://github.com/PantheonPlusSH0ES/DataRelease/tree/c447f0fea703fcd0fff57de5000947b5ca81286b/SH0ES_Data)

   ally、alll、allc FITS 数组包含3492项预处理观测、47个参数列及完整协方差。公开教程保留其中87项观测与涉及的全部非零模型列。table2.README 明确提醒，不能只拿表2的对角误差重新拟合。

3. [Published article license, DOI10.3847/2041-8213/ac 5 c 5 b](https://doi.org/10.3847/2041-8213/ac5c5b)

   正式发表版本登记为 CC BY4.0，原仓库没有另外的代码许可。教程脚本自行实现拟合并注明数值数据出处，没有转载作者 MCMC 代码。
