
千方医数集 · 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 采用复杂分层多阶段概率抽样设计,确保样本对全美平民非机构化人口具有代表性。
四阶段抽样流程:
- 第一阶段:从全美所有县中按人口特征分层,抽取 15 个初级抽样单元 (PSU)(2025-2026 年:20 个县/年)
- 第二阶段:在选中的县内抽取街区或街区组(20-24 个/县)
- 第三阶段:在选中的街区内抽取住户(~30 户/街区)
- 第四阶段:在选中的住户中通过计算机程序随机选择 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(年龄 × 性别 × 种族/民族 × 收入) |
| 维度 |
规格 |
| 文件格式 |
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 年协调集或手动映射 |
| 系统性无应答 |
特定人群更可能拒绝(低教育/低收入) |
权重后处理校正(非完全消除) |
| 工具 |
类型 |
功能 |
| 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 条插补记录 |
§6.4 推荐 AI 模型
| 模型 |
类型 |
适用场景 |
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 官方资源
§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 |
✅ |