NHANES — 美国国家健康与营养检查调查 AI-Ready Wikipedia | 千方医数集

55年纵向·~5千人/年·~300项生物标志物·免费公开·横断面+死亡率链接

来源 美国国家卫生统计中心 (NCHS/CDC) url: https://www.cdc.gov/nchs/nhanes/发布时间: 2026-08-14最后更新: 2026-08-14 阅读 53

信息速览

数据集名称NHANES — 美国国家健康与营养检查调查 AI-Ready Wikipedia | 千方医数集
数据类型约13万累计参与者(1999-2026),300+项实验室生物标志物
规模约13万累计参与者
接入方式 美国国家卫生统计中心 (NCHS/CDC) url: https://www.cdc.gov/nchs/nhanes/
AI 就绪度

数据集封面

千方医数集 · AI-Ready 数据集 Wikipedia · 第 49 篇 · [nhanes/99]

信息维度 内容
全称 National Health and Nutrition Examination Survey
运营机构 国家卫生统计中心 (NCHS),CDC 下属
起始年份 1971(前身 NHES 始于 1959)
调查类型 横断面调查(连续,每两年周期)
样本规模 ~5,000 人/年(~10,000 人/2 年周期)
累计参与者 130,000+(连续 NHANES 1999-2026)
目标人群 美国平民非机构化人口(全部年龄)
数据维度 人口统计 / 饮食 / 体检 / 实验室 / 问卷(5 大组件)
生物标志物 300+ 项(血糖/HbA1c/胆固醇/维生素 D/重金属/PFAS 等)
数据格式 SAS 传输文件 (.XPT),~1,600 个文件,~5 GB
公开访问 免费下载,无需注册
限制访问 NCHS 研究数据中心 (RDC),提案 + DUA + 培训
死亡率链接 NDI 概率匹配,随访至 2019-12-31
30 年协调集 134,310 名参与者,4,740 个变量
许可证 公有领域(美国政府作品)
AI 就绪度 DAIMS 20/24(83.3%)⭐⭐⭐⭐☆
使用规模 65,000+ 篇 PubMed 论文

§0 E-E-A-T 信任声明与免责声明

维度 声明
专业性 (Experience) 本条目由千方病案医学编辑部撰写,内容综合 CDC/NCHS 官方文档、PubMed 同行评审论文、NHANES 分析教程及独立第三方评测
专长性 (Expertise) 编辑部成员具备流行病学、营养学、生物统计学和机器学习交叉背景,熟悉 NHANES 复杂抽样设计和权重分析方法
权威性 (Authoritativeness) 数据来源限定为 CDC/NCHS 官方网站(wwwn.cdc.gov/nchs/nhanes/)、USDA Food Surveys Research Group、PubMed 索引论文和 NCHS Analytic Guidelines
可信性 (Trustworthiness) 所有数值(样本量、响应率、生物标志物数量、论文数量)均标注来源或可从 NCHS 官网交叉验证
透明性 (Transparency) 本条目基于 v3.9 模板写作,结构、字段和评估标准完全公开
审核机制 [千方病案医学编辑部] 交叉审核:NHANES 调查设计、权重方法、实验室编码体系、AI/ML 应用、局限性与偏倚

免责声明:本条目为数据集百科介绍,不构成医疗建议。NHANES 数据为横断面调查设计,大多数分析无法建立因果关系。使用 NHANES 数据进行研究时必须遵循 NCHS Analytic Guidelines,正确应用抽样权重和方差估计方法。未经授权不得尝试重新识别调查参与者。研究发表时须引用:CDC/NCHS, National Health and Nutrition Examination Survey Data, Hyattsville, MD: HHS, CDC。

页面状态published

§1 数据集概览

§1.0 📌 30 秒速览

NHANES(National Health and Nutrition Examination Survey)是美国 CDC 下属 NCHS 主导的全国代表性健康与营养调查。它起源于 1971 年(前身 NHES 可追溯至 1959 年),1999 年转为连续调查,每两年发布一个数据周期。NHANES 的独特性在于将入户面谈(人口统计、社会经济、饮食、健康行为)、移动检查中心 (MEC) 标准化体检(人体测量、血压、口腔健康、听力视力、DXA 体成分)和实验室检测(300+ 项生物标志物,含血糖/HbA1c/胆固醇/维生素 D/重金属/环境化学物)高度结合,每年约 5,000 人接受完整检查。公开数据以 SAS 传输格式 (.XPT) 免费向全球开放,无需注册。NCHS 通过与国家死亡索引 (NDI) 链接实现死亡率随访。30 年协调数据集涵盖 134,310 名参与者和 4,740 个变量。NHANES 已支撑 65,000+ 篇 PubMed 论文,是营养流行病学和环境暴露评估的金标准数据源。

§1.1 摘要

NHANES 的核心使命是评估美国成人和儿童的健康与营养状况,监测慢性病患病率和风险因素趋势,建立国家参考数据(如身高、体重和血液营养素水平的标准),以及为公共卫生政策提供证据基础。调查采用复杂的分层多阶段概率抽样设计,目标人群为美国 50 个州和哥伦比亚特区的平民非机构化人口。每年从 15 个县(2025-2026 年扩大至 20 个县)中抽取约 5,000 名参与者,完成入户面谈和 MEC 检查。特定人群(儿童、老年人、非西班牙裔黑人等)被过采样以确保亚组估计的可靠性。

NHANES 的数据采集分为三大环节:入户面谈(CAPI 系统,采集人口统计、社会经济、饮食、健康行为和病史信息)、MEC 体检(4 小时标准化检查,含人体测量、血压、口腔健康、听力视力、DXA 体成分、加速度计等)和实验室检测(血液/尿液样本,300+ 项生物标志物,涵盖代谢、心血管、营养、感染、环境和激素指标)。饮食评估采用 USDA 自动多遍法 (AMPM) 24 小时回忆法,采集 2 个非连续日的饮食摄入数据,由 USDA 与 DHHS 联合执行的 “What We Eat in America” (WWEIA) 项目支撑。

NHANES 数据以 5 大组件发布:人口统计 (DEMO)、饮食 (DIET)、体检 (EXAM)、实验室 (LAB) 和问卷 (Q)。每个 2 年周期包含约 100+ 个独立数据文件(.XPT 格式),累计超过 1,600 个文件、~5 GB。所有公开数据免费下载,无需注册。限制数据(地理标识、基因数据等)通过 NCHS 研究数据中心 (RDC) 按申请访问。NCHS 通过与国家死亡索引 (NDI) 的概率匹配提供死亡率链接文件,随访至 2019-12-31,采用 ICD-10 死因编码。一个 30 年协调项目已将 NHANES III (1988-1994) 和连续 NHANES (1999-2018) 的 614 个文件合并为统一数据集(134,310 名参与者、4,740 个变量),大幅降低了跨周期分析的门槛。

§1.2 为什么 NHANES 对 AI 至关重要

维度 说明
多模态融合 同时包含访谈、体检、实验室、饮食和行为数据,是开发多模态慢性病预测模型的理想平台
全国代表性 复杂抽样设计确保对全美人口的代表性,模型可外推至国家层面
生物标志物深度 300+ 项实验室指标覆盖代谢/CV/营养/感染/环境全谱,支撑多组学分析
环境暴露库 全球最系统的人群环境化学物生物监测数据库(PFAS/重金属/邻苯二甲酸酯/农药/VOCs)
免费开放 公开数据完全免费且无需注册,降低了 AI 研究的数据获取门槛
时间序列 连续 25+ 年(1999-2026)2 年周期数据,支撑健康趋势时序建模
死亡率链接 NDI 链接将横断面调查扩展为生存分析数据源
SDOH 维度 收入、教育、保险、食品安全等社会决定因素变量丰富

§1.3 数据集对比:NHANES 与同类调查

维度 NHANES UK Biobank All of Us NHIS
国家 美国 英国 美国 美国
设计 横断面 + MEC 体检 前瞻性队列 前瞻性队列 横断面面谈
样本量 ~10K/周期 502,506 1,000,000+ ~35K/年
体检数据 有(MEC 标准化) 有(基线+重复影像) 有(部分)
实验室检测 300+ 项生物标志物 多组学/影像 基因组/EHR
饮食数据 AMPM 24h 回忆 ×2 饮食问卷 饮食问卷
环境化学物 有(PFAS/重金属等) 有限 有限
死亡率链接 NDI 链接 NHS 中央登记 国家死亡数据 NDI 链接
费用 免费 £3K-£9K/3yr 免费 免费
时间跨度 1971-2026 2006-2025 2018-2026 1963-2026
AI/ML 论文 65,000+ 16,000+ 增长中 ~5,000+

§1.4 历史时间轴

年份 事件
1959 NHES I 启动(成人 18-74 岁),NCHS 健康检查调查开端
1963 NHES II(儿童 6-11 岁)
1966 NHES III(青少年 12-17 岁)
1971 NHANES I(1971-1975),首次加入营养评估
1976 NHANES II(1976-1980),扩展年龄范围,增加心血管检测
1982 HHANES(1982-1984),西班牙裔健康与营养调查
1988 NHANES III(1988-1994),重大扩展,多元化样本设计
1999 NHANES 转为连续调查,2 年周期发布开始
2002 WWEIA(USDA + DHHS 联合饮食评估)整合
2007 过采样调整:西班牙裔、非西班牙裔黑人、低收入白人、老年人
2011 亚裔美国人首次纳入过采样
2014 加速度计引入(客观体力活动测量)
2017 Pre-pandemic 周期(2017-2020 年 3 月,COVID-19 影响调整)
2019 公开死亡率链接文件更新(随访至 2019-12-31)
2024 30 年协调数据集发布(134,310 人,4,740 变量)
2025 2025-2026 周期启动:新 MEC 车队(5 组 ×3 卡车),20 县/年,电话饮食回忆

§1.5 典型用例

用例 描述 关键变量
糖尿病患病率估计 HbA1c ≥6.5% 或 FPG ≥7.0 mmol/L LBXGH, LBXGLU
环境化学物暴露评估 血清/尿液中 PFAS、重金属浓度趋势 LBXPFAS, LBXBP, LBXTHG
心血管病风险预测模型 ML 模型基于体检+实验室+行为变量 BPXSY, BPXDI, LBXTC, LBXCRP
营养素摄入不足评估 24h 回忆 + NCI Method 估计常量摄入 DR1TOT, DR2TOT
骨质疏松症筛查 DXA 骨密度测量 DXXOS, DXXOB
死亡率关联分析 NDI 链接 + Cox 回归 ELIGSTAT, MORTSTAT, PERMTH_EX
肥胖趋势监测 BMI ≥30 比例年度变化 BMXBMI, BMXWT, BMXHT
口腔健康评估 龋齿/牙周病/缺牙患病率 OHXDENT, OHXSEGD

§2 医学背景

§2.1 ICD-11 与 SNOMED CT 双重映射

NHANES 覆盖多种慢性病和健康状况。以下映射展示 NHANES 核心关注疾病与 ICD-11 和 SNOMED CT 的对应关系。

NHANES 核心关注疾病的 ICD-11 映射
ICD-11 编码 疾病/状况 NHANES 变量来源 涵盖范围
5A12 2 型糖尿病 HbA1c (LBXGH)、空腹血糖 (LBXGLU)、胰岛素 (LBXIN)、糖尿病问卷 (DIQ010) 患病率、未诊断糖尿病、糖尿病前期、血糖控制
BA00 原发性高血压 收缩压 (BPXSY1)、舒张压 (BPXDI1)、高血压问卷 (BPQ020) 患病率、知晓率、治疗率、控制率
5B81 肥胖 BMI (BMXBMI)、腰围 (BMXWAIST)、DXA 体脂 (DXDABMR) 总体肥胖、腹型肥胖、体脂百分比
BA41 缺血性心脏病 心电图、心血管问卷 (CDQ001)、胆固醇 (LBXTC)、HDL (LBDHDL) 心绞痛、心梗史、血脂异常
KA61 慢性肾病 eGFR(计算)、肌酐 (LBXSCR)、白蛋白/肌酐比 (URDACT) CKD 分期、蛋白尿
5B00.1 龋齿 口腔检查 (OHXDENT) DMFT 指数、未治疗龋齿
AB60 听力损失 纯音测听 (AUXAR) 高频听力损失、双耳/单耳
A05.6 骨质疏松症 DXA 股骨/腰椎骨密度 (DXXOF, DXXOL) T 值 ≤-2.5
4A4Y 抑郁症 PHQ-9 问卷 (DPQ010-DPQ090) 抑郁症状严重度、筛查阳性
5B70 铅暴露 血铅 (LBXBP) 儿童血铅水平、成人职业暴露
SNOMED CT 补充映射
SNOMED CT 概念 ID 概念名称 NHANES 对应
440540064 Type 2 diabetes mellitus HbA1c + 糖尿病问卷
59621000 Essential hypertension 血压测量 + 高血压问卷
60621009 Body mass index 人体测量 BMXBMI
51621004 Dental caries 口腔健康检查
62031004 Sensorineural hearing loss 纯音测听
397275000 Vitamin D deficiency 25-羟基维生素 D (LBXVIDMS)
43350006 Iron deficiency anemia 铁蛋白 (LBXFER)、血红蛋白 (LBXHGB)

§2.2 慢性病诊断标准与 NHANES 测量

NHANES 的核心价值在于将标准化测量与公认诊断标准结合,使横断面数据可生成国家级患病率估计。

疾病 诊断标准 NHANES 变量 分类切点
糖尿病 HbA1c / FPG / 自报 LBXGH, LBXGLU, DIQ010 HbA1c ≥6.5% 或 FPG ≥7.0 mmol/L 或自报 + 服药
高血压 SBP / DBP / 自报 BPXSY, BPXDI, BPQ020 SBP ≥130 或 DBP ≥80 mmHg 或服药 (ACC/AHA 2017)
肥胖 BMI BMXBMI BMI ≥30(I 级 ≥30, II 级 ≥35, III 级 ≥40)
血脂异常 TC / HDL / LDL / TG LBXTC, LBDHDL, LBDLDL, LBXTR TC ≥6.2 / LDL ≥4.1 / HDL <1.0 / TG ≥2.3 mmol/L
代谢综合征 NCEP ATP III (5 项中 ≥3) BMI, BP, TC, HDL, FPG 腹型肥胖 + 血压 + 血脂 + 血糖组合
慢性肾病 eGFR / 白蛋白尿 LBXSCR, URDACT eGFR <60 mL/min/1.73m² 或 ACR ≥30 mg/g

§2.3 环境化学物生物监测体系

NHANES 拥有全球最系统的人群环境化学物生物监测数据库,是 EPA 和 FDA 制定监管标准的关键数据基础。

化学物类别 标本 检测方法 代表性指标 NHANES 周期
PFAS(全氟/多氟烷基物质) 血清 SPE-HPLC-MS/MS PFOA, PFOS, PFNA, PFHxS 1999-2018(~1/3 子样本)
重金属 全血/尿液 ICP-MS 铅 (Pb)、镉 (Cd)、汞 (Hg)、砷 (As) 1999-2026(全样本+子样本)
邻苯二甲酸酯 尿液 HPLC-ESI-MS/MS DEHP 代谢物、DBP、BBP 1999-2018
双酚 A (BPA) 尿液 HPLC-MS/MS 总 BPA 2003-2016
农药 尿液/血清 GC-MS/MS 有机氯农药 (DDE)、拟除虫菊酯 1999-2014
挥发性有机物 (VOC) 血液 GC-MS 苯、甲苯、乙苯、苯乙烯 1999-2018
多环芳烃 (PAH) 尿液 HPLC-MS/MS 萘代谢物、芴代谢物 2001-2016
烟草暴露 血清/尿液 immunoassay/LC-MS 可替宁 (cotinine)、NNAL 1999-2026

§2.4 临床转化意义

意义 说明
国家参考范围 NHANES 数据为 BMI 百分位(儿童生长曲线)、胆固醇、维生素 D 等生物标志物建立国家级参考范围
政策评估 叶酸强化政策效果(神经管缺陷下降)、无铅汽油政策效果(血铅水平下降 90%+)
膳食指南 WWEIA 数据直接支撑美国膳食指南 (Dietary Guidelines for Americans) 的制定与修订
监管标准 EPA 参考浓度 (RfD) 和 FDA 食品安全标准使用 NHANES 暴露数据
疾病趋势监测 肥胖患病率从 1970s 的 15% 升至 2018 年的 42%+,直接推动全国预防策略
AI 模型校准 慢性病预测模型(糖尿病、CVD、MASLD)以 NHANES 全国代表性数据校准和验证

§3 数据集规格

§3.0 调查周期版本矩阵

周期 参与者数(面谈) 参与者数(体检) 面谈响应率 体检响应率 数据发布状态
1999-2000 9,965 9,388 82% 76% ✅ 已发布
2001-2002 11,039 10,477 84% 80% ✅ 已发布
2003-2004 10,122 9,643 79% 76% ✅ 已发布
2005-2006 10,348 9,950 80% 77% ✅ 已发布
2007-2008 10,149 9,762 78% 75% ✅ 已发布
2009-2010 10,537 10,253 79% 77% ✅ 已发布
2011-2012 9,756 9,338 73% 70% ✅ 已发布
2013-2014 10,175 9,813 71% 68% ✅ 已发布
2015-2016 9,971 9,544 65% 62% ✅ 已发布
2017-2018 9,254 8,704 52% 49% ✅ 已发布
2017-2020 Pre-pandemic ~10,000 ~9,000 ✅ 已发布
2021-2023 ~10,000 ~9,000 ✅ 已发布
2025-2026 ~10,000(目标) ~9,000(目标) 数据收集中

响应率趋势:面谈响应率从 1999-2000 年的 82% 下降至 2017-2018 年的 52%,体检响应率从 76% 降至 49%。这是 NHANES 面临的最大挑战之一。

§3.1 抽样设计与过采样策略

NHANES 采用复杂分层多阶段概率抽样设计,确保样本对全美平民非机构化人口具有代表性。

四阶段抽样流程

  1. 第一阶段:从全美所有县中按人口特征分层,抽取 15 个初级抽样单元 (PSU)(2025-2026 年:20 个县/年)
  2. 第二阶段:在选中的县内抽取街区或街区组(20-24 个/县)
  3. 第三阶段:在选中的街区内抽取住户(~30 户/街区)
  4. 第四阶段:在选中的住户中通过计算机程序随机选择 1-2 名成员参与

过采样策略(按周期调整)

周期 过采样人群
1999-2006 非西班牙裔黑人、墨西哥裔美国人、12-19 岁青少年、60+ 老年人、低收入白人、孕妇
2007-2010 西班牙裔、非西班牙裔黑人、低收入白人、80+ 老年人
2011-2014 西班牙裔、非西班牙裔黑人、非西班牙裔亚裔、低收入白人、80+ 老年人
2015-2018 同 2011-2014
2025-2026 0-17 岁儿童、65+ 老年人、非西班牙裔黑人

§3.2 样本统计

连续 NHANES 累计参与者(1999-2026,估计)

统计维度 数值
累计面谈参与者(1999-2023) ~130,000+
累计体检参与者(1999-2023) ~120,000+
30 年协调集参与者 134,310(NHANES III + 1999-2018)
30 年协调集变量数 4,740
合并文件数 614
每周期平均参与者 ~10,000
每年面谈/体检参与者 ~5,000
每年覆盖县数 15(2025-2026: 20)
每年 PSU 数 15-20
抽样域数 60-80(年龄 × 性别 × 种族/民族 × 收入)

§3.3 数据格式与大小

维度 规格
文件格式 SAS 传输文件 (.XPT)
累计文件数 ~1,600(1999-2026,全部周期全部组件)
累计大小 ~5 GB
数据组件 5 类:人口统计 (DEMO)、饮食 (DIET)、体检 (EXAM)、实验室 (LAB)、问卷 (Q)
每周期文件数 ~100+
参与者唯一标识 SEQN(Respondent Sequence Number,跨文件合并键)
权重变量 WTMEC2YR(体检权重)、WTINT2YR(面谈权重)、SDMVSTRA(分层伪变量)、SDMVPSU(PSU 伪变量)
子样本权重 部分实验室检测仅覆盖 ~1/3 子样本,需使用对应子样本权重
死亡率链接文件 CSV 格式,公开版 + 限制版
30 年协调集 CSV 和 RData 格式,10 个数据模块
Python 读取 pyreadstat.read_xpt()
R 读取 haven::read_xpt()nhanesA 包直接从 NCHS 下载

§3.4 数据采集流水线

住户筛选 → 家庭面谈 (CAPI)
         ↓
         参与者选择(随机/过采样)
         ↓
    ┌─────────────────────────────────────────────────────┐
    │              Mobile Examination Center (MEC)           │
    │  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌──────────┐   │
    │  │ 人体测量  │ │ 血压/心电图│ │ 口腔检查  │ │ 听力/视力  │   │
    │  │ DXA 体成分│ │ 肺活量   │ │ 加速度计  │ │ 静脉采血  │   │
    │  └─────────┘ └─────────┘ └─────────┘ └──────────┘   │
    │  ┌──────────────────────────────────────────────┐    │
    │  │          MEC ACASI 自填问卷                   │    │
    │  │  (心理健康/性行为/药物使用等敏感话题)           │    │
    │  └──────────────────────────────────────────────┘    │
    │  ┌──────────────────────────────────────────────┐    │
    │  │          饮食回忆 Day 1 (AMPM)                  │    │
    │  └──────────────────────────────────────────────┘    │
    └─────────────────────────────────────────────────────┘
         ↓
    电话饮食回忆 Day 2(3-10 天后)
         ↓
    实验室分析(CDC Division of Laboratory Sciences)
         ↓
    数据编辑/编码/验证/权重计算
         ↓
    公开数据发布 (.XPT) ~9 个月后
         ↓
    限制数据(RDC)申请访问

§3.5 许可证与访问体系

层级 访问内容 要求 费用
公开数据 (Public-Use) 去标识化数据(所有组件、所有周期) 无需注册、无需 DUA 免费
公开死亡率链接文件 NDI 链接死亡率(去标识化) 无需注册 免费
30 年协调数据集 统一变量跨周期数据 无需注册 免费 (CC0)
限制数据 (Restricted) 地理标识(县级/普查区)、详细日期、基因数据 NCHS RDC 提案 + DUA + 保密培训 + IRB RDC 使用费
基因数据 (Genetic) 全基因组/外显子数据 RDC 提案 + 专门审批 RDC 使用费

许可证类型:公有领域(U.S. Government work)。NHANES 数据由联邦政府资金采集,属于公有领域作品,可自由使用、复制和分发。引用要求:CDC/NCHS, National Health and Nutrition Examination Survey Data, Hyattsville, MD: HHS, CDC.

§3.6 基金来源

来源 类型 说明
CDC/NCHS 拨款 联邦拨款 NHANES 核心资金来源,国会年度拨款
USDA ARS 联邦拨款 饮食数据采集与处理(WWEIA 项目)
NIH 联合资助 联邦拨款 特定检测项目补充(如基因组学、老年健康)
EPA 合作 机构合作 环境化学物检测支持
FDA 合作 机构合作 食品安全相关检测支持

§3.7 溯源链

CDC 国会拨款 → NCHS/DHANES 项目规划
         ↓
    抽样设计(NCHS 统计学家)
         ↓
    15-20 县现场团队(Westat 合同承包商)
         ↓
    住户筛选 → 家庭面谈 (CAPI, Blaise 系统)
         ↓
    MEC 检查(Westat 医疗团队 + NCHS 质控)
         ↓
    生物样本 → CDC Division of Laboratory Sciences 分析
         ↓
    USDA FSRG 饮食数据编码(FNDDS + AMPM)
         ↓
    NCHS 数据编辑/编码/权重计算
         ↓
    NCHS 数据质量审查 → 公开发布 (.XPT)
         ↓
    NDI 死亡率链接(NCHS 概率匹配,2 年滞后)
         ↓
    公开数据发布 (wwwn.cdc.gov/nchs/nhanes/)

§4 数据结构详解

§4.0 数据目录树

NHANES/
├── 1999-2000/
│   ├── DEMO.XPT          # 人口统计(SEQN, 年龄, 性别, 种族, 收入, 权重)
│   ├── DIET/
│   │   ├── DR1IFF_X.XPT  # Day 1 个体食物记录
│   │   ├── DR1TOT_X.XPT  # Day 1 总营养素摄入
│   │   ├── DR2IFF_X.XPT  # Day 2 个体食物记录
│   │   └── DR2TOT_X.XPT  # Day 2 总营养素摄入
│   ├── EXAM/
│   │   ├── BMX_X.XPT     # 人体测量(身高, 体重, BMI, 腰围)
│   │   ├── BPX_X.XPT     # 血压(收缩压, 舒张压)
│   │   ├── DXX_X.XPT     # DXA 全身体成分(5 条插补记录/人)
│   │   ├── OHX_X.XPT     # 口腔健康(龋齿, 牙周, 缺牙)
│   │   └── AUX_X.XPT     # 听力(纯音测听)
│   ├── LAB/
│   │   ├── GHB_X.XPT     # 糖化血红蛋白 (HbA1c)
│   │   ├── GLU_X.XPT     # 空腹血糖
│   │   ├── TCHOL_X.XPT   # 总胆固醇
│   │   ├── HDL_X.XPT     # HDL 胆固醇
│   │   ├── VID_X.XPT     # 维生素 D (25-OH-D)
│   │   ├── FER_X.XPT     # 铁蛋白
│   │   ├── PFAS_X.XPT   # PFAS(~1/3 子样本)
│   │   ├── PbCd_Hg_X.XPT # 血铅/镉/汞
│   │   └── ...           # 50+ 实验室文件/周期
│   └── Q/
│       ├── DIQ_X.XPT    # 糖尿病问卷
│       ├── BPQ_X.XPT    # 高血压问卷
│       ├── CDQ_X.XPT    # 心血管问卷
│       ├── DPQ_X.XPT    # 抑郁症 (PHQ-9)
│       ├── SMQ_X.XPT    # 吸烟问卷
│       ├── ALQ_X.XPT    # 饮酒问卷
│       ├── PAQ_X.XPT    # 体力活动问卷
│       └── ...
├── 2001-2002/
├── ...
├── 2017-2018/
├── 2017-2020 Pre-pandemic/
├── 2021-2023/
├── 2025-2026/              # 数据收集中
└── Harmonized/
    ├── mortality.csv       # 死亡率模块
    ├── demographics.csv    # 人口统计模块
    ├── questionnaire.csv  # 问卷模块
    ├── dietary.csv        # 饮食模块
    ├── medications.csv    # 药物模块
    ├── occupation.csv     # 职业模块
    ├── chemicals.csv      # 化学物模块
    ├── comments.csv      # 检测限注释
    ├── weights.csv       # 权重模块
    └── response.csv      # 响应模块

§4.1 NHANES 变量字典

表 1:人口统计与权重(DEMO 组件)
变量名 描述 类型 编码/范围
SEQN 参与者唯一标识符 整数 跨文件合并键
RIAGENDR 性别 类别 1=男, 2=女
RIDAGEYR 年龄(岁) 整数 0-84(85+ 顶层编码)
RIDRETH1 种族/民族(旧版) 类别 1-5
RIDRETH3 种族/民族(新版,含亚裔) 类别 1-7
DMDBORN4 出生国 类别 1=美国, 2=其他
DMDEDUC2 教育水平(成人) 类别 1-5
INDFMPIR 贫困收入比 (PIR) 连续 0-5(<1=贫困线以下)
WTINT2YR 2 年面谈权重 连续 用于面谈数据分析
WTMEC2YR 2 年体检权重 连续 用于 MEC 数据分析
SDMVSTRA 方差分层伪变量 整数 方差估计用
SDMVPSU 方差 PSU 伪变量 整数 方差估计用
SDDSRVYR 数据发布周期 整数 1=1999-2000, …, N
表 2:体检与实验室(EXAM + LAB 组件)
变量名 描述 类型 编码/范围
BMXBMI 体质指数 (BMI) 连续 kg/m²
BMXWAIST 腰围 连续 cm
BPXSY1 收缩压(第 1 次测量) 连续 mmHg
BPXDI1 舒张压(第 1 次测量) 连续 mmHg
DXDABMR DXA 全身骨密度 连续 g/cm²
DXDABFM DXA 全身脂肪质量 连续 g
LBXGH 糖化血红蛋白 (HbA1c) 连续 %
LBXGLU 空腹血糖 连续 mg/dL
LBXTC 总胆固醇 连续 mg/dL
LBDHDL HDL 胆固醇 连续 mg/dL
LBDLDL LDL 胆固醇(计算) 连续 mg/dL
LBXCRP C 反应蛋白 连续 mg/dL
LBXVIDMS 25-羟基维生素 D 连续 nmol/L
LBXFER 铁蛋白 连续 ng/mL
LBXBP 血铅 连续 µg/dL
LBXCAD 血镉 连续 µg/L
LBXTHG 尿汞 连续 µg/L
LBXPFOA 血清 PFOA 连续 ng/mL
LBXPFOS 血清 PFOS 连续 ng/mL
LBDNFOA 尿邻苯二甲酸酯 连续 ng/mL
表 3:问卷与行为(Q 组件)
变量名 描述 类型 编码/范围
DIQ010 医生曾告知糖尿病 类别 1=是, 2=否, 3=边界
DIQ050 服用胰岛素 类别 1=是, 2=否
BPQ020 医生曾告知高血压 类别 1=是, 2=否
BPQ040A 服用降压药 类别 1=是, 2=否
CDQ001 胸痛史 类别 1=是, 2=否
DPQ010-DPQ090 PHQ-9 抑郁症状 类别 0-3(每个条目)
SMQ020 是否吸烟 ≥100 支 类别 1=是, 2=否
SMQ040 当前吸烟状态 类别 1=每天, 2=偶尔, 3=已戒
ALQ101 过去 12 月饮酒 类别 1=是, 2=否
PAQ605 每周中等强度运动 类别 1=是, 2=否
PAD615 每周运动时间 连续 分钟
SLQ010 通常睡眠时长 连续 小时

§4.2 权重系统详解

NHANES 复杂抽样设计要求分析时必须正确应用抽样权重和方差估计变量。未应用权重将产生有偏估计

权重选择规则

分析场景 使用权重 合并规则
单周期 MEC 数据 WTMEC2YR
单周期面谈数据 WTINT2YR
合并 1999-2002(4 年) WTMEC4YR 直接使用专用 4 年权重
合并 2 个周期(非 1999-2002) WTMEC2YR / N N=周期数,权重除以 N
合并 N 个周期 WTMEC2YR / N 权重除以 N
子样本检测(如 PFAS) 对应子样本权重 如 WTSAF2YR(~1/3 子样本)
饮食数据 WTDR2D(Day 1)/ WTDR2D(Day 2) 专用饮食权重

方差估计:使用 Taylor 线性化法,以 SDMVSTRA(分层)和 SDMVPSU(PSU)为设计变量。

§4.3 数据获取方式

方式 描述 工具/URL
NCHS 官网下载 按周期和组件逐个下载 .XPT 文件 wwwn.cdc.gov/nchs/nhanes/
R nhanesA 包 直接从 NCHS 下载数据到 R 环境 nhanesA::nhanes()
Python pyreadstat 读取 .XPT 文件 pyreadstat.read_xpt()
30 年协调集 跨周期统一变量集 GitHub: PatelLab-NIH/Harmonized-NHANES
NCHS RDC 限制数据访问 需提案 + DUA + 培训
Kaggle 部分 NHANES 数据已上传 Kaggle 社区上传,非官方
NHANES Tutorial 在线分析教程 wwwn.cdc.gov/nchs/nhanes/tutorials/

§4.4 缺失数据模式

类型 原因 处理方法
单元无应答 参与者拒绝特定检查 使用对应权重(如未做 MEC 检查则无 WTMEC2YR)
子样本设计缺失 部分 LAB 仅覆盖 ~1/3 子样本 使用子样本权重;不可插补为全样本
检测限以下 (LOD) 化学物浓度低于检测限 替换为 LOD/√2;查看 LBXCDCOM 注释变量
DXA 多重插补 DXA 缺失(孕妇/超重/设备故障) 5 条插补记录/人,须全部使用
跨周期变量不一致 问卷/检测项目变更 使用 30 年协调集或手动映射
系统性无应答 特定人群更可能拒绝(低教育/低收入) 权重后处理校正(非完全消除)

§4.5 生态工具

工具 类型 功能
nhanesA ® R 包 直接从 NCHS 下载 NHANES 数据
survey ® R 包 复杂抽样设计分析(svydesign, svymean, svyglm)
haven ® R 包 读取 SAS .XPT 文件
pyreadstat (Python) Python 包 读取 SAS .XPT 文件
pyNHANES Python 包 NHANES 数据加载与预处理
FNDDS 数据库 USDA 食物营养素数据库(饮食数据编码)
NCI Method 统计方法 日常营养摄入估计(MCMC 方法)
NHANES Tutorial 在线教程 NCHS 官方分析指南
SUDAAN 统计软件 专门用于复杂抽样设计分析
NHANES Variable Search 在线工具 跨周期变量检索
phonto ® R 包 NHANES 变量搜索与联合查询
Harmonized NHANES 协调集 30 年统一数据集

§5 数据划分与使用建议

§5.1 数据划分策略

策略 描述 适用场景 注意事项
周期内随机划分 单周期内按 SEQN 随机分 train/val/test 单一疾病患病率预测 必须在权重应用前划分
多周期合并划分 合并 N 个周期后随机划分 增大样本量 权重需除以 N
跨周期时间划分 前期周期训练,后期周期测试 时间泛化/趋势预测 验证模型时间稳定性
子样本组合划分 使用多个子样本(如不同 LAB)组合 多组学/环境暴露建模 注意权重匹配
协调集划分 30 年协调集统一划分 跨周期一致变量分析 协调集已统一编码
死亡率链接划分 基线特征 → 死亡率链接 → 生存分析 生存预测建模 需处理删失与随访时间

§5.2 Python 基准代码

import pyreadstat
import pandas as pd
import numpy as np

class NHANESLoader:
    """NHANES 数据加载与预处理基类"""

    def __init__(self, cycle=''''''''''''''''2017-2018''''''''''''''''):
        self.cycle = cycle
        self.base_url = ''''''''''''''''https://wwwn.cdc.gov/Nchs/Nhanes''''''''''''''''

    def load_component(self, component_prefix, suffix=''''''''''''''''J''''''''''''''''):
        """加载指定组件的 .XPT 文件"""
        filename = f''''''''''''''''{component_prefix}_{suffix}''''''''''''''''
        url = f''''''''''''''''{self.base_url}/{self.cycle}/{filename}.XPT''''''''''''''''
        df, meta = pyreadstat.read_xpt(url)
        return df, meta

    def merge_components(self, components):
        """按 SEQN 合并多个组件"""
        dfs = []
        for comp in components:
            df, _ = self.load_component(comp)
            dfs.append(df)
        merged = dfs[0]
        for df in dfs[1:]:
            merged = merged.merge(df, on=''''''''''''''''SEQN'''''''''''''''', how=''''''''''''''''inner'''''''''''''''')
        return merged

    def get_analysis_dataset(self):
        """构建糖尿病预测分析数据集"""
        # 加载人口统计
        demo, _ = self.load_component(''''''''''''''''DEMO'''''''''''''''')
        # 加载体检(BMI + 血压)
        bmx, _ = self.load_component(''''''''''''''''BMX'''''''''''''''')
        bpx, _ = self.load_component(''''''''''''''''BPX'''''''''''''''')
        # 加载实验室(HbA1c + 胆固醇 + CRP)
        ghb, _ = self.load_component(''''''''''''''''GHB'''''''''''''''')
        tchol, _ = self.load_component(''''''''''''''''TCHOL'''''''''''''''')
        crp, _ = self.load_component(''''''''''''''''HSCRP'''''''''''''''')
        # 加载问卷(糖尿病 + 吸烟 + 年龄确认)
        diq, _ = self.load_component(''''''''''''''''DIQ'''''''''''''''')

        # 按 SEQN 合并
        df = demo.merge(bmx, on=''''''''''''''''SEQN'''''''''''''''').merge(bpx, on=''''''''''''''''SEQN'''''''''''''''') \
                 .merge(ghb, on=''''''''''''''''SEQN'''''''''''''''').merge(tchol, on=''''''''''''''''SEQN'''''''''''''''') \
                 .merge(crp, on=''''''''''''''''SEQN'''''''''''''''').merge(diq, on=''''''''''''''''SEQN'''''''''''''''')

        # 特征工程
        df[''''''''''''''''diabetes''''''''''''''''] = ((df[''''''''''''''''LBXGH''''''''''''''''] >= 6.5) |
                         (df[''''''''''''''''DIQ010''''''''''''''''] == 1)).astype(int)
        df[''''''''''''''''age''''''''''''''''] = df[''''''''''''''''RIDAGEYR'''''''''''''''']
        df[''''''''''''''''sex''''''''''''''''] = df[''''''''''''''''RIAGENDR''''''''''''''''] - 1  # 0=男, 1=女
        df[''''''''''''''''bmi''''''''''''''''] = df[''''''''''''''''BMXBMI'''''''''''''''']
        df[''''''''''''''''sbp''''''''''''''''] = df[''''''''''''''''BPXSY1'''''''''''''''']
        df[''''''''''''''''dbp''''''''''''''''] = df[''''''''''''''''BPXDI1'''''''''''''''']
        df[''''''''''''''''tc''''''''''''''''] = df[''''''''''''''''LBXTC'''''''''''''''']
        df[''''''''''''''''crp''''''''''''''''] = df[''''''''''''''''LBXHCRP'''''''''''''''']

        return df[[''''''''''''''''SEQN'''''''''''''''', ''''''''''''''''age'''''''''''''''', ''''''''''''''''sex'''''''''''''''', ''''''''''''''''bmi'''''''''''''''', ''''''''''''''''sbp'''''''''''''''', ''''''''''''''''dbp'''''''''''''''',
                   ''''''''''''''''tc'''''''''''''''', ''''''''''''''''crp'''''''''''''''', ''''''''''''''''diabetes'''''''''''''''',
                   ''''''''''''''''WTMEC2YR'''''''''''''''', ''''''''''''''''SDMVSTRA'''''''''''''''', ''''''''''''''''SDMVPSU'''''''''''''''']].dropna()


def apply_survey_weights(model, X, y, weights):
    """在模型训练中应用 NHANES 抽样权重"""
    model.fit(X, y, sample_weight=weights)
    return model


# 使用示例
loader = NHANESLoader(cycle=''''''''''''''''2017-2018'''''''''''''''')
df = loader.get_analysis_dataset()
print(f"分析样本量: {len(df)}")
print(f"糖尿病患病率(未加权): {df[''''''''''''''''diabetes''''''''''''''''].mean():.3f}")
# 加权患病率
weighted_rate = np.average(df[''''''''''''''''diabetes''''''''''''''''], weights=df[''''''''''''''''WTMEC2YR''''''''''''''''])
print(f"糖尿病患病率(加权): {weighted_rate:.3f}")

§5.3 使用建议

# 建议 原因
1 始终应用抽样权重 NHANES 复杂抽样设计要求加权分析,否则估计有偏
2 使用 Taylor 线性化方差估计 以 SDMVSTRA 和 SDMVPSU 为设计变量
3 多周期合并时权重除以周期数 避免权重膨胀导致方差估计错误
4 注意子样本权重 部分 LAB 仅覆盖 ~1/3 子样本,需使用对应权重
5 检查变量跨周期一致性 问卷/检测项目可能变更,使用 Variable Search 或协调集
6 正确处理 LOD 以下值 使用 LOD/√2 替换,查看 LBXCDCOM 注释
7 DXA 数据须用全部 5 条插补记录 多重插补,不可仅使用第 1 条
8 引用数据时标注周期和版本 不同周期样本/检测项目不同

§6 AI 就绪指南

§6.0 快速启动(7 步)

步骤 操作 资源
1 确定研究问题和目标周期 NHANES Variable Search
2 下载所需 .XPT 文件(或使用 nhanesA R 包) wwwn.cdc.gov/nchs/nhanes/
3 按 SEQN 合并 DEMO + EXAM + LAB + Q 组件 pyreadstat / haven
4 应用抽样权重和方差估计变量 survey ® / statsmodels (Python)
5 特征工程(缺失值处理/编码/标准化) sklearn Pipeline
6 训练模型(XGBoost/RF/Logistic/DeepSurv) xgboost / lifelines
7 报告时引用周期和数据来源 CDC/NCHS, NHANES Data

§6.1 NHANESDataset 类(Python)

import pyreadstat
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

class NHANESDataset:
    """NHANES 数据集完整加载与预处理流水线"""

    COMPonevent-blocked= {
        ''''''''''''''''demographics'''''''''''''''': ''''''''''''''''DEMO'''''''''''''''',
        ''''''''''''''''body_measures'''''''''''''''': ''''''''''''''''BMX'''''''''''''''',
        ''''''''''''''''blood_pressure'''''''''''''''': ''''''''''''''''BPX'''''''''''''''',
        ''''''''''''''''dxa'''''''''''''''': ''''''''''''''''DXX'''''''''''''''',
        ''''''''''''''''diabetes_q'''''''''''''''': ''''''''''''''''DIQ'''''''''''''''',
        ''''''''''''''''bp_q'''''''''''''''': ''''''''''''''''BPQ'''''''''''''''',
        ''''''''''''''''smoking_q'''''''''''''''': ''''''''''''''''SMQ'''''''''''''''',
        ''''''''''''''''alcohol_q'''''''''''''''': ''''''''''''''''ALQ'''''''''''''''',
        ''''''''''''''''activity_q'''''''''''''''': ''''''''''''''''PAQ'''''''''''''''',
        ''''''''''''''''sleep_q'''''''''''''''': ''''''''''''''''SLQ'''''''''''''''',
        ''''''''''''''''depression_q'''''''''''''''': ''''''''''''''''DPQ'''''''''''''''',
        ''''''''''''''''hba1c'''''''''''''''': ''''''''''''''''GHB'''''''''''''''',
        ''''''''''''''''glucose'''''''''''''''': ''''''''''''''''GLU'''''''''''''''',
        ''''''''''''''''insulin'''''''''''''''': ''''''''''''''''INS'''''''''''''''',
        ''''''''''''''''cholesterol'''''''''''''''': ''''''''''''''''TCHOL'''''''''''''''',
        ''''''''''''''''hdl'''''''''''''''': ''''''''''''''''HDL'''''''''''''''',
        ''''''''''''''''crp'''''''''''''''': ''''''''''''''''HSCRP'''''''''''''''',
        ''''''''''''''''vitamin_d'''''''''''''''': ''''''''''''''''VID'''''''''''''''',
        ''''''''''''''''ferritin'''''''''''''''': ''''''''''''''''FETIN'''''''''''''''',
        ''''''''''''''''lead_cadmium'''''''''''''''': ''''''''''''''''PBCD'''''''''''''''',
        ''''''''''''''''pfas'''''''''''''''': ''''''''''''''''PFAS'''''''''''''''',
    }

    CYCLE_SUFFIX = {
        ''''''''''''''''1999-2000'''''''''''''''': '''''''''''''''''''''''''''''''', ''''''''''''''''2001-2002'''''''''''''''': ''''''''''''''''_B'''''''''''''''', ''''''''''''''''2003-2004'''''''''''''''': ''''''''''''''''_C'''''''''''''''',
        ''''''''''''''''2005-2006'''''''''''''''': ''''''''''''''''_D'''''''''''''''', ''''''''''''''''2007-2008'''''''''''''''': ''''''''''''''''_E'''''''''''''''', ''''''''''''''''2009-2010'''''''''''''''': ''''''''''''''''_F'''''''''''''''',
        ''''''''''''''''2011-2012'''''''''''''''': ''''''''''''''''_G'''''''''''''''', ''''''''''''''''2013-2014'''''''''''''''': ''''''''''''''''_H'''''''''''''''', ''''''''''''''''2015-2016'''''''''''''''': ''''''''''''''''_I'''''''''''''''',
        ''''''''''''''''2017-2018'''''''''''''''': ''''''''''''''''_J'''''''''''''''',
    }

    def __init__(self, cycles=[''''''''''''''''2017-2018''''''''''''''''], componevent-blocked=None,
                 target=''''''''''''''''diabetes'''''''''''''''', test_size=0.2, random_state=42):
        self.cycles = cycles
        self.componevent-blocked= components or list(self.COMPONENT_MAP.keys())
        self.target = target
        self.test_size = test_size
        self.random_state = random_state

    def _load_cycle_component(self, cycle, component):
        """加载指定周期和组件"""
        prefix = self.COMPONENT_MAP[component]
        suffix = self.CYCLE_SUFFIX[cycle]
        filename = f''''''''''''''''{prefix}{suffix}.XPT''''''''''''''''
        url = (f''''''''''''''''https://wwwn.cdc.gov/Nchs/Nhanes/''''''''''''''''
               f''''''''''''''''{cycle}/{filename}'''''''''''''''')
        df, _ = pyreadstat.read_xpt(url)
        df[''''''''''''''''cycle''''''''''''''''] = cycle
        return df

    def load(self):
        """加载并合并所有周期和组件"""
        all_dfs = []
        for cycle in self.cycles:
            cycle_dfs = []
            for comp in self.components:
                try:
                    df = self._load_cycle_component(cycle, comp)
                    cycle_dfs.append(df)
                except Exception:
                    pass
            if cycle_dfs:
                merged = cycle_dfs[0]
                for df in cycle_dfs[1:]:
                    merged = merged.merge(df, on=[''''''''''''''''SEQN'''''''''''''''', ''''''''''''''''cycle''''''''''''''''],
                                         how=''''''''''''''''outer'''''''''''''''')
                all_dfs.append(merged)
        self.df = pd.concat(all_dfs, ignore_index=True)
        return self

    def build_target(self):
        """构建目标变量"""
        if self.target == ''''''''''''''''diabetes'''''''''''''''':
            self.df[''''''''''''''''target''''''''''''''''] = ((self.df.get(''''''''''''''''LBXGH'''''''''''''''', 0) >= 6.5) |
                                (self.df.get(''''''''''''''''DIQ010'''''''''''''''', 0) == 1)
                                ).astype(int)
        elif self.target == ''''''''''''''''hypertension'''''''''''''''':
            self.df[''''''''''''''''target''''''''''''''''] = ((self.df.get(''''''''''''''''BPXSY1'''''''''''''''', 0) >= 130) |
                                (self.df.get(''''''''''''''''BPXDI1'''''''''''''''', 0) >= 80) |
                                (self.df.get(''''''''''''''''BPQ020'''''''''''''''', 0) == 1)
                                ).astype(int)
        elif self.target == ''''''''''''''''obesity'''''''''''''''':
            self.df[''''''''''''''''target''''''''''''''''] = (self.df.get(''''''''''''''''BMXBMI'''''''''''''''', 0) >= 30).astype(int)
        return self

    def get_features(self):
        """获取特征列"""
        exclude = {''''''''''''''''SEQN'''''''''''''''', ''''''''''''''''cycle'''''''''''''''', ''''''''''''''''target'''''''''''''''', ''''''''''''''''WTMEC2YR'''''''''''''''',
                   ''''''''''''''''WTINT2YR'''''''''''''''', ''''''''''''''''SDMVSTRA'''''''''''''''', ''''''''''''''''SDMVPSU'''''''''''''''', ''''''''''''''''SDDSRVYR''''''''''''''''}
        return [c for c in self.df.columns if c not in exclude]

    def split(self):
        """划分训练/测试集(保持权重)"""
        X = self.df[self.get_features()]
        y = self.df[''''''''''''''''target'''''''''''''''']
        w = self.df.get(''''''''''''''''WTMEC2YR'''''''''''''''',
                        pd.Series(1, index=self.df.index))
        idx = self.df.index
        train_idx, test_idx = train_test_split(
            idx, test_size=self.test_size,
            random_state=self.random_state, stratify=y)
        return (X.loc[train_idx], X.loc[test_idx],
                y.loc[train_idx], y.loc[test_idx],
                w.loc[train_idx], w.loc[test_idx])

    def adjust_weights(self):
        """多周期合并权重校正"""
        n_cycles = len(self.cycles)
        if n_cycles > 1 and ''''''''''''''''WTMEC2YR'''''''''''''''' in self.df.columns:
            self.df[''''''''''''''''WTMEC2YR''''''''''''''''] = self.df[''''''''''''''''WTMEC2YR''''''''''''''''] / n_cycles
        return self

§6.2 XGBoost 慢性病预测模型

import xgboost as xgb
from sklearn.metrics import (roc_auc_score, accuracy_score,
                             f1_score, classification_report)
import shap

# 加载数据
dataset = NHANESDataset(
    cycles=[''''''''''''''''2015-2016'''''''''''''''', ''''''''''''''''2017-2018''''''''''''''''],
    target=''''''''''''''''diabetes'''''''''''''''', test_size=0.2
).load().build_target().adjust_weights()

X_train, X_test, y_train, y_test, w_train, w_test = dataset.split()

# XGBoost 模型(加权训练)
model = xgb.XGBClassifier(
    n_estimators=500,
    max_depth=6,
    learning_rate=0.05,
    subsample=0.8,
    colsample_bytree=0.8,
    reg_alpha=0.1,
    reg_lambda=1.0,
    scale_pos_weight=(1 - y_train.mean()) / y_train.mean(),
    random_state=42,
    use_label_encoder=False,
    eval_metric=''''''''''''''''auc''''''''''''''''
)

model.fit(
    X_train, y_train,
    sample_weight=w_train,
    eval_set=[(X_test, y_test)],
    early_stopping_rounds=50,
    verbose=False
)

# 评估
y_pred = model.predict(X_test)
y_proba = model.predict_proba(X_test)[:, 1]

print(f"Accuracy: {accuracy_score(y_test, y_pred):.4f}")
print(f"AUC-ROC: {roc_auc_score(y_test, y_proba):.4f}")
print(f"F1-Score: {f1_score(y_test, y_pred):.4f}")
print(classification_report(y_test, y_pred))

# SHAP 可解释性分析
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)
shap.summary_plot(shap_values, X_test, max_display=20)

§6.3 10 大坑点

# 坑点 影响 解决方案
1 未应用抽样权重 估计严重有偏,不可外推至国家层面 始终使用 WTMEC2YR/WTINT2YR + SDMVSTRA + SDMVPSU
2 横断面 ≠ 因果 横断面设计无法建立时间顺序和因果关系 使用因果推断方法(MR/IV)或声明为关联分析
3 响应率下降 2017-2018 年仅 52%,非应答偏倚加剧 权重校正(不完全消除);敏感性分析
4 子样本检测权重不匹配 使用错误的权重导致子样本分析有偏 查阅文档确认子样本权重(如 WTSAF2YR)
5 跨周期变量编码变更 种族/民族分类、年龄编码、问卷措辞变化 使用 Variable Search 或 30 年协调集
6 饮食自报偏倚 24h 回忆存在低报/社会期望偏倚 NCI Method 估计日常摄入;使用生物标志物验证
7 LOD 以下值处理 环境化学物浓度检测限以下直接丢弃有偏 使用 LOD/√2 替换或使用 Tobit 回归
8 公式化研究泛滥 大量低质量论文变量组合拼凑,92% 来自中国机构 完整利用数据集;控制多重比较;报告 FDR
9 多周期合并权重 直接加总权重导致膨胀 权重除以周期数 N
10 DXA 多重插补 仅使用第 1 条插补记录导致方差估计错误 必须使用全部 5 条插补记录
模型 类型 适用场景 NHANES 表现
XGBoost 梯度提升树 慢性病分类/风险预测 CHD AUC 0.92;糖尿病 AUC 0.82;MASLD AUC 0.87
Random Forest 集成树 特征重要性/非线性交互 CVD AUROC 0.81;AUROC 次优
LightGBM 梯度提升树 大样本高效训练 CVD 预测中与 XGBoost 相当
SVM (RBF) 核方法 中等样本量/高维 CHD + MR 研究中 AUC 0.909(最佳)
Logistic Regression 线性模型 可解释基线 CVD/糖尿病基线准确率 ~85%
DeepSurv (Cox NN) 神经网络 死亡率链接生存预测 适用于 NDI 链接数据
CatBoost 梯度提升树 类别特征丰富场景 糖尿病预测 AUC ~0.79
LASSO 正则化回归 高维特征选择 营养素变量筛选
Neural Network 深度学习 复杂交互 CHD 预测中表现中等
Bayesian Additive Regression Trees 贝叶斯树 不确定性量化 环境混合物暴露建模

§6.5 硬件配置

配置 规格 适用场景
最小 8 GB RAM, CPU 单周期分析
推荐 32 GB RAM, 4 核 CPU 多周期合并 + XGBoost
高性能 64 GB RAM, 8 核 CPU + GPU 深度学习 + 全周期数据
RDC NCHS/联邦 RDC 远程访问 限制数据分析
云平台 AWS/Azure/GCP 大规模并行/可重复

§6.6 评估指标

指标 描述 目标
AUC-ROC 分类区分能力 >0.80
Accuracy 整体分类正确率 >0.82
F1-Score 精确率与召回率调和均值 >0.80
SHAP 值 特征贡献可解释性 关键变量排名
加权患病率 抽样权重后的国家估计 与官方报告一致
C-index 生存模型一致性 >0.70(死亡率链接)

§7 质量评估与局限性

§7.1 偏倚类型

偏倚 来源 影响 缓解
非应答偏倚 响应率从 82% 降至 52%,特定人群更可能拒绝 低估弱势群体患病率 权重后处理校正;敏感性分析
回忆偏倚 饮食 24h 回忆依赖自报 低报能量摄入/社会期望偏倚 NCI Method;生物标志物验证
选择偏倚 仅覆盖平民非机构化人口 排除监狱/护理院/军队/无家可归者 限制外推范围;与 NHIS 对比
横断面偏倚 无纵向随访(除死亡率链接) 无法建立因果时序 因果推断方法(MR/IV/负控制)
健康志愿者偏倚 参与者比非参与者更健康 低估疾病患病率和严重度 权重校正;缺失数据分析
地理聚类偏倚 仅 15-20 县/年 区域代表性有限 多年合并;权重分层
时间不一致偏倚 问卷/检测项目跨周期变更 趋势分析断裂 协调集;Variable Search

§7.2 标注质量

维度 评估
标准化协议 MEC 体检由认证医疗人员按标准化手册执行,质控严格
实验室质控 CDC Division of Laboratory Sciences 认证实验室,常规盲样/重复检测
DXA 质控 UCSF 放射科质控中心,季度报告,Hologic 假体扫描
饮食质控 USDA AMPM 方法验证(与双标水法对比),认证膳食访问员
访谈质控 CAPI 系统逻辑校验,访问员年度培训
权重计算 NCHS 统计学家专业计算,包含非应答和后分层校正

§7.3 泛化场景

场景 泛化能力 说明
美国平民非机构化人口 ⭐⭐⭐⭐⭐ 设计目标人群,权重后具有国家代表性
美国机构化人口 设计排除(监狱/护理院/军营)
特定种族/民族亚组 ⭐⭐⭐⭐ 过采样确保主要亚组可靠性
亚组(罕见疾病/年龄段) ⭐⭐ 小样本量限制估计精度
国际人群 ⭐⭐ 可比较性受饮食/环境/医疗体系差异限制
时间趋势外推 ⭐⭐⭐ 连续 25+ 年数据但检测项目变更

§7.4 伦理考量

维度 声明
知情同意 所有参与者签署书面知情同意书(面谈+体检分阶段同意)
机构审查 NCHS 伦理审查委员会 (ERB) / 相当于 IRB 审批
隐私保护 公开数据去标识化(地理/日期/直接标识符移除)
限制数据 敏感信息仅通过 RDC 访问(提案+DUA+培训+IRB)
儿童保护 6 岁以下由代理人面谈;6-11 岁辅助面谈;16-17 岁需父母同意 + 本人知情
生物样本 额外同意书用于样本储存和未来检测
重识别禁令 严禁尝试重新识别参与者

§7.5 DAIMS 24 项数据就绪度评估

# DAIMS 检查项 状态 说明
1 数据集动机 评估美国人口健康和营养状况
2 组成与采集 面谈+MEC 体检+实验室,5 大组件
3 采集时间/地点 1971-2026,美国 50 州
4 标注者信息 NCHS/DHANES 认证医疗团队
5 标注方法 标准化协议+质控+认证实验室
6 标注一致性 CAPI 逻辑校验+年度培训+盲样
7 预处理描述 NCHS 编辑/编码/权重计算
8 变量字典 在线文档+codebook+Variable Search
9 缺失数据 4 类缺失模式+权重校正
10 训练/测试划分 无预定义划分,研究者自定义
11 许可证 公有领域(美国政府作品)
12 使用条款 公开数据无限制;RDC 需 DUA
13 隐私保护 去标识化公开数据+RDC 限制数据
14 敏感信息 基因/地理数据仅 RDC 访问
15 偏倚文档 7 种偏倚类型已记录
16 更新机制 2 年周期持续更新
17 引用要求 CDC/NCHS 标准引用格式
18 可重复性 公开数据+标准化协议+权重
19 AI 就绪度 XPT→Python/R 流水线成熟
20 多模态融合 面谈+体检+实验室+饮食
21 外部验证 ⚠️ 可与 NHIS/SEER/UKB 交叉验证
22 因果推断 ⚠️ 横断面限制;死亡率链接部分缓解
23 趋势分析 25+ 年连续数据
24 国际可比性 ⚠️ 与其他国家健康调查部分可比

DAIMS 总分:20/24(83.3%)⭐⭐⭐⭐☆

评估总结:NHANES 在数据可及性、标准化、变量丰富度和免费开放方面表现卓越。主要扣分项为横断面设计限制因果推断(#22)、外部验证数据有限(#21)和国际可比性部分受限(#24)。加权分析要求和复杂抽样设计对 AI/ML 研究者构成使用门槛,但丰富的分析工具(nhanesA、survey 包、pyreadstat)和在线教程大幅降低了门槛。

§7.6 外部验证数据集

验证集 来源 验证维度
NHIS CDC/NCHS 自报健康指标交叉验证
SEER NCI 癌症患病率/分期/生存交叉验证
BRFSS CDC 行为风险因素交叉验证
UK Biobank UKB 跨国慢性病生物标志物可比性
All of Us NIH 美国多样性队列交叉验证
National Vital Statistics System NCHS 死因编码一致性验证
Medicare Claims CMS 医疗利用交叉验证

§8 基准性能与生态

§8.1 排行榜

任务 模型 AUC/Accuracy 样本 来源
冠心病 (CHD) 预测 XGBoost AUC 0.92, Acc 85.94% NHANES lifestyle Nahar et al. 2025, IETC
冠心病 (CHD) + 因果 SVM (RBF) AUC 0.909, Acc 83.4% NHANES 2013-2018, n=29,400 Cui et al. 2025, IJCRP
心血管病 (CVD) 预测 XGBoost Acc 0.8216, Recall 0.8645 NHANES 2017-2023, n=12,382 Ahiduzzaman & Hasan 2025, PLoS One
心血管病 (CVD) 预测 Random Forest AUROC 0.8139 同上 同上
2 型糖尿病预测 XGBoost AUC 0.8168, Acc ~85% NHANES 2007-2018, n=29,509 Riveros Perez 2025, BMJ Open
MASLD(脂肪肝)预测 XGBoost AUC 0.8740 NHANES 2017-2020, n=2,460 Zhang et al. 2025, PLoS One

§8.2 关键论文

论文 年份 核心贡献 引用
CDC/NCHS, NHANES Data 持续 数据集基础引用 65,000+
Patel et al., “A database of human exposomes…” 2016 NHANES 暴露组数据库 Nature Sci Data
Ahluwalia et al., “Update on NHANES Dietary Data” 2016 饮食数据采集与发布 Adv Nutr 7(1):121-34
McQuillan et al., “NHANES Biospecimen Program” 2015 生物样本库描述 Vital Health Stat 2(170)
Suchak et al., “Formulaic research articles” 2024 NHANES 公式化研究批评
Nahar et al., CHD ML prediction 2025 XGBoost AUC 0.92 IETC 2025
Cui et al., CHD ML + Mendelian randomization 2025 SVM AUC 0.909 + MR 因果 IJCRP 27:200536
Ahiduzzaman & Hasan, CVD interpretable ML 2025 XGBoost Acc 0.82 + SHAP PLoS One 20:e0335915
Riveros Perez, Diabetes ML 2025 XGBoost AUC 0.82 BMJ Open 15:e096595
Zhang et al., MASLD ML prediction 2025 XGBoost AUC 0.87 PLoS One 20:e0335656
Fang et al., Exposome-wide mortality study 2025 1999-2018 环境化学物与死亡率 Environ Pollut
BaHammam, NHANES sleep research cautionary tale 2025 公式化研究批评 Nat Sci Sleep 17:2799-2805

§8.3 使用规模统计

指标 数值
PubMed 收录 NHANES 论文(累计) 65,000+
2025 年单年发表量 3,400+(~380 篇/月)
2023 年单年发表量 ~108 篇
2024 年公式化论文 190 篇(92% 来自中国机构)
30 年协调集参与者 134,310
30 年协调集变量 4,740
合并文件数 614
累计 .XPT 文件 ~1,600
累计数据大小 ~5 GB
年度参与者(面谈+体检) ~5,000
MEC 体检团队规模/站 ~15 人
实验室生物标志物 300+
环境化学物指标 100+
覆盖县数/年 15(2025-2026: 20)
数据集 关系 说明
NHIS 互补 NCHS 面谈调查,自报健康指标(无体检)
SEER 互补 NCI 癌症登记,可与 NHANES 交叉验证
BRFSS 互补 CDC 电话调查,行为风险因素
NVSS 链接 国家生命统计系统,死因数据来源
WWEIA 组成 NHANES 饮食组件,USDA 合作
FNDDS 配套 USDA 食物营养素数据库
UK Biobank 对比 英国大规模队列,可跨国比较
All of Us 对比 美国多样性队列

§9 相关资源与引用

§9.1 官方资源

资源 URL
NHANES 官方主页 https://www.cdc.gov/nchs/nhanes/
NHANES 数据下载 https://wwwn.cdc.gov/nchs/nhanes/Default.aspx
NHANES Variable Search https://wwwn.cdc.gov/nchs/nhanes/search/
NHANES Analytic Guidelines https://wwwn.cdc.gov/nchs/nhanes/analyticguidelines.aspx
NHANES Tutorial https://wwwn.cdc.gov/nchs/nhanes/tutorials/default.aspx
NHANES Linked Mortality https://www.cdc.gov/nchs/data-linkage/mortality.htm
NCHS Research Data Center (RDC) https://www.cdc.gov/rdc/
WWEIA (USDA) https://www.ars.usda.gov/nea/bhnrc/fsrg
FNDDS (USDA) https://www.ars.usda.gov/nea/bhnrc/fsrg/fndds
NHANES Survey Methods https://www.cdc.gov/nchs/nhanes/survey_methods.htm
NHANES Questionnaires https://wwwn.cdc.gov/nchs/nhanes/search/datapage.aspx?Componevent-blocked=Questionnaire
NHANES Lab Procedures https://www.cdc.gov/nchs/nhanes/laboratory.aspx
30-Year Harmonized NHANES https://github.com/PatelLab-NIH/Harmonized-NHANES
nhanesA R Package https://cran.r-project.org/package=nhanesA
NHANES Exposome Database https://patel-lab.uchicago.edu/nhanes/

§9.2 BibTeX 引用

@misc{nhanes,
  author = {{CDC/NCHS}},
  title  = {National Health and Nutrition Examination Survey Data},
  year   = {1999-2026},
  note   = {Hyattsville, MD: U.S. Department of Health and Human Services, Centers for Disease Control and Prevention},
  url    = {https://www.cdc.gov/nchs/nhanes/}
}

@article{patel2016exposome,
  author  = {Patel, Chirag J. and Pho, Nivedita and McIntosh, Michael and Kallel, Iyas and Ep, David and Hu, James and Manrai, Ankur K.S.},
  title   = {A database of human exposomes and phenomes from the {US} {National Health and Nutrition Examination Survey},
  journal = {Scientific Data},
  volume  = {3},
  pages   = {160096},
  year    = {2016}
}

@article{ahluwalia2016dietary,
  author  = {Ahluwalia, N. and Dwyer, J. and Terry, A. and Moshfegh, A. and Johnson, C.},
  title   = {Update on {NHANES} Dietary Data: Focus on Collection, Release, Analytical Considerations, and Uses to Inform Public Policy},
  journal = {Advances in Nutrition},
  volume  = {7},
  number  = {1},
  pages   = {121134},
  year    = {2016}
}

§9.3 核心团队

角色 姓名/机构 职责
NCHS/DHANES Director Alan E. Simon, MD 2025-2026 周期总负责
NCHS Director Brian C. Moyer, PhD NCHS 主任
CDC Director Mandy K. Cohen, MD, MPH CDC 主任
USDA FSRG Lead Alanna J. Moshfegh 饮食数据处理
DXA QC Center UCSF Department of Radiology DXA 质控
Data Collection Contractor Westat 现场团队与 MEC 运营
Laboratory CDC Division of Laboratory Sciences 300+ 生物标志物分析

§10 AI 使用声明卡

§10.1 标识

字段
数据集名称 National Health and Nutrition Examination Survey (NHANES)
数据集 ID nhanes/99
版本 连续 NHANES 1999-2026(多周期)
发布机构 CDC/NCHS
许可证 公有领域(U.S. Government work)
引用格式 CDC/NCHS, National Health and Nutrition Examination Survey Data, Hyattsville, MD: HHS, CDC. [年份]. [URL]

§10.2 许可证摘要

层级 内容 要求
公开数据 所有周期所有组件去标识化数据 无需注册/DUA,免费使用
公开死亡率 NDI 链接死亡率文件 无需注册
限制数据 地理/日期/基因数据 RDC 提案+DUA+培训+IRB
商业使用 公开数据可商用 无限制(公有领域)
再分发 可自由再分发 无限制
引用要求 研究发表须引用 CDC/NCHS 标准引用格式

§10.3 推荐工作流

步骤 操作 输出
1 确定研究问题与目标周期 研究方案
2 下载 .XPT 文件或使用 nhanesA 原始数据
3 按 SEQN 合并所需组件 分析数据集
4 应用权重和方差估计变量 加权数据
5 特征工程与缺失值处理 模型输入
6 训练 AI/ML 模型 预测结果
7 SHAP/可解释性分析 特征重要性
8 报告加权估计和数据来源 研究论文
9 数据公开(无需 DUA) 开放科学

§10.4 人工校验表

# 检查项 状态
1 数据集标识符准确
2 调查设计和周期准确
3 参与者数量准确
4 响应率趋势正确
5 5 大组件分类正确
6 权重系统说明准确
7 环境化学物体系完整
8 NDI 死亡率链接准确
9 30 年协调集数据准确
10 AI/ML SOTA 性能数据准确
11 10 大坑点覆盖完整
12 7 种偏倚类型准确
13 2025-2026 周期变更已纳入
14 公有领域许可证正确
15 JSON-LD @graph 结构完整
16 页面状态为 published
返回 AI-Ready 数据集