---
title: "复算二十四个真实 SDSS 星系的红移分布"
description: "用冻结的 SDSS DR17 流量保留负测量，把光谱红移留作检验，复算光度红移并逐个阅读失败案例。"
canonical_url: "https://sandboxphysics.com/zh/stories/galaxy-colors/sdss-five-band-tutorial/"
language: "zh-CN"
page_type: "story"
alternate_languages:
  en: "https://sandboxphysics.com/stories/galaxy-colors/sdss-five-band-tutorial/"
last_modified: "2026-10-28"
---

[从星系颜色读到红移分布](https://sandboxphysics.com/zh/stories/galaxy-colors/)

L3 · 星系测光

# 复算二十四个真实 SDSS 星系的红移分布

Sandbox Physics · 2026-10-28

打开固定的 SDSS DR17 CSV 和查询语句。接下来逐列换算每个星系的五次线性流量测量，运行与 Lab 相同的有限恒星族推断，再与没有交给拟合程序的光谱红移比较。两个漏掉真值的区间，以及一例对定标敏感的换峰，会说明散点图之外还要看什么。

## 开始前需要什么

前三章推导了滤镜平均、静止系衰减与振幅积分后验。公开脚本只需 Python 3 标准库，将下面四个文件下载到同一目录即可，不需要网站仓库、额外软件包或在线星表查询。

## 第一步，认出版本与样本选择

输入是 SDSS DR17 SkyServer 公开 SQL 服务返回的六千一百六十二字节文件，原查询与 SHA-256 校验值一起保存。查询把主星系光谱连接到最佳成像对象，要求光谱警告为零、成像干净、光谱红移在零点零二至零点八之间，再按光谱编号取前二十四行。实际样本红移范围为零点零二一二二二二八至零点四四八二一九九。

这是一个明亮、经过光谱选择的小练习样本，还含有巡天中相邻的观测对象。它代表的是这个特定选择。它不能测量暗弱成像总体的红移分布。光谱值参与选样和最终检验，没有进入流量似然，也没有用于训练模板、先验或零点。

objID 与 specObjID 必须保留为字符串。十九位编号超过普通 JavaScript 数值能精确表示的整数范围。原始字节和查询能把每一行对应到真实天体。

```
            mkdir -p galaxy-colors-reproduction
cd galaxy-colors-reproduction
curl -fSLO https://sandboxphysics.com/stories/galaxy-colors/reproduce-sdss.py
curl -fSLO https://sandboxphysics.com/stories/galaxy-colors/sdss-dr17.csv
curl -fSLO https://sandboxphysics.com/stories/galaxy-colors/photometry-grid.json
curl -fSLO https://sandboxphysics.com/stories/galaxy-colors/sdss-results.json
python3 reproduce-sdss.py --reference sdss-results.json
          
```

对应阅读：SDSS DR17 imaging fluxes and flux calibration · SDSS public-release use and acknowledgement policy

## 第二步，读取流量、逆方差与前景消光

每行有五个 modelFlux，单位纳摩吉，以及五个 modelFluxIvar，单位为纳摩吉平方的倒数。SDSS 模型流量在各波段沿用 r 波段选定的形状，便于比较星系颜色。逆方差开平方后取倒数，得到统计标准差；冻结样本的一百二十个逆方差全为正。

extinction 字段给出银河系前景消光的逐波段估计。先用前景改正因子同时乘流量与统计标准差，再套固定近似 AB 零点偏移：u 减零点零四星等，z 加零点零二，其他波段取零。SDSS 将 z 偏移标为尚不确定，这些偏移本身也有约百分之一星等的误差。教程另外保存完全不套这些偏移的敏感性复算。

将改正后流量绝对值的百分之三与统计标准差平方相加，再开平方；此后各个模型都使用同一组误差。这是明确选择的教学误差下限，没有从数据估计 SDSS 协方差，也没有保证后验已得到定标。快照没有跨波段协方差，计算采用对角误差。

$$
q_b=10^{0.4 A_b^{\mathrm{MW}}-0.4\Delta m_b^{\mathrm{AB}}},\quad f_b'=q_b f_b,\quad \sigma_b'^2=\frac{q_b^2}{\mathrm{ivar}_b}+(0.03|f_b'|)^2
$$

去前景消光让源变亮；负的星等零点偏移同样提高 AB 流量。统计误差先乘相同因子，再加入固定比例误差项。

对应阅读：SDSS DR17 imaging fluxes and flux calibration · Hogg et al.

## 第三步，跟着一个负流量算到底

第六行的 objID 为 1237650795146510903，specObjID 为 299491876468189184。原始 u 流量为负零点一九四九四八二纳摩吉，逆方差六点三零三六八九，前景消光零点二五七八五六三星等。两种改正之后，u 流量约为负零点二五六四八五，标准差零点五二四零七三纳摩吉。

它只比零低约半个标准差，与较小的正真实流量相容，应该进入高斯似然。删掉它，或把它当成精确的上限，都会改变问题。第二十二行还有一次负 u 测量，两者都保留。

第六行最高红移峰为零点四一五，中央区间约零点二五六六至零点四六九九。完成流量拟合后读出的光谱红移是零点四四八二一九九，落在区间内。输出保存全部二百四十一个密度值，不打开 Lab 也能检查这项比较。

对应阅读：SDSS DR17 imaging fluxes and flux calibration · Brammer

## 第四步，先看失败，再看汇总分数

第十八行，objID 1237648721216405657，光谱红移零点零八四一九六五八；光度红移最高峰零点一三零，中央区间零点一零二八至零点一九二二，漏掉了已知红移。第二十三行，objID 1237648720142336237，光谱红移零点零六五一八三零五；最高峰零点一八五，区间零点零九一一至零点一九六二，同样漏掉。

第二十三行还展示了定标怎样影响答案。去掉近似 AB 偏移，最高峰从零点一八五跳到红移网格下边界零。两个红移区域一直在竞争，微小零点改动交换了它们的高低。偏移采用定标文档给出的固定数值，没有为了贴合光谱答案而调节。读单个峰值前，应该先看完整分布和定标敏感性。

有限模型只用一种金属丰度和单次恒星形成史，省略发射线。拟合偏移可能来自这些限制，也可能来自测量或定标；这份小星表无法逐个确定失败原因。输出中的预测流量与残差指出哪些波段不合，后续光谱和更丰富模板可继续检验原因。

| 行号 | 光谱红移 | 最高峰 | 中央 68% 区间 |
| --- | --- | --- | --- |
| $6$ | $0.4482199$ | $0.415$ | $[0.2566,\,0.4699]$ |
| $18$ | $0.08419658$ | $0.130$ | $[0.1028,\,0.1922]$ |
| $23$ | $0.06518305$ | $0.185$ | $[0.0911,\,0.1962]$ |

对应阅读：SDSS DR17 imaging fluxes and flux calibration · Bruzual & Charlot

## 第五步，把样本大小写在汇总结果旁边

二十四个中央百分之六十八区间中，二十二个包含光谱红移，这批对象约为百分之九十二。样本很小、选择特殊，一些分布很宽，误差下限又是一项教学假设，这个比例不能证明区间已经准确校准。包含率高和中位偏移小，也不能说明每条后验都提供了很多信息。

按下式定义归一化红移误差，保存的中位误差为零点零零四四一四，去中位数后的归一化绝对偏差中位数乘一点四八为零点零五四四三。以误差绝对值超过零点一五为灾难性错误，本样本没有对象越线。两个漏掉真值的区间仍然是失败，只是没有达到这个较粗的阈值。

下次拿到新星表，先记录版本、选择、流量与误差单位，再说明前景和零点处理；光谱答案留作检验。查看完整分布、残差与边界概率后，再报告区间包含率和定义清楚的离群指标。若要校准整个巡天的红移分布，验证样本还必须覆盖目标巡天的颜色、亮度与红移选择。

$$
\delta_i=\frac{z_{\mathrm{mode},i}-z_{\mathrm{spec},i}}{1+z_{\mathrm{spec},i}},\qquad \sigma_{\mathrm{NMAD}}=1.48\,\operatorname{median}_i\!\left|\delta_i-\operatorname{median}_j\delta_j\right|
$$

分母采用光谱红移，脚本严格按这里的去中位数定义计算。二十四个已选星系没有灾难性错误，对更大或更暗总体中的罕见失败几乎不给保证。

对应阅读：Brammer · SDSS DR17 imaging fluxes and flux calibration

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

将独立 Python 脚本、CSV、固定网格和参考结果放在同一目录即可运行。下列公开文件还提供模板形状、滤镜响应和来源清单。

- [sdss-results.json](https://sandboxphysics.com/stories/galaxy-colors/sdss-results.json)
- [provenance.json](https://sandboxphysics.com/stories/galaxy-colors/provenance.json)
- [sdss-dr17.csv](https://sandboxphysics.com/stories/galaxy-colors/sdss-dr17.csv)
- [sdss-query.sql](https://sandboxphysics.com/stories/galaxy-colors/sdss-query.sql)
- [photometry-grid.json](https://sandboxphysics.com/stories/galaxy-colors/photometry-grid.json)
- [stellar-populations.json](https://sandboxphysics.com/stories/galaxy-colors/stellar-populations.json)
- [sdss-filters.json](https://sandboxphysics.com/stories/galaxy-colors/sdss-filters.json)
- [reproduce-sdss.py](https://sandboxphysics.com/stories/galaxy-colors/reproduce-sdss.py)
- [reproduce-sdss.ts.txt](https://sandboxphysics.com/stories/galaxy-colors/reproduce-sdss.ts.txt)

## 亲手观察

### [在可控观测里认出换峰](https://sandboxphysics.com/zh/labs/galaxy-colors-photometric-redshift/)

1. 先选默认模拟观测，再关闭 u。比较两个红移区域，然后再比较最高峰的数字。
2. 回到真实输出，查看第二十三行套用与不套用近似 AB 偏移时的结果，分清星系变了还是推断变了。

## 练习与答案

二十四个区间有二十二个包含真值，为什么仍不能证明百分之六十八区间校准准确？

校准关心同一方法在目标总体反复使用时的覆盖表现。这里样本小且有选择，区间可能很宽，假定误差下限也会改变区间。观测比例是一项描述性检验，抽样误差与选择不确定性都很大。

[上一篇：红移分布有两座峰，就保留两种答案](https://sandboxphysics.com/zh/stories/galaxy-colors/when-redshift-has-two-answers/) [下一篇：带着样本选择读 EAZY 与 Euclid 红移校准](https://sandboxphysics.com/zh/stories/galaxy-colors/reading-photoz-reliability/)

## 来源与计算范围

1. [Hogg et al., The K correction, astro-ph/0210394v1 (2002)](https://arxiv.org/abs/astro-ph/0210394v1)

   式 (2)—(12)：光谱密度、光子响应、红移因子与 AB K 改正。本课程采用光度距离，波长谱密度按每埃定义。

2. [Bruzual & Charlot, Stellar population synthesis at the resolution of 2003, astro-ph/0309134v1](https://arxiv.org/abs/astro-ph/0309134v1)

   第 2—3 节说明恒星族模型与光谱随年龄的演化。太阳金属丰度、Salpeter 单次形成模型来自 EzGal 固定文件；课程固定这些假设，不把拟合年龄当成一般星系年龄。

3. [SDSS DR17 imaging fluxes and flux calibration](https://www.sdss4.org/dr17/algorithms/fluxcal/)

   AB 零点与物理流量小节给出近似 u 偏移、尚不确定的 z 偏移及其误差。教程固定取 specObjID 排序前二十四个干净主样本星系光谱，保留线性 modelFlux 与逆方差。

4. [SDSS public-release use and acknowledgement policy](https://www.sdss4.org/collaboration/)

   公开发布的星表数据可使用，并应注明 Sloan Digital Sky Survey 及其合作组。教程使用星表数字，没有使用巡天图像。

5. [Brammer, van Dokkum & Coppi, EAZY: A Fast, Public Photometric Redshift Code, arXiv:0807.1533v1 (2008)](https://arxiv.org/abs/0807.1533v1)

   第 2.1—2.5 节依次讨论模板组合、模板误差、先验与输出红移；第 3.3 节及第 4 节，尤其图 8—11，把误差模型和先验接到真实验证。课程的有限恒星族后验是独立教学计算。
