美文网首页NHANES数据库
NHANES数据库数据下载

NHANES数据库数据下载

作者: 穿秋衣的李白 | 来源:发表于2021-09-05 12:56 被阅读0次

    今天跟大家分享一下如何用R包nhanesA下载NHANES数据

    以一个简单的研究目的为例:使用NHANES数据库中的数据构建一个舒张压的预测模型。
    根据该研究目的,整理纳入分析的周期和变量:
    ①研究周期:2013-2014年;
    ②因变量:舒张压;
    ③自变量:性别、年龄、种族、婚姻状态、收缩压、吸烟和饮酒;
    ④抽样调查相关信息:weightsstratapsu(这部分数据比较特殊,至于为什么要下载这些数据,下一篇推文跟大家介绍权重的时候再详细说)。

    目录:

    1. NHANES数据库数据存储结构
    2. 下载与加载包
    3. 查询指定年份和指定分类中的表格
    4. 查找表格中包含的字段
    5. 下载数据
    6. 选择相应变量
    7. 翻译分类变量
    8. 下载EXAM分类中分数据
    9. 下载存放表格未知的变量
    10. 连表

    1. NHANES数据库数据存储结构

    NHANES数据库的数据主要分为五个公开数据类别和一个受限访问数据,其中五个公开数据类别分别为:

    • DEMO:人口统计学
    • DIET: 饮食
    • EXAM: 检查
    • LAB: 实验室指标
    • Q: 问卷调查

    为了方便大家理解,我们绘制了一张NHANES数据存储结构脑图

    2. 下载与加载包

    install.packages("nhanesA")
    install.packages("knitr")
    install.packages("tidyverse")
    install.packages("plyr")
    library(nhanesA)
    library(knitr)
    library(tidyverse)
    library(plyr)
    

    3. 查询指定年份和指定分类中的表格

    nhanesTables()方法可查看5个分类中各有哪些表格,以2013-2014年的人口统计学资料为例:

    # data_group=DEMO/DIET/EXAM/LAB/Q, year写入一个周期中的奇数年份即可
    nhanesTables(data_group = 'DEMO', year = 2013)
    

    可以看到2013年的人口统计学资料表叫做DEMO_H,其中H代表2013年的索引,若查询的是2015年的人口统计学资料,便是DEMO_I

    4. 查找表格中包含的字段

    我们知道了2013年的人口统计学资料表叫做DEMO_H后,可以用以下代码查询该表格中包含了哪些字段,以及每个字段的描述

    kable(nhanesTableVars(data_group = 'DEMO', nh_table = 'DEMO_H', namesonly = FALSE))
    

    我们用同样的方式观察一下血压所在表BPX_H中相关字段与描述

    kable(nhanesTableVars(data_group = 'EXAM', nh_table = 'BPX_H', namesonly = FALSE))
    

    如果想要对表和字段有更深的了解,我们可以用以下代码,跳转到NHANES官网,查看表和字段的说明

    browseNHANES(data_group = 'EXAM', nh_table = 'BPX_H')
    

    5.下载人口统计学数据

    用nhanes方法可直接在R中下载指标表格

    demo <- nhanes('DEMO_H')
    

    下载时如果出错,多重试几次,如果重试多次还是下载不了,也可以把官方的XPT文件下载到本地,然后用以下代码加载(这里以2013-2014的DEMO_H为例)

    library(haven)
    demo <- read_xpt(file ='DEMO_H.xpt')
    

    6. 选择相应变量下载完成后,我们根据研究目的选择变量。

    本案例需要的性别、年龄、种族、婚姻状态以及weightsstratapsu都是在人口统计资料中,用以下代码从demo中选择这些变量

    demo1 <- demo %>% select(SEQN, # 序列号
    RIAGENDR, # 性别
    RIDAGEYR, # 年龄
    RIDRETH3, # 种族
    DMDMARTL, # 婚姻状况
    WTINT2YR,WTMEC2YR, # 权重
    SDMVPSU, # psu
    SDMVSTRA) # strata
    
    

    7.翻译分类变量

    直接下载下来的分类变量是以1、2等数字表示,如上图中的性别和种族等,用以下代码,将数字翻译成其所代表的含义

    demo_vars <- names(demo1)
    demo2 <- nhanesTranslate('DEMO_H', demo_vars, data=demo1)
    

    在翻译过程中,可能会出现如下图所示警告,这是由于有些字段不是分类变量,不需要翻译,所以我们可以忽略这个警告

    最后翻译完成的数据,如下图所示

    8. 下载EXAM分类中的数据

    其中收缩压和舒张压数据位于BPX_H表格中

    bpx <- nhanes('BPX_H')
    bpx1 <- bpx %>% select(SEQN, # 序列号
    BPXDI1, # 舒张压
    BPXSY1) # 收缩压
    

    9. 下载存放表格未知的变量

    对于一些不知道在哪个表格里的变量,可以在官网进行关键词搜索,链接如下

    https://wwwn.cdc.gov/nchs/nhanes/search/default.aspx

    以吸烟数据为例

    可以看到有很多不同的数据集都包含了吸烟信息

    然后我们根据描述,选取适合我们研究目的的变量,我们这里选择SMQ040: "你现在是否吸烟?"(也可以通过查看详细描述后再选择更加适合自己研究目的的变量)

    图片

    进入2013-2014 Questionnaire页面后,我们会看到Q分类下所有的表格,再找到我们所需要的SMQ040字段所在的表SMQ_H,点击SMQ_H DOC可以查看该表格以及表中字段的具体信息

    查到吸烟数据对应的表格和字段后,用以下代码下载表格并选取字段

    smq <-  nhanes('SMQ_H')
    smq1 <- smq %>% select(SEQN, # 序列号
    SMQ040) # 你现在吸烟吗?
    
    # 用同样的方式查询并下载饮酒数据
    alq <- nhanes('ALQ_H')
    alq1 <- alq %>% select(SEQN, # 序列号
    ALQ130) # 过去12个月每天饮酒量
    

    10. 连表

    此时我们有了以下4个表

    • 人口统计学资料表:demo2

    • 血压数据表:bpx1

    • 吸烟数据表:smq1

    • 饮酒数据表:alq1

    根据序列号‘SEQN’将4个表连接成一个表,用来进行后续的分析(SEQN是NHANES数据库中被调查者的唯一标识)

    # 方式1:逐张连表
    data <- demo2 %>% full_join(bpx1, by = 'SEQN') %>% full_join(alq1, by = 'SEQN')
    # 方式2:全部连表
    data <- join_all(list(demo2, bpx1, alq1, smq1), by = 'SEQN', type = 'full')
    

    至此生成的data就是研究目的所需要的所有数据了

    需要注意的是由于NHANES中数据抽样方法的复杂性,这份数据不能够直接利用传统的统计方法进行分析。至于如何正确分析,我们将在后续的推文中跟大家介绍!

    统计合作与交流欢迎私信我们~

    相关文章

      网友评论

        本文标题:NHANES数据库数据下载

        本文链接:https://www.haomeiwen.com/subject/qhsjwltx.html