国家生命统计系统 NVSS — 美国的出生与死亡全账本

五十七个登记辖区 · 年 670 万份生命事件 · 定宽微数据

来源 https://www.cdc.gov/nchs/nvss/index.htm发布时间: 2026-10-28最后更新: 2026-10-28 阅读 10
国家生命统计系统 NVSS — 美国的出生与死亡全账本

信息速览

数据集名称国家生命统计系统 NVSS — 美国的出生与死亡全账本
数据类型原始数据链接,元数据,人工标注
规模年度约 670 万份生命事件记录(2024 年口径)
接入方式https://www.cdc.gov/nchs/nvss/index.htm
AI 就绪度

美国的生命统计不是一份调查问卷,而是一套由法律强制驱动的登记流程:每一次活产、每一例死亡,都要在事发地填一张标准证书,经州与市级登记处编码,再汇到联邦层面。NVSS 就是这套流程的名字,也是它产出的那批年度微观数据文件的名字。

它看起来像一张巨大的表,实际上更像一个按年份切片的档案柜:出生文件从 1968 年排到 2025 年,死亡多死因文件从 1968 年排到 2024 年,每一年一个压缩包,包内是定宽 ASCII 文本、一份记录布局说明和三种统计软件的读入语句。字段位置随证书修订而移动,跨年份拼接时必须先对齐布局。

本篇按「它是什么、怎么构成、怎么拿、哪里会错」四层来写,所有规模、年份、阈值均取自 CDC 与 NCHS 官方页面,未经二次统计。一屏速览见下表。

维度 内容
正式全称 National Vital Statistics System(国家生命统计系统)
运营机构 美国 CDC 下属国家卫生统计中心(NCHS),与各辖区登记处协作
制度性质 法定生命事件登记,非抽样调查、非自愿上报
登记辖区 五十州 + 哥伦比亚特区 + 纽约市 + 五个属地,共五十七个
覆盖事件 活产、死亡、胎儿死亡、婴儿死亡、婚丧(婚丧仅汇总数)
年度事件量 2024 年出生约 363 万、死亡约 307 万
公开文件起点 1968 年(出生与死亡均为该年)
公开文件格式 逐年 zip,内含定宽 ASCII 与 SAS/SPSS/Stata 语句
最新公开年份 出生 2025,死亡多死因 2024
地理粒度 公开版到州;县及以下需申请受限数据
死因编码 ICD-10,一条根本死因 + 最多二十条多重死因
在线查询 CDC WONDER,聚合表 + XML 查询接口
抑制规则 计数小于十的统计量与人口数被抑制
著作权 美国政府作品,无著作权;受 NCHS 保密条款约束
主要门槛 定宽解析、跨年布局漂移、地理受限、编码版本断点
典型替代 CDC WONDER(聚合)、HMD(跨国)、EHR 队列(个体病程)

§1 它要解决的具体麻烦

1.1 一个国家需要一个「人人都必须进来一次」的登记册

绝大多数医学数据集是「选出来」的:某家医院、某个时间段、某种疾病、某批愿意签知情同意的人。NVSS 的逻辑相反,它是「必须进来」的——在美国境内发生的每一例活产与死亡,法律要求在规定时限内向辖区登记处申报,辖区再把去标识化的记录汇交联邦。这套机制的产物不是样本,而是全量事件的年度账本。

这个差别决定了它能回答什么。抽样队列适合估计关联强度,全量登记适合数人头:某年某县某年龄段的死亡数是多少、某种死因在五年里上升了多少、某个州的婴儿死亡率是否高于全国。前者怕选择偏倚,后者怕漏登与错编码,两类错误的方向完全不同。

也正因为是登记制,它的字段是「证书上写了什么」而不是「研究者想知道什么」。一张死亡证明上有死者的人口学信息、死亡地点、根本死因与若干促成因素,但没有血压、没有用药、没有住院病程。想要临床变量,必须另找队列再做链接,而链接本身又受地理受限的约束。

这个定位带来一个反直觉的结论:数据越完整,单条记录的信息量反而越少。因为要覆盖三亿人,证书只能问所有人都答得出的问题;一旦要问只有医院才有的指标,覆盖就会立刻掉到抽样水平。完整性与深度在这类系统里是互斥的,NVSS 明确选了前者。

理解这个取舍,才能理解它为什么在几十年的时间里不断被拿来当分母,却很少被拿来做特征工程。分母需要的是「一个不漏」,特征工程需要的是「每个都细」,两种需求指向不同的数据形态。

1.2 三条常见的错误期待

第一条是把 NVSS 当成一次横断面调查。它不是抽样,没有抽样权重,也没有「应答率」这个概念;反过来,它也没有问卷式的行为与态度字段。用调查数据的思路去加权,会得到一套无意义的权重。

第二条是把 CDC WONDER 当成 NVSS 的全部。WONDER 是查询界面,输出的是聚合表,行是「某年某县某死因的死亡数」,不是一份一份的证书。想要逐条记录做建模,必须去下载年度文件,或者申请受限版本。

第三条是以为公开文件里什么都有。自 2005 年起,含州、县或大城市地理细节的全国微观文件不再公开发布,公开版把地理压到州一级,同时删去一批准识别字段。这一条是很多人做完第一版分析才发现的前提。

1.3 它能给到的与给不到的

你的需求 它给的 够不够
数清某年某地的死亡人数 逐条死亡记录与聚合查询两条路径 够,且是权威口径
看死因谱的长期变化 1968 年以来的逐年多死因文件 够,但需处理 ICD-9 到 ICD-10 的断点
分析出生结局与母婴风险 逐年出生文件,含体重、孕周、妊娠风险 够,字段随证书修订增减
追踪某个患者的病程 无 不够,需链接 EHR 或理赔
拿到县以下地址或坐标 公开版没有,受限版有县 部分够,需申请
做个体级临床预测 只有证书字段 不够,缺少检验与用药
与基因组或影像配对 无任何生物样本标识 不够,需自行申请链接
估算罕见暴露的归因风险 事件级计数齐全 够,但小样本会被抑制
复现某篇论文的年龄标化率 提供人口分母与标准人口 够,但需固定标准人口版本

1.4 你的处境与它能帮到的事

你的处境 它能帮你什么 下一步该做什么
手上只有医院队列,想知道该人群在全县死亡中的占比 提供全量死亡计数作分母 先用 WONDER 拉县级聚合,再决定是否申请受限记录
要做一个跨十年的死因趋势图 逐年文件与统一 ICD-10 段可直接拼接 先确认 1999 年前后编码版本,再决定是否只用 1999 年后
要评估某政策的围产结局效应 出生文件的体重、孕周、支付方式可做前后对比 先检查该州证书修订年份,避免字段定义中途改变
要做死亡风险预测模型 提供人群基线率与协变量分布 先明确预测目标是人群率还是个体风险,后者需外部队列
要给一篇公卫论文找权威分母 官方人口分母与标化方法 固定使用官方公布的分母版本并在文中注明
要做多国死亡率对比 可比口径的美国一侧 跨国比较优先用 HMD 或 WHO MDB,NVSS 只作美国细粒度补充

1.5 一句话判断

它不是一个可以拿来训练模型的「数据集」,而是一套可以拿来校准所有美国人群结论的「底账」;把它当底账用,价值极高,把它当临床队列用,一定会失望。

1.6 不适合谁:四条边界

第一,不适合需要纵向随访同一个体的研究。每条记录是事件级的,出生与死亡之间没有稳定的个人主键,跨文件配对要靠受限的链接文件。

第二,不适合需要临床细节的研究。证书上没有实验室值、影像、用药与生命体征,任何以生理参数为输入的模型都无法直接使用它。

第三,不适合需要县以下空间精度的研究。公开版止步于州,想做普查区级分析只能走受限数据申请,周期以月计。

第四,不适合把「事件数」直接当「患者数」的统计。一个人可以在同一年产生一条出生记录与一条死亡记录,也可以多次跨州登记,去重规则必须先想清楚。

§2 数据构成与规格

2.1 五个文件族,各有各的记录布局

NVSS 对外发布的微观文件不是一个包,而是五个族:出生(natality)、死亡多死因(mortality multiple cause)、胎儿死亡(fetal death)、链接出生婴儿死亡(linked birth/infant death)、以及匹配多胎与胎儿死亡(matched multiple birth)。每个族按年切分,每年一个 zip,包内通常包含数据文件、用户指南与读入语句。

文件族 一行是什么 起始年 最新年 典型体量
出生(natality) 一例活产 1968 2025 最新年约 227 MB 压缩
死亡多死因(MCD) 一例死亡 1968 2024 最新年约 146 MB 压缩
胎儿死亡 一例二十周及以上的胎儿死亡 1982 前后 2024 数十 MB 级
链接出生婴儿死亡 一例婴儿死亡与其出生记录配对 1983 前后 2024 期/2023 队列 四百 MB 级
匹配多胎 一组多胎妊娠及其胎儿死亡 1995 前后 2024 较小

需要说明的是,起始年一栏里胎儿死亡与链接文件的年份在不同文档里有不同表述,官方门户以「可得的最早年份」列出,跨族拼接时应以门户当年列出的文件为准,而不是以本表为准。

2.2 字段字典:证书上写了什么,文件里就有什么

死亡与出生两族的字段来源不同,前者围绕「怎么死的」,后者围绕「怎么生的」。下表按语义分组列出核心字段,具体变量名与位置以官方用户指南的记录布局为准。

组别 核心字段 取值形态 备注
事件标识 死亡年份、州、登记号 整数 / 定长字符 登记号在州内唯一
人口学 年龄、性别、种族、族裔、婚姻状况 分组码 种族有单一与桥接两套口径
地理 居住州、居住县、死亡发生州 代码 公开版县字段被抹去
死亡情境 死亡地点、死亡方式、是否尸检 分类码 死亡地点含医院、家中、临终关怀等
根本死因 单条 ICD-10 编码 四位数编码 每条记录唯一
多重死因 最多二十条 ICD-10 编码 记录轴编码串 含实体轴与记录轴两种表示
伤害字段 伤害意图、伤害机制、工作相关 分类码 仅外部原因死亡有意义
社会字段 教育、职业、行业 分类码 部分州缺失率高
出生—母婴 母亲年龄、教育、种族、孕次产次 分组码 修订年份间定义有变
出生—妊娠 妊娠风险、感染、糖尿病、吸烟 是/否/未知 2003 版证书后扩充
出生—分娩 分娩方式、是否引产、是否试产 分类码 与剖宫产率分析强相关
出生—新生儿 出生体重(克)、孕周、Apgar、先天异常 整数 / 分类码 体重与孕周是围产研究主轴
支付 分娩支付来源 分类码 含医疗补助、私人保险、自付

多重死因的表示方式值得单独说一句:一条死亡记录既有「实体轴」形式(把每个病因与其对应的部位、时限拆开记),也有「记录轴」形式(把编码压成不超过二十条的条件串)。做共病分析要用记录轴,做因果链分析要回到实体轴,两者不能混。

字段层面还有六个容易踩的点,逐条说明:

  • 年龄在婴儿段用分钟与小时表示,直接转年份会把新生儿死亡算成零岁成人。
  • 死亡地点是分类码,居家、临终关怀、医院、途中死亡各有码位,不能只按「医院内死亡」一刀切。
  • 尸检状态是三分变量,含「未知」,把它并入「未尸检」会抬高未尸检比例。
  • 教育程度在晚年死亡里常由家属代答,缺失与「未知」的界限模糊。
  • 种族在部分州按自报填写,在另一些州按殡葬主管观察填写,口径不同。
  • 出生文件里的孕周在早期年份以末次月经推算为主,2003 版证书后改用结合超声的产科估计,两者不可混算。

2.3 一条记录的完整解剖

以一条死亡记录为例,公开文件里它就是一行定宽字符。下面的代码块演示如何按位置切出几个核心字段,位置值仅作示意,真实值必须查当年记录布局。

#-- 演示:按定宽位置切一条死亡记录(位置取自当年用户指南,此处为示意值)
from dataclasses import dataclass

LAYOUT = {
    "residence_state": (1, 2),
    "year": (3, 6),
    "sex": (69, 69),
    "age": (70, 73),
    "race": (75, 76),
    "hispanic": (78, 78),
    "underlying_cause": (146, 149),
    "record_axis": (450, 589),
}

@dataclass
class DeathRecord:
    residence_state: str
    year: int
    sex: str
    age: int
    race: str
    hispanic: str
    underlying_cause: str
    record_axis: str

def parse(line: str) -> DeathRecord:
    def cut(key: str) -> str:
        a, b = LAYOUT[key]
        return line[a - 1:b].strip()
    return DeathRecord(
        residence_state=cut("residence_state"),
        year=int(cut("year")),
        sex=cut("sex"),
        age=int(cut("age")) if cut("age").isdigit() else -1,
        race=cut("race"),
        hispanic=cut("hispanic"),
        underlying_cause=cut("underlying_cause"),
        record_axis=cut("record_axis"),
    )

with open("MORT2024.txt", encoding="latin-1") as fh:
    for i, raw in enumerate(fh):
        rec = parse(raw.rstrip("\n"))
        print(rec.year, rec.residence_state, rec.underlying_cause)
        if i >= 4:
            break

这段代码有两个容易忽略的点。编码要用 latin-1 或单字节口径读,用 UTF-8 会在遇到高位字节时报错;行尾可能是 CRLF,rstrip 只去换行符,固定宽度切片才不会错位。

2.4 文件清单与体量结构

官方门户按族列年份,每个年份一个下载链接,附带文件大小。体量的年度变化本身携带结构信息:1990 年代的死亡文件普遍在八十 MB 上下,2010 年代后期升到一百 MB 以上,主因是多重死因字段扩容与死因文本长度增加,而不是死亡人数翻倍。出生文件的体量更大,最新一年压缩后超过二百 MB,因为它的字段数本就是死亡文件的两倍上下。

按族看,出生族每年一个压缩包,2015 年起另附属地包;死亡多死因族每年一个包;胎儿死亡族与匹配多胎族体量小,通常只有十 MB 级;链接出生婴儿死亡族最大,因为它要把两份记录并在一起,分「期」与「队列」两种口径各发一份,压缩后常在四百 MB 以上。

解压后的形态高度一致:一个不含表头的定宽文本,一份记录布局说明,一套 SAS、SPSS、Stata 的读入语句。文本没有分隔符,字段之间靠位置区分,所以「打开看看」这一步对普通表格软件是无效的。

2.5 与同类资源的字段差异

把 NVSS 放进同类资源里看,它的独特性在「事件全量 + 证书字段」这个组合,而不在字段丰富度。

资源 记录单位 地理粒度 临床字段 死因编码 年度连续性
NVSS 生命事件 公开到州 无 ICD-10,含多重死因 1968 起逐年
CDC WONDER 聚合单元 到县 无 ICD-10 1999 起
HMD 人群—年份 国家 无 按死因分组 部分国家到十九世纪
EHR 重症队列 住院次 单中心 极丰富 有但非登记口径 视机构而定
全国健康调查 受访者 到州 自报与体检 无 周期横断面
医保理赔 就诊记录 到县 诊断与操作 有,非根本死因 视支付方而定

§3 制度的骨架:谁在填、按什么填、凭什么填

3.1 五十七个辖区,五十七套登记处

美国的生命事件登记权在州,不在联邦。五十个州、哥伦比亚特区、纽约市(与纽约州分开登记)以及五个属地——波多黎各、维尔京群岛、关岛、美属萨摩亚、北马里亚纳群岛——各自运营登记处,共五十七个申报单位。NCHS 不与个人打交道,它通过合同与这些辖区交换数据。

这个结构解释了很多现象。为什么属地的数据单独打包,因为它们的证书版本与编码节奏跟五十州不同步;为什么纽约市要单列,因为它的登记量足以独立成表,且历史上一直独立申报;为什么某些字段的缺失率在州与州之间差别很大,因为填报是医院与殡葬机构在做,培训与系统在各州并不统一。

还有一层:辖区的登记系统各自采购,电子化进度参差。有的州早已全流程电子申报,有的州到近年仍在处理纸质表格的转录。这决定了同一年的数据在不同州的新鲜度不同——临时数据阶段,电子化程度高的州先到齐,纸质为主的州后补,全国合计因此在季中偏低。

这种「先到先得」的补齐模式,对做实时监测的人是机会,对做趋势比较的人是陷阱。任何用季中数据画的州间比较,实际上混入了上报速度的信息。

辖区类型 数量 是否单列文件 说明
州 五十 并入全国文件 主体
特区 一 并入全国文件 与州同级
纽约市 一 历史上单列统计表 与纽约州分开登记
属地 五 单独打包 证书版本与节奏不同
合计 五十七 — 官方口径的申报单位数

3.2 标准证书:字段漂移的源头

全国并不存在一张「联邦证书」。NCHS 与各辖区协作制定标准证书范本,各辖区据此立法采用,采用时间可以相差数年。出生证书最近一次大修在 2003 年,死亡证书同样在 2003 年前后改版,胎儿死亡报告另有版本。改版意味着字段增删与位置移动,也意味着同一年份不同州的数据在语义上并不完全等价。

这段历史对使用者有一个直接后果:跨年拼接时不能假设列号稳定。正确做法是逐年读取当年的记录布局,把需要的字段先映射到统一的自定义列名,再纵向合并。

证书 最近大修 主要变化 对分析的影响
出生 2003 版 增加妊娠风险、感染、吸烟等字段 2003 年前后风险因素不可直接比
死亡 2003 版 调整教育、种族、伤害字段 社会字段的分组口径变化
胎儿死亡 2003 版 与出生证书部分对齐 胎儿死亡与出生字段可部分互译

3.3 编码:从死因文本到 ICD-10

死亡证明上的死因是医生手写的文本,进入文件前要经过编码。NCHS 提供自动化编码工具,把文本映射成 ICD-10 编码,再由人工复核疑难记录。编码规则决定了「根本死因」的判定:一份证明上可能写了四五个病因,只有一条被选为根本死因,其余进入多重死因。

美国死亡数据在 1999 年切换到 ICD-10,此前使用 ICD-9。NCHS 为此发布过 ICD-9 与 ICD-10 的对照文件,供跨版本比较使用。这个断点是所有长时段趋势分析的第一道坎:不处理它,1998 与 1999 之间的跳变会被误读成真实的流行病学变化。

时期 死因分类 文件形态 拼接注意
1979–1998 ICD-9 定宽文本 需对照表映射到 ICD-10 组
1999 至今 ICD-10 定宽文本 同年内可直接比
1968–1978 ICD-8 定宽文本 组码更粗,仅适合大类比较

3.4 法律基础:为什么它几乎不会缺年头

NVSS 能连续五十余年不断档,靠的不是资金,而是法律义务。各州立法要求医师、殡葬主管、法医在规定时限内申报死亡,要求医院申报出生,逾期有罚则。登记是取得死亡证明、社保结算、遗产处理的前置条件,因此申报率天然接近满值。

这也带来一个副作用:数据里几乎没有「拒绝参与」这一项,但却有「延迟申报」与「补登」。临时数据与最终数据的差额,很多时候就是迟到的记录。

这条链路有五个环节,每个环节都有自己的时限与产物:

  • 事件发生:医院、殡葬机构或法医在数日内填出纸质或电子证书,死因由主治医师或法医书写。
  • 辖区登记:州与市级登记处受理,做完整性检查,缺项退回补录,产物是州级数据库记录。
  • 汇交联邦:辖区按月或按季批量提交,产物是全国文件的底稿。
  • 编码与编辑:NCHS 做死因编码、一致性检查与口径统一,产物是可发布记录。
  • 发布:随年度报告与公开文件放出,产物是最终数据文件。

五个环节里最不可控的是第一个。证书填写的质量取决于填表人的训练与时间压力,法医与医院两条填写路径的完整度差异,最终会沉到统计里变成地区差异。

3.5 州权结构带来的口径碎片

登记权在州,意味着同一套标准证书在不同辖区的落地时间、培训强度与电子化程度都不同。这种碎片化不会写在年度文件里,它会以「同一年份不同州的字段缺失率不同」的形式隐性存在。

对使用者的直接影响有三层。第一层,跨州比较某个边缘字段时,差异可能主要来自填报习惯而不是真实的人群差异。第二层,部分州在证书修订后的一两年内仍按旧版格式提交,NCHS 需要做转换,转换规则未必对每个字段都可逆。第三层,属地的编码节奏更慢,把它们直接并入全国合计会让最近一年的数据偏向五十州。

应对方式很朴素:优先使用核心字段(年龄、性别、死因、地理),把边缘字段(职业、教育、孕期吸烟)当作辅助变量,并在方法段注明字段的辖区覆盖差异。凡是结论高度依赖某个边缘字段的研究,都应当先做一次分州稳健性检查。

§4 从一份证书到一行数据:质量怎么被做出来

4.1 三层发布:临时、预发布、最终

同一年的死亡数据会以三种形态出现。临时数据(provisional)在事件发生后数周内更新,用于监测;预发布数据补齐大部分辖区但仍可能修订;最终数据在次年随年度报告发布,此后一般不再改动,除非发现编码错误。CDC WONDER 上同时挂着「临时」与「最终」两套查询,界面相近,口径不同。

形态 时滞 完整性 是否会被修订 适用
临时 数周 部分辖区未到 会 监测、预警
预发布 数月 接近完整 可能 季度分析
最终 次年 完整 一般不修订 论文、正式统计
修订版 不定期 完整 已修订 替换旧结论

混用两层是复现失败的高发原因:用临时数据算出的某县死亡数,在最终版里可能差出两位数,因为迟报的记录补进来了。做时间序列时,全篇必须锁定同一层。

4.2 抑制规则:小于十就不显示

隐私保护的第一道闸是计数抑制。CDC WONDER 的规则很直接:死亡或出生统计中,计数在一到九之间的单元被抑制;人口数小于十的单元同样被抑制。婴儿死亡的年龄组与活产分母另有附加约束。抑制不是删除记录,而是在聚合输出里把格子留空。

场景 是否抑制 原因
某县某年某死因死亡数为七 抑制 小于十
某年龄组人口数为八 抑制 小于十
全国总死亡数 不抑制 远超阈值
县级婴儿死亡按单岁组 可能附加抑制 婴儿分母另有约束
公开微观文件中的单条记录 不抑制 已去标识,但无地理细节

这条规则对建模有实质影响:基层单元的小计数缺失不是随机缺失,而是与单元规模直接相关,任何忽略抑制机制的插补都会系统性高估小县的事件数。

4.3 种族与族裔:两套口径不能混用

美国人口分母有两套种族口径。桥接口径把多种族人口按规则分配到四个单一种族组,用于与 2000 年以前的历史数据衔接;单一口径自报多个种族,分为六组、十五组或三十一组。WONDER 的死亡数据在 1999 至 2020 段用桥接口径,2018 年之后提供单一口径。

口径 分组数 年份段 用途
桥接 四组 1999–2020 长时段可比
单一(六组) 六组 2018 起 与现行人口估计一致
单一(十五组) 十五组 2018 起 亚裔等细分
单一(三十一组) 三十一组 2018 起 最细,抑制更多

把 2021 年的单一口径数据接在 2019 年的桥接数据后面画一条线,得到的「种族间差距扩大」有一部分是口径变化造出来的。正确做法是分段呈现,或在重叠年份用同一口径重建。

4.4 案例:一份 2024 年库克县死亡证明的三年旅程

假设 2024 年 3 月,伊利诺伊州库克县一家医院有一位七十二岁男性死亡,死因为慢性阻塞性肺疾病急性加重,合并高血压与糖尿病。这份证明的旅程,能把这套系统的每一个延迟与转换点串起来。

第零天,主治医师在电子死亡登记系统里填写死亡证明,写入根本死因、两条促成因素、死亡地点、是否尸检。第三条,医院的病历编码员用自动编码工具把文本映射成 ICD-10 编码,根本死因落到 J44 段,两条合并症进入多重死因字段。第七天,库克县登记处受理,检查字段完整性,发现教育程度为空,退回补录。

第三十天,记录进入伊利诺伊州登记库;第九十天,随季度批量汇交到 NCHS。NCHS 侧做编辑与一致性检查,把种族与族裔按两套口径重新编码,把死亡地点映射到标准分类,把「是否工作相关」按伤害规则判定。此时这条记录同时具备实体轴与记录轴两种死因表示。

第两百天,它出现在临时数据里,成为某周县级计数的一个单位;第两百八十天,进入预发布;次年,随最终文件发布,落在 2024 年的定宽文本里,位置由当年布局决定。此后再过一年,它被纳入某个州的年龄标化率分母。

这条记录在全程中被看过至少六次,但没有任何一次能看到姓名与地址——公开版里连县都被抹掉,只剩州。它既是一条完整的医学结论,也是一条被层层削减过的统计单元。

4.5 质量的三根支柱

完整性靠法律,一致性靠编码规则,可比性靠对照文件。三者缺一,长时段分析就会失真。

支柱 机制 失效表现 检查方法
完整性 强制申报 + 时限罚则 迟报造成临时数据偏低 比对临时与最终同格计数
一致性 自动编码 + 人工复核 同一文本不同年份编码不同 抽查同码文本样本
可比性 ICD 对照表 + 种族桥接 断点处出现假跳变 查断点年份的双口径重叠

4.6 与外部数据链接:增益与代价

NVSS 最常用的外挂是国家死亡索引(NDI)。研究者把自己的队列——临床试验、疾病登记、医保理赔——送去匹配,换回匹配对象的死亡日期与死因。这条路径把「有临床细节的个体」和「有权威死因的结局」接在一起,代价是申请周期、费用与匹配误差。

链接的误差有两个方向:队列成员移出美国后死亡,不会被 NDI 捕获,造成结局漏计;姓名与出生日期拼写差异会造成匹配失败,同样漏计。两者都会让观察到的死亡率偏低,且偏低的幅度与人群流动性相关。

链接方式 输入 输出 主要误差
NDI 批量匹配 姓名 + 出生日期 + 社保号后四位 死亡日期、死因、州 移居海外漏计
登记—理赔链接 登记号 就诊轨迹 需双方授权
地理链接 县代码 区域社会经济指标 2005 年后公开版无县
概率链接 准识别字段组合 匹配概率 假阳性随字段减少上升

做链接前,有四件事必须先定下来,否则结果无法解释:

  • 匹配字段组合,是否用社保号后四位,直接决定匹配率的高低。
  • 匹配阈值的取舍,宽松提高召回但引入假阳性,严格相反。
  • 观察窗,随访截止日与数据可用年要对齐,否则大量记录被误判为存活。
  • 报告口径,匹配率、漏配率与假阳性率要同时报,只报匹配率会掩盖问题。

这四项里,观察窗最容易被忽略。用 2024 年的死亡文件配 2023 年底截止的队列,最后两个月的死亡根本没进文件,算出来的生存曲线会偏高。

§5 怎么把数据拿到手

5.1 四条通道,四种颗粒度

通道 粒度 鉴权 交付形态 适合
年度公开文件 逐条记录 无 zip 内定宽文本 建模、批量统计
CDC WONDER 网页 聚合表 无 网页表格 快速取数、核对
WONDER XML 接口 聚合表 无 XML 自动化流水线
受限数据申请 逐条 + 县 提案评审 安全环境内分析 空间分析、链接

顺序建议是先 WONDER 后文件:先用聚合查询确认量级与口径,再去下载几十 GB 的年度包,能省掉大量无效下载。

5.2 WONDER 的一次查询长什么样

WONDER 的查询界面把「分组维度」和「度量」分开选。分组维度是可选的:年份、州、县、年龄组、性别、种族、死因;度量是死亡数、粗率、年龄标化率及其置信区间。选定后生成一张交叉表,可导出为制表符文本。

控件 取值示例 注意
数据集 最终多死因 2018–2024 与临时集分开
分组 年份 × 州 × 年龄组 维度越多抑制越多
度量 死亡数 / 粗率 / 标化率 标化率需选标准人口
死因 ICD-10 四位码或选中死因表 选中表跨年稳定
地理 居住地或发生地 两者含义不同
输出 表格 / 图表 / API API 需拼 XML

年龄标化率用的是 2000 年美国标准人口,这个选择会影响与其他研究的可比性。跨研究比较前,先确认对方用的是哪套标准人口。

5.3 用 XML 接口把查询变成可重跑的脚本

WONDER 的接口接收一个 XML 请求体,返回同样结构的 XML。下面这段代码演示最小结构:请求某年分州的死亡数。参数里的分组码来自查询表单,改动分组时要同步改码。

#-- 通过 CDC WONDER 的 XML 接口取「某年分州死亡数」
import requests
from xml.etree import ElementTree as ET

URL = "https://wonder.cdc.gov/controller/datarequest/D158"

params = {
    "M_1": "D158.M1",            #-- 度量:死亡数
    "B_1": "D158.V9",            #-- 分组:年份
    "B_2": "D158.V10",           #-- 分组:居住州
    "F_D158.V9": "2022",         #-- 过滤:年份
    "O_show_totals": "true",
    "O_precision": "1",
    "O_timeout": "300",
    "O_accept_data_use": "true",
    "V_D158.V9": "2022",
}

resp = requests.post(URL, data=params, timeout=300)
resp.raise_for_status()
root = ET.fromstring(resp.text)

for row in root.iter("r"):
    cells = [c.text for c in row.findall("c")]
    print("\t".join("" if c is None else c for c in cells))

接口有三点必须注意。第一,请求体里要显式接受数据使用条款,否则返回的是条款页面而不是数据。第二,超时参数是服务端的,设得太小会拿到截断结果。第三,同一查询在维度过多时会触发抑制,返回的格子是空的而不是零,解析时要区分空串与数字零。

5.4 下载年度文件并自查完整性

年度文件没有统一的校验清单,下载后要自己验。最省事的做法是先测压缩包结构,再抽样解析前若干行,确认宽度与布局说明一致。

#-- 下载 2024 年死亡多死因文件并做结构与抽样检查
mkdir -p nvss/2024 && cd nvss/2024
curl -L -o mort2024.zip "https://www.cdc.gov/nchs/data_access/vitalstatsonline.htm#mort"
unzip -t mort2024.zip
unzip -o mort2024.zip
ls -lh
awk 'NR<=3 {print length($0)}' VS24MORT.DUSMCPUB 2>/dev/null || true
for f in *.txt *.TXT; do [ -e "$f" ] && awk 'NR<=3 {print length($0)}' "$f"; done
md5sum *.zip 2>/dev/null || md5sum ./*.zip

实际文件名随年份变化,先 ls 再解析比写死文件名稳妥。行宽是重要线索:如果解析出的行长与用户指南里的记录长度不符,多半是下载不完整或换行符被转换过。

5.5 跨年对齐:把漂移的列号收进一张映射表

跨年分析的核心工作是把每年不同的位置映射到统一列名。做法是维护一张映射表,一年一行,键是语义名,值是当年的起止位置。

#-- 用一张「年份 → 字段位置」映射表,把多年数据竖着拼起来
import csv

FIELDS = ["state", "year", "sex", "age", "ucod"]

LAYOUT_BY_YEAR = {
    2018: {"state": (1, 2), "year": (3, 6), "sex": (69, 69), "age": (70, 73), "ucod": (146, 149)},
    2024: {"state": (1, 2), "year": (3, 6), "sex": (69, 69), "age": (70, 73), "ucod": (146, 149)},
}

def convert(path: str, year: int):
    layout = LAYOUT_BY_YEAR[year]
    with open(path, encoding="latin-1") as fh, open("out.csv", "a", newline="") as out:
        writer = csv.writer(out)
        if out.tell() == 0:
            writer.writerow(FIELDS)
        for line in fh:
            line = line.rstrip("\r\n")
            row = []
            for name in FIELDS:
                a, b = layout[name]
                row.append(line[a - 1:b].strip())
            writer.writerow(row)

convert("VS18MORT.DUSMCPUB", 2018)
convert("VS24MORT.DUSMCPUB", 2024)

示例里两年位置相同只是为了说明结构,真实情况是每改一次证书就换一次位置。维护这张表的成本,是这类数据分析的主要工程开销。

5.6 受限数据:要县以下地理就必须走这条路

2005 年起,含州、县或大城市地理细节的全国微观文件不再公开发布。需要这些细节的研究者要向 NCHS 研究数据中心提交提案,说明研究目的、变量需求、保密措施与输出审查方案,通过后在受控环境内分析,结果出门前要经过披露审查。

环节 内容 典型周期
预沟通 与数据中心确认变量可得性 数周
提案 研究设计、变量清单、保密计划 一至两月
评审 方法学与披露风险 数月
签约 使用条件、罚则 数周
分析 受控环境内运行 按项目
输出审查 结果披露检查 每次提交

代价是时间,收益是空间精度。如果研究问题只需要州级差异,公开文件完全够用,不必付这个成本。

5.7 取数环节的六个高频错误

错误 后果 纠正
用 UTF-8 读定宽文件 行宽错乱、解析越界 改单字节编码
把空串当零 抑制格被算成无事件 区分缺失与零
混用临时与最终 计数不可复现 全篇锁定同一层
跨 1999 年直接拼死因 断点假跳变 用对照表映射
桥接与单一混用 种族差距虚高 分段或统一口径
忽略属地包 全国合计偏小 合并后去重

5.8 把文件侧结果和查询侧结果对拍

同一批数据有两条入口,就有一次免费的质检机会。把文件侧的聚合结果与 WONDER 同条件查询对齐,能在正式分析前抓出绝大多数配置错误。对拍按下面八步走:

  • 固定年份层,两边都用最终数据,不用临时数据。
  • 固定地理层级,两边都用居住地或都用发生地,不能一边居住一边发生。
  • 固定死因口径,两边都用 ICD-10 四位码,或都用同一张选中死因表。
  • 固定种族口径,2018 年以后尤其要注意桥接与单一的差别。
  • 固定年龄分组,单岁组与五岁组的汇总值应能互推。
  • 核对总数,先对全国合计,再对州,最后对县。
  • 核对抑制格,WONDER 留空的格子,文件侧可能有权重为零的记录。
  • 记录差额,若差额集中在某个州,多半是该州的迟报或补充提交。

这八步走完,通常能在半天内定位问题。跳过它对拍直接投产,错误往往要等到论文投稿被审稿人指出才暴露。§4.4 的案例里那条记录,在文件侧与查询侧的表现就不完全一致:查询侧因为抑制看不到它,文件侧它一直在。

§6 它在这座库里的位置

6.1 关系图谱

NVSS 是这批资料里唯一「以生命事件为行」的全量登记源。它与其他词条的关系不是替代,而是分工:有人提供聚合视图,有人提供跨国对照,有人提供临床细节。

库内词条 关系 差异要点
CDC WONDER 同一体系的两个面 WONDER 是查询界面,NVSS 是制度与文件
BRFSS 互补 行为与自报健康,抽样调查,无死因
HMD 互补 跨国长时段死亡率,人口—年份粒度
NHANES 步数表 无关但常被混 体检与可穿戴,非登记
Danish NPR / Swedish NPR 结构类比 北欧患者登记,入院级,有个人主键
ICES 结构类比 省级人口级链接平台,可及性更强
SEER-Medicare 上下游 癌症登记 + 理赔,可与 NDI 链接
CMS Medicare LDS 上下游 理赔侧,含诊断但不含根本死因
MIMIC 系 粒度反差 单中心重症,含波形与病程

和 CDC WONDER 的关系最容易被误解。WONDER 上的数字来自 NVSS,但 WONDER 只给聚合表,且有自己的抑制与口径规则;NVSS 的年度文件给逐条记录,但没有 WONDER 那种即时查询的便利。做探索用前者,做建模用后者,两者结论在同一口径下应当一致,不一致时先查年份层与种族口径。

6.2 三条检索路径

你要找的东西 走哪条路 关键词
某个死因的年度趋势 WONDER → 多死因 → 选中死因表 死因、年份、标化率
出生结局与母亲特征 年度出生文件 出生体重、孕周、妊娠风险
死亡与临床队列配对 NDI 匹配 死亡索引、链接、匹配
县级空间格局 WONDER 聚合或受限申请 县、居住地、发生地
跨国比较 转 HMD 或 WHO 口径 寿命表、年龄别死亡率

6.3 与六个近邻的逐项区隔

与 CDC WONDER 的区隔:WONDER 是同一批数据的一个视图。它回答「某格子里有多少」,不回答「这一条记录长什么样」。需要逐条记录、需要自定义派生变量、需要做机器学习特征工程时,必须回到年度文件。

与 BRFSS 的区隔:BRFSS 是电话调查,测的是活人的行为与自报健康状况,有抽样权重,没有死因,也没有全量覆盖。想研究「吸烟者后来死因如何」,两者要链接;单独用任何一个都答不了。

与 HMD 的区隔:HMD 是人口—年份矩阵,跨国、长时段、经过清洗与平滑,适合算寿命表与跨国比较,但没有个体记录,也无法细分到州以下。NVSS 的美国部分更细,HMD 的国际部分更广。

与 NHANES 的区隔:NHANES 是体检与问卷的周期横断面,有血压、血糖、体测,样本量以千计,用于估计人群分布。NVSS 没有这些测量,但覆盖全部事件。两者常被拿来做「人群基线 + 事件结局」的组合,属于互补而非竞争。

与 Danish NPR、Swedish NPR 的区隔:北欧登记有全国唯一的个人标识,可以无摩擦地纵向追踪,这是 NVSS 做不到的。代价是规模小、死因细节依赖同一套编码体系。做方法学迁移时,北欧结果不能直接外推到美国的人群异质性。

与 SEER-Medicare、CMS 理赔的区隔:理赔数据有就诊轨迹与诊断码,但没有权威根本死因;SEER-Medicare 通过链接补上了死亡信息。NVSS 是这些链接的终点而不是起点——它提供结局,不提供暴露。

6.4 三种组合方式的取舍

实际项目里很少有人只用 NVSS,更多是三选一的组合。第一种是「聚合起步」:用 WONDER 把关键率拉出来,写判断,不再进文件层。它适合政策简报与快速评估,一周内能出结论,代价是无法做个体分层与自定义派生变量。

第二种是「文件自建」:下载若干年份的公开文件,建自己的事实表,做分层与建模。它适合学位论文与需要复现的研究,成本在一到两周的解析与对拍,收益是全部字段自由可用。

第三种是「链接扩展」:以自有队列为主表,向 NDI 或受限数据申请匹配,把死因结局接上去。它适合临床队列的长期随访,成本最高,周期以月计,收益是把「失访」变成「有结局」。

选择时可以问三个问题:结论需要个体层还是群体层?需要县以下地理吗?需要与已有的临床变量配对吗?三个问题里只要有一个答「需要个体层」,就得走第二或第三条路。反过来,如果只是想知道某年某地的量级,第一条路就够了——多数项目其实属于这一类。

§7 质量评估与局限

7.0 阅读本节前的一个前置校正

多数数据集的质量评估问的是「标注准不准、切片干不干净」。用这套尺子量 NVSS 会产生系统性误判:它没有标注员,没有训练/测试切分,也没有金标准复核环节。它的质量体现在另外三处——事件是否被登记、编码是否按规则、口径是否前后一致。

另一个常见误判是把「字段少」当成「质量低」。证书字段少是制度设计的后果,不是采集失败。评估时应当先问「这套字段能不能支撑我的问题」,再问「它在自己的目标上做得如何」。

7.1 五维评分与 DAIMS 24 项

维度 评分 依据
覆盖完整性 5 / 5 法定强制登记,全量事件,无抽样
时间纵深 5 / 5 1968 年起逐年,制度史可上溯更早
结构可用性 3 / 5 定宽文本、年度布局漂移,解析成本高
语义清晰度 4 / 5 编码规则公开,但证书版本多、口径要辨
合规与开放度 4 / 5 免费公开,但地理受限、链接需审批

DAIMS 评估按四组二十四项打分,每项满分一,合计二十四。评分只反映「AI-ready 程度」,不反映科学价值。

组 项 判据 分
发现 持久标识 有固定入口页与版本年 1
发现 元数据可检索 门户可按族与年份定位 1
发现 引用规范 官方给出引用格式 1
发现 版本记录 逐年文件即版本 1
发现 变更说明 证书修订有文档 1
发现 语种 仅英文 0.5
获取 免鉴权下载 公开文件直接可取 1
获取 批量接口 仅聚合层有接口 0.5
获取 断点续传 常规 HTTP 支持 1
获取 校验清单 无官方哈希 0
获取 限速说明 未集中说明 0.5
获取 稳定 URL 门户链接多年稳定 1
结构 机器可读格式 定宽文本,非自描述 0.5
结构 模式定义 记录布局随年发布 1
结构 主键 州内登记号,跨州不唯一 0.5
结构 编码表 ICD-10 与分类码公开 1
结构 单位约定 克、岁、日,明确 1
结构 缺失表示 空串与特殊码并存 0.5
质量 完整性声明 有发布政策 1
质量 一致性检查 编辑规则公开 1
质量 溯源 可回溯到证书层 1
质量 已知缺陷清单 分散在多份文档 0.5
质量 抑制机制 明确阈值 1
质量 更新承诺 年度发布,节奏稳定 1
合计 — — 19.5 / 24

十九点五分不算高,扣分集中在「非自描述格式」「无校验清单」「主键不跨州唯一」三处——恰好都是工程侧的成本,而不是科学侧的缺陷。

7.2 三个系统性偏差

地理收缩偏差。 2005 年之后公开版没有县,研究者若只用公开文件做空间分析,实际上是在州级做生态学推断,结论的粒度被悄悄放大。这类研究的「县级差异」往往是州内异质性的平均值。

编码版本偏差。 死因编码从 ICD-9 切到 ICD-10,分类粒度变细,某些病因的计数在切换年跳变。阿尔茨海默病、流感与肺炎这类编码规则敏感的病因,跳变尤其明显。

申报行为偏差。 死亡证明由医生填写,填写的完整度与医院类型、法医制度、地区习惯有关。教学医院与社区医院对「促成因素」的填写密度不同,直接比较多重死因的条数会得到假的地区差异。

三类偏差之外,还有一个不那么显性的来源:分母。分子来自登记,分母来自人口估计,两者由不同机构产出,修订节奏也不同。人口估计在十年普查之间会做年度更新,遇到普查年还会整体回溯修正。用旧分母配新分子,会得到一条平白无故的率变化曲线。

处理办法是把分母版本写进代码,而不是写进记忆。每次重跑都用同一版人口估计,并在结果目录里留一份分母快照,半年后回头核对时才有依据。

7.3 已知的、可枚举的偏差

偏差 方向 影响面 缓解
县以下地理缺失 空间粒度变粗 2005 年后公开文件 申请受限数据
ICD 版本断点 计数跳变 1998/1999 交界 用对照表重分组
种族口径切换 组间差距失真 2018 年后 分段呈现
多重死因填报密度差 地区间不可比 全部年份 只用根本死因比
属地分文件 全国合计偏小 全部年份 合并去重
迟报 临时数据偏低 最近一年 用最终数据
职业与行业缺失 社会梯度估计偏弱 部分州 改用教育代理
链接漏配 死亡率偏低 NDI 匹配 报告匹配率

7.4 外部验证矩阵

矩阵里没有「独立金标准」这一列,因为登记系统本身就是金标准的一部分。能做的是内部一致性与跨国口径对照,而不是找一个更高的裁判。逐项看,可参照的对照关系有以下六条:

  • 年度死亡总数对照官方年度报告,属同源核对,只用于确认当年文件是否完整。
  • 年龄别死亡率对照 HMD 的美国序列,一致性高,差异主要来自分母口径。
  • 婴儿死亡率用链接文件重算,需以活产数为分母,重算结果应与官方报告吻合。
  • 死因谱对照 WHO 死因库,一致性中等偏高,差异来自归组规则。
  • 州级出生数对照各州卫生部门年报,辖区口径一致,可直接比。
  • 县级死亡数只能用受限数据重算,公开版无法直接验证。

这六条里,前三条是日常质检,后三条是跨源校验。做发表级结论时,至少要跑完前三条,并在方法段写明用的是哪一条。

7.5 它为何能持续:登记是取得法律身份的前置条件

这套系统能连续运行半个多世纪,靠的不是科研经费的持续性,而是它在社会运行中的位置:没有死亡证明,遗产无法处理、保险无法结算、遗体无法处置;没有出生证明,人无法取得身份号码。登记因此不是「配合研究」,而是「办理事务」的副产品。需求侧稳定,供给侧的年度发布就不会断。

7.6 上手前的十二项检查

以下清单按调研顺序排列,逐条过一遍,能挡住大部分返工:

  • 确认研究问题要群体率还是个体行,前者不必下载文件。
  • 确认年份层,临时、预发布、最终三者只能选一。
  • 确认地理层级,公开版最高到州,县级要申请。
  • 确认死因口径,四位码与选中死因表不可混算。
  • 确认种族口径,2018 年后注意桥接与单一的切换。
  • 确认年龄分组,单岁组在 WONDER 上抑制更重。
  • 确认分母来源,标化率要用官方人口估计。
  • 确认证书修订年,跨修订年的字段要单独映射。
  • 确认属地是否纳入,纳入后要处理交叠年份。
  • 确认文件编码,定宽文本一律按单字节读。
  • 确认对拍方式,§4.4 的案例展示了同一记录在两侧的不同表现。
  • 确认引用格式,写清数据年份、访问日期与口径。

十二项里最容易漏的是第八项与第十一项,前者影响字段语义,后者影响结论可信度。两项都不需要额外数据,只需要在读第一行代码之前多想五分钟。

§8 生态位与历史

8.1 一条从「十州试点」到「五十七辖区」的线

时间 事件 意义
1900 前后 死亡登记区起步,覆盖少数州与城市 联邦开始汇总死亡数
1915 出生登记区设立 出生统计有了统一底座
1933 全部州加入出生登记区 全国口径首次完整
1960 NCHS 成立,NVSS 定型 统计职能集中
1968 公开微观文件起点 可复现研究成为可能
1979 死因转用 ICD-9 编码体系换代
1999 死因转用 ICD-10 第二次换代
1999 CDC WONDER 上线死因查询 聚合取数平民化
2003 出生与死亡证书大修 字段扩充
2005 公开文件去掉县以下地理 空间精度收缩
2018 单一种族口径并行 口径双轨
2020 年代 电子登记与现代化项目推进 时滞缩短

这张表里最容易被低估的是 1933 年——在那之前,「全国出生数」是估算而不是清点。任何引用 1933 年之前全国出生率的研究,用的都是拼补数据。

8.2 三个参照系里的位置

在统计体系里,它是美国的官方底账,与人口普查、经济普查并列,但粒度更细、频率更高。在医学研究里,它是结局变量的来源,常年出现在流行病学论文的方法段。在人工智能里,它是表格数据的极端形态:行数极大、列数中等、语义强、噪声结构化。

参照系 它的角色 不可替代之处
官方统计 生命事件权威口径 法律强制,全量覆盖
流行病学 分母与结局 长时段、可分层
机器学习 大规模表格基座 真实人群、真实缺失
卫生政策 效果评估的对照 政策前后可比

8.3 现在的位置:默认分母,而非默认训练集

过去十年,美国人群层面的几乎所有率,都以它为分母。与此同时,它在机器学习社区的存在感并不高,原因是解析成本与地理限制——能直接喂进模型的表格数据太多了,没人愿意先写三百行解析代码。

这个错位正在被工具链抹平。随着 DuckDB、Polars 这类工具对定宽与半结构化数据的支持变好,把年度文件转成列式格式的成本从数天降到数小时,它的可用性会显著上升。

三个参照系对它的期待并不相同,混着用会出差错。统计体系要的是口径稳定,任何口径改动都要有说明;流行病学要的是分层能力,样本量越大越好,宁可牺牲字段丰富度;机器学习要的是可解析与可复现,格式是否漂亮不影响模型,但解析错一位就全盘皆错。

因此同一份文件在不同人手里会变成不同的东西:统计口径下的年度表、流行病学里的分层率、机器学习里的特征矩阵。三者都对,前提是各自把转换过程写清楚。

8.4 未来的三个变量

第一是时滞。电子死亡登记普及后,临时数据与最终数据的间隔在缩短,监测价值上升。第二是地理政策。受限数据的申请流程与披露审查规则若有调整,会直接改变空间研究的可行性。第三是编码体系。ICD-11 的落地时间表会影响下一个断点出现的位置。

§9 使用指引

9.1 三种角色的路径

角色 起点 关键动作 交付物
公共卫生研究者 WONDER 聚合查询 锁定年份层与种族口径 率与趋势表
数据工程师 年度文件 建布局映射表,转列式 可查询的事实表
临床 AI 团队 NDI 链接 先解决匹配率与伦理审批 带死因结局的队列

三条路径的分岔点在第一步:如果问题只需要率,就不要碰逐条记录;如果问题需要个体特征,就必须接受链接成本。

按角色再细化一步,各自的第一个动作与第一个坑如下:

  • 公共卫生研究者:先拉三年同口径的聚合表,坑是把标化率当成真实率来解释。
  • 数据工程师:先读一年的用户指南并写下布局表,坑是直接复用去年的列号。
  • 临床 AI 团队:先算一次试点匹配率,坑是假设匹配率接近满分。
  • 政策分析者:先固定政策实施年,坑是把实施当年的过渡期算进效应。
  • 教学使用者:先做一份百行样例,坑是一上手就下全量文件。

五个角色的共同点是要先做小样本验证。NVSS 的文件太大,任何错误都会被规模放大,先在小样本上跑通全流程,比在大文件上调试快一个数量级。

9.2 一条最短的可用流程

目标:把两年的死亡文件转成一张可查询的表,并算出分州死亡数。流程只依赖命令行工具与一个嵌入式数据库。

#-- 建工作目录,放两个年份的原始文件
mkdir -p work/raw work/out && cd work/raw
#-- 手工从门户下载后放入,文件名按年份命名
ls -lh
cd ../..
#-- 把定宽文本转成 CSV(字段位置示意,实际按当年布局改)
import csv

SPEC = {"state": (1, 2), "year": (3, 6), "ucod": (146, 149)}

def to_csv(src: str, dst: str) -> None:
    with open(src, encoding="latin-1") as fin, open(dst, "w", newline="") as fout:
        w = csv.writer(fout)
        w.writerow(list(SPEC))
        for line in fin:
            line = line.rstrip("\r\n")
            w.writerow([line[a - 1:b].strip() for a, b in SPEC.values()])

to_csv("work/raw/VS22MORT.DUSMCPUB", "work/out/mort2022.csv")
to_csv("work/raw/VS23MORT.DUSMCPUB", "work/out/mort2023.csv")
#-- 用 DuckDB 合并并聚合,输出分州死亡数
CREATE TABLE mort AS
SELECT * FROM read_csv_auto('work/out/mort2022.csv')
UNION ALL
SELECT * FROM read_csv_auto('work/out/mort2023.csv');

COPY (
  SELECT state, year, COUNT(*) AS deaths
  FROM mort
  WHERE ucod <> ''
  GROUP BY state, year
  ORDER BY state, year
) TO 'work/out/state_deaths.csv' (HEADER, DELIMITER ',');

这段流程的产出是一张小表,可用来与 WONDER 上同条件的查询结果对拍。对得上,说明布局与过滤条件都对了;对不上,先查年份层,再查是否漏了属地包。

9.3 引用方式

官方要求引用时标明数据来源与年份,并引用 NCHS 的方法文档。学术写作里常用下面这种形式。

National Center for Health Statistics. Multiple Cause of Death, 2018-2024,
Single Race. Compiled from data provided by the 57 vital statistics
jurisdictions through the Vital Statistics Cooperative Program.
Accessed via CDC WONDER on 2026-10-28.

National Center for Health Statistics. Natality, 2024.
Public Use File. Hyattsville, Maryland: NCHS, 2025.

引用年份要以实际使用的文件为准,不要照抄示例。用了受限数据还要注明数据中心编号与审查批号。

§10 AI 使用声明

项目 说明
文本生成 由 AI 起草,经人工核对官方页面后定稿
数字来源 仅取自 CDC、NCHS 官方页面与门户文件列表
未做的事 未下载全量文件做逐条统计,未做分布估计
代码状态 示例经静态复核,未在生产环境跑通
已知不确定 部分起始年份在不同文档表述不一,已标注
数据使用 未访问任何受限数据,未做个体级推断
责任边界 使用前请以官方用户指南为准
更新机制 官方发布新年后,本篇年份区间需同步

常见误读(避坑清单)

说法 实际 证据
「NVSS 是一个数据集」 是制度加一批年度文件的集合 官方首页定义与门户分族列表
「WONDER 上的就是原始数据」 WONDER 给的是聚合表,且经抑制 WONDER 隐私政策页
「下载了就能拿到县」 2005 年起公开版无县以下地理 受限数据页说明
「它是抽样调查,要加权」 法定全量登记,无抽样权重 官方「最古老的政府间共享」表述
「死亡数就是患者数」 事件级记录,一人可多条 记录单位说明
「跨年直接拼列号」 证书修订会移动字段位置 各年用户指南布局
「1999 年前后可直接连着画」 ICD-9 到 ICD-10 有断点 官方对照文件
「种族分组一直一样」 桥接与单一两套口径并行 WONDER 数据集说明
「可以用它训练临床预测模型」 无检验、无用药、无病程 字段字典
「数据和 WONDER 数字对不上就是错」 多半是年份层或口径不同 §4.4 的案例所示流程
「它是 CDC 做的调查」 是法定登记,不是调查 官方关于页的登记权描述
「年份越新越可靠」 最近一年多为临时数据 三层发布机制

FAQ

Q1:NVSS 和 CDC WONDER 是同一个东西吗?
不是。NVSS 是登记制度与微观文件的集合,WONDER 是建在其上的在线查询界面。前者给逐条记录,后者给聚合表。

Q2:公开文件能拿到县级地理吗?
公开微观文件止步于州。WONDER 上可以按县查聚合数,但那是聚合,不是记录。需要县级记录要向 NCHS 研究数据中心申请。

Q3:为什么出生文件比死亡文件多一年?
出生文件已发到 2025 年,死亡多死因文件最新为 2024 年。两族发布节奏不同,做同年度配对要先对齐年份。

Q4:死亡记录里的多重死因怎么用?
先决定分析目标:共病计数用记录轴,因果链分析用实体轴。两者不能混在一张表里直接相加。

Q5:可以用它做个体级预测模型吗?
可以做人群率的建模与分层分析,个体级临床预测价值有限,因为字段只有证书内容。要补临床变量必须走链接。

Q6:数据要付费吗?
公开文件免费。受限数据不收数据费,但要付申请与审查的时间成本,部分情形涉及数据中心使用费。

Q7:为什么同一个县的死亡数在两次查询里不一样?
大概率是一次查了临时数据、一次查了最终数据,或者种族口径不同。先统一这两项再比较。

Q8:能把 NVSS 和 MIMIC 直接合并吗?
不能直接合并,两者没有共同主键。可行路径是先做地理或时间层的生态链接,个体级链接需要额外授权。

Q9:年龄标化率该用哪套标准人口?
官方默认 2000 年美国标准人口。跨研究比较时,确认对方用的标准人口版本,必要时重算。

Q10:属地数据要不要并进全国合计?
看研究范围。并了要防止重复计数,因为属地包与全国包在个别年份存在交叠。

Q11:文件那么大,必须先全量下载吗?
不必。可以先用 WONDER 确认量级,再只下载需要的年份。单年死亡文件压缩后一百多 MB,全量五十余年才是几十 GB。

Q12:这套数据会被停止公开吗?
目前没有停止公开的迹象,公开文件与聚合查询仍在按年更新。受限数据的政策可能调整,使用时以当年公告为准。

术语表

术语 含义
NVSS 国家生命统计系统,制度与文件的合称
NCHS 国家卫生统计中心,CDC 下属
生命事件 出生、死亡、胎儿死亡、婚丧等法定登记事项
根本死因 引发死亡链条起点的那个病因
多重死因 证明上列出的全部病因,最多二十条
实体轴 把病因与部位、时限拆开的死因表示
记录轴 把死因压成条件串的表示
ICD-10 第十版国际疾病分类,美国 1999 年起用于死因
桥接种族 把多种族人口分配到四个单一种族组的口径
单一种族 自报多种族并分组的口径
登记辖区 独立运营登记处的州、城市或属地
标准证书 NCHS 与辖区协作制定的证书范本
定宽文本 每个字段占固定字符位置的纯文本格式
记录布局 说明各字段起止位置的文档
抑制 小于阈值的统计单元不显示
临时数据 事件后数周发布、随后会被修订的数据
最终数据 次年发布、一般不修订的数据
受限数据 含地理细节、需审批后使用的版本
NDI 国家死亡索引,用于队列死亡匹配
研究数据中心 提供受限数据受控分析的设施
属地 波多黎各、关岛等五个非州辖区
年龄标化率 按标准人口结构折算后的率
生态学推断 用群体数据推断个体关系的分析
时滞 事件发生到数据发布之间的间隔
活产 有呼吸或其他生命迹象的娩出,是出生文件的纳入标准
围产期 围绕分娩前后的一段时期,具体周数定义随统计口径变化
口径 统计时所采用的定义、分组与分母约定
链接 把两份来源的记录按准识别字段配对的过程

附录 A:核心数字核对表

项 值 来源 来源层级
登记辖区数 五十七 NCHS 关于页 官方页面
2024 年出生数 3,628,934 FastStats 出生页 官方页面
2024 年死亡数 3,072,666 FastStats 死亡页 官方页面
出生公开文件起点 1968 年 数据门户 官方页面
出生公开文件终点 2025 年 数据门户 官方页面
死亡文件起点 1968 年 数据门户 官方页面
死亡文件终点 2024 年 数据门户 官方页面
最新死亡包体量 约 146 MB 数据门户 官方页面
最新出生包体量 约 227 MB 数据门户 官方页面
抑制阈值 小于十 WONDER 说明页 官方页面
多重死因上限 二十条 WONDER 说明页 官方页面
地理收缩起始 2005 年 受限数据页 官方页面
婴儿死因选表 一百三十类 WONDER 说明页 官方页面
成人死因选表 一百一十三类 WONDER 说明页 官方页面
死因编码切换年 1999 年 NCHS 关于页 官方页面
WONDER 死亡库起点 1999 年 WONDER 多死因页 官方页面
桥接口径年份段 1999–2020 WONDER 多死因页 官方页面

附录 B:数字的来源分层

本篇把数字分成三级,标注方式贯穿全文:

  • 一级,官方页面直接写明。辖区数、年份区间、体量、抑制阈值、多重死因上限,都属于这一层,可直接引用。
  • 二级,官方文档可推算或他处印证。文件族的起始年、证书修订年、部分体量区间,属于这一层,正文用「前后」「约」标注。
  • 三级,未核实。部分属地的具体起始年、个别字段的缺失率,属于这一层,正文不给出具体值。

凡标注为「前后」「约」的年份与体量,均属第二层,使用时以当年门户列表为准。这样分层的目的不是推卸责任,而是让后来者知道哪个数字可以照抄、哪个必须回查。

附录 C:完整参考文献

  1. National Center for Health Statistics. National Vital Statistics System 首页. cdc.gov/nchs/nvss
  2. NCHS. About the National Vital Statistics System. cdc.gov/nchs/nvss/about_nvss.htm
  3. NCHS. Vital Statistics Online Data Portal. cdc.gov/nchs/data_access/vitalstatsonline.htm
  4. NCHS. Restricted-Use Vital Statistics Data. cdc.gov/nchs/nvss/nvss-restricted-data.htm
  5. NCHS. Multiple Cause of Death 2018–2024 数据说明. wonder.cdc.gov/wonder/help/mcd-expanded.html
  6. NCHS. Multiple Cause of Death 1999–2020 数据说明. wonder.cdc.gov/wonder/help/mcd.html
  7. NCHS. Births: Final Data for 2024. FastStats 出生页
  8. NCHS. Mortality in the United States, 2024. FastStats 死亡页
  9. CDC WONDER. WONDER Online Databases 入口. wonder.cdc.gov

以上九条均为官方来源,无二次文献。若需引用方法学细节,应另引 NCHS 的用户指南与生命统计报告系列,这些文档随年度文件一同发布,不单独列出。

附录 D:任务代码

把任意年份的死亡文件转成列式表,并输出分州、分年龄组的计数,用于与聚合查询对拍。

#-- 通用转换:按布局表切字段,输出 Parquet
import duckdb

LAYOUT = {"state": (1, 2), "year": (3, 6), "age": (70, 73), "ucod": (146, 149)}

def width_of(layout: dict) -> int:
    return max(b for _, b in layout.values())

def build(src: str, year: int, table: str) -> None:
    cols = ", ".join(
        f"substr(line, {a}, {b - a + 1}) AS {name}" for name, (a, b) in LAYOUT.items()
    )
    con = duckdb.connect("nvss.duckdb")
    con.execute(f"""
        CREATE OR REPLACE TABLE {table} AS
        SELECT {cols}, {year} AS file_year
        FROM read_csv('{src}', delim='\\x01', header=false, columns={{'line': 'VARCHAR'}})
    """)
    con.close()

build("work/raw/VS24MORT.DUSMCPUB", 2024, "mort2024")
#-- 分州分年龄组计数,空死因行剔除
SELECT state, age, COUNT(*) AS deaths
FROM mort2024
WHERE ucod <> ''
GROUP BY state, age
ORDER BY deaths DESC
LIMIT 50;

附录 E:如果只记五件事

序 要点
一 它是法定登记的全量事件账本,不是抽样调查,没有权重
二 公开文件从 1968 年起逐年发布,出生到 2025、死亡到 2024
三 格式是定宽文本,字段位置随证书修订漂移,跨年必须先建映射
四 2005 年起公开版没有县,空间分析要申请受限数据
五 它的价值在分母与结局,不在临床细节;补细节只能靠链接

编辑说明

本篇核验时间为 2026 年 10 月 28 日,核验方式为直接访问 CDC 与 NCHS 官方页面及 CDC WONDER 说明页,未下载全量数据文件,未对任何个体记录做统计。

初稿由 AI 依据上述页面起草,数字口径以官方页面为准;凡官方文档之间表述不一致处,已在正文标注「前后」「约」,未做取舍性判断。

未覆盖内容:各属地单独的文件起始年、逐字段缺失率、受限数据的具体费用与排期。这些需要逐年文档比对或向数据中心询价,超出本篇范围。

若官方发布新年份文件,需同步更新 §2.1 的年份区间与附录 A 的核对表。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • hmd — 共享标签:公共卫生与流行病学 / 死亡登记 / 公共卫生统计 / 流行病学
  • cdc-wonder — 共享标签:死亡登记 / 公共卫生统计 / 流行病学
  • human-mortality-database — 共享标签:公共卫生与流行病学 / 死亡登记 / 公共卫生统计
  • jphc — 共享标签:公共卫生与流行病学 / 死亡登记 / 流行病学
  • who-mortality-db — 共享标签:公共卫生与流行病学 / 死亡登记 / 公共卫生统计
  • hfa-europe — 共享标签:公共卫生与流行病学 / 死亡登记 / 公共卫生统计
  • fair-health-atlas — 共享标签:公共卫生与流行病学 / 公共卫生统计 / 流行病学
  • nutrition5k — 共享标签:公共卫生与流行病学 / 流行病学
  • datasus — 共享标签:公共卫生与流行病学 / 死亡登记
  • who-sti-prevalence-atlas — 共享标签:公共卫生与流行病学 / 公共卫生统计 / 流行病学

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集