據(jù)庫入門指南:從下載XPT文件到權(quán)重處理與多周期合并)
2018年我寫第一篇SCI的時(shí)候?qū)焷G給我一句話“NHANES這個(gè)數(shù)據(jù)庫免費(fèi)數(shù)據(jù)量大你自己去挖?!蹦菚r(shí)候我連NHANES全稱都念不順下載數(shù)據(jù)全靠看英文頁面硬啃XPT文件用什么打開都不知道權(quán)重怎么處理更是一頭霧水。前前后后折騰了兩個(gè)月才跑通一個(gè)最簡(jiǎn)單的分析。這兩年帶著不少師弟師妹重復(fù)同樣的過程問來問去還是那幾個(gè)問題數(shù)據(jù)在哪下、文件怎么讀、權(quán)重要不要管、多個(gè)周期怎么合并。所以這篇文章就想把NHANES數(shù)據(jù)庫從入門到基本操作講清楚作為系列第一篇先解決“它是什么、怎么拿數(shù)據(jù)、數(shù)據(jù)怎么組織”這三件事。如果你是第一次接觸NHANES或者下了數(shù)據(jù)但不知道怎么處理這篇文章能幫你少走一半彎路。1. NHANES數(shù)據(jù)庫到底是什么1.1 從一次全國(guó)調(diào)查說起NHANES全稱National Health and Nutrition Examination Survey翻譯過來是“全國(guó)健康與營(yíng)養(yǎng)狀況調(diào)查”。它的數(shù)據(jù)由美國(guó)國(guó)家衛(wèi)生統(tǒng)計(jì)中心NCHS負(fù)責(zé)管理運(yùn)作上歸在疾病控制與預(yù)防中心CDC體系下。很多人剛聽到“美國(guó)”兩個(gè)字就以為只能用來研究美國(guó)人群其實(shí)這是一個(gè)誤區(qū)。NHANES的公開數(shù)據(jù)沒有任何國(guó)別限制全球研究者都能免費(fèi)下載國(guó)內(nèi)用NHANES發(fā)SCI的文章也早就非常多內(nèi)分泌、營(yíng)養(yǎng)、心血管、職業(yè)暴露、精神衛(wèi)生各個(gè)方向都在用。這個(gè)調(diào)查的歷史最早可以追溯到1960年代最初是隔幾年做一次全國(guó)性調(diào)查比如NHANES I、NHANES II、NHANES III樣本周期不連續(xù)。1999年開始它改成“連續(xù)調(diào)查”模式每年采集一整年的數(shù)據(jù)每?jī)赡曜鳛橐粋€(gè)發(fā)布周期對(duì)外公布。到現(xiàn)在NHANES已經(jīng)積累了二十多年、十余個(gè)周期的連續(xù)數(shù)據(jù)每個(gè)周期大約覆蓋五千到一萬人所有周期加起來是幾萬甚至十幾萬人的規(guī)模。我一開始對(duì)NHANES的定位理解偏了——我以為它是一個(gè)純粹的“營(yíng)養(yǎng)調(diào)查數(shù)據(jù)庫”。實(shí)際上它的范圍遠(yuǎn)超營(yíng)養(yǎng)。問卷部分涵蓋吸煙、飲酒、慢性病史、用藥、睡眠、抑郁篩查、性行為、飲食頻率體檢部分包括身高體重、血壓、腰圍、握力、體成分化驗(yàn)部分更是涵蓋了血常規(guī)、血脂、血糖、糖化血紅蛋白、維生素、重金屬、炎癥指標(biāo)、性激素等等。等于說它是一個(gè)“健康百科型”的橫斷面數(shù)據(jù)庫。1.2 抽樣設(shè)計(jì)決定了數(shù)據(jù)不能當(dāng)普通調(diào)查用NHANES的樣本不是隨便找一群人填問卷而是采用分層多階段概率抽樣。直觀理解就是先按地理區(qū)域分層抽縣再在縣里抽街區(qū)街區(qū)里抽住戶住戶里抽個(gè)人。整個(gè)抽樣的目標(biāo)是讓最終受訪者能夠代表美國(guó)非住院平民人口的整體情況。這里面有個(gè)關(guān)鍵設(shè)計(jì)為了更好地估計(jì)特定亞組NHANES會(huì)對(duì)老年人、青少年、墨西哥裔美國(guó)人、非裔美國(guó)人等群體做“過采樣”。也就是說這些人群被抽中的概率比他們?cè)诳側(cè)丝谥械谋壤?。這樣做的目的是保證每個(gè)亞組都有足夠的樣本量做統(tǒng)計(jì)分析。但這種設(shè)計(jì)帶來的直接后果就是——樣本是“偏”的不能直接拿原始樣本量算比例而必須用權(quán)重調(diào)整。這一點(diǎn)在第4部分會(huì)專門展開。NHANES的數(shù)據(jù)采集也分為兩大塊。第一塊是家庭訪談問卷由經(jīng)過培訓(xùn)的訪談員入戶完成問的都是主觀報(bào)告信息比如有沒有確診過糖尿病、過去30天有沒有吸煙。第二塊是在移動(dòng)體檢中心通??s寫為MEC里完成的身體檢查和實(shí)驗(yàn)室采樣這是硬數(shù)據(jù)血壓是當(dāng)場(chǎng)測(cè)的血是當(dāng)場(chǎng)抽的不是靠受訪者回憶。這也是NHANES最有價(jià)值的賣點(diǎn)——很多數(shù)據(jù)庫只有問卷自報(bào)數(shù)據(jù)而NHANES有一大批客觀實(shí)測(cè)指標(biāo)。1.3 “連續(xù)NHANES”是你最常接觸的概念如果你在文獻(xiàn)里看到“continuous NHANES”或“NHANES 1999-2018”說的就是1999年之后連續(xù)開展、每?jī)赡暌粋€(gè)周期發(fā)布的數(shù)據(jù)。1999年之前的數(shù)據(jù)則叫NHANES I/II/III或者其他主題調(diào)查使用方式不太一樣現(xiàn)在絕大多數(shù)研究用的都是連續(xù)NHANES的數(shù)據(jù)。周期命名也需要記牢1999-2000是一個(gè)周期2001-2002又是一個(gè)周期依此類推。每個(gè)周期發(fā)布一套獨(dú)立的數(shù)據(jù)文件。需要特別注意的是2020年這個(gè)節(jié)點(diǎn)由于疫情原計(jì)劃的2019-2020周期實(shí)際只調(diào)查到2020年3月就中斷了官方把2019-2020的數(shù)據(jù)文件和2017-2018合并成一個(gè)發(fā)布包叫“2017-March 2020 Pre-Pandemic Data”。所以如果你找“NHANES 2019-2020”可能會(huì)發(fā)現(xiàn)它和2017-2018放在一起這不是文檔錯(cuò)誤而是官方的處理方式。合并多年份周期做分析是NHANES的常規(guī)操作。單個(gè)周期樣本量只有幾千到一萬人做某些亞組分析會(huì)很吃力所以大家經(jīng)常把多個(gè)周期合并成一個(gè)大樣本。比如研究維生素D與全因死亡的關(guān)系可能直接把1999-2018十個(gè)周期全合并樣本量直接到數(shù)萬人。合并的具體操作稍后講。2. 為什么值得花時(shí)間研究它2.1 免費(fèi)、開源、樣本量大最直接的吸引力就是免費(fèi)。注冊(cè)NHANES賬號(hào)完全免費(fèi)下載數(shù)據(jù)不需要付費(fèi)不需要機(jī)構(gòu)授權(quán)不需要審批。這對(duì)學(xué)生和剛起步的研究者特別友好。不像有些數(shù)據(jù)庫要申請(qǐng)、要授權(quán)費(fèi)用、要倫理審查NHANES的數(shù)據(jù)公告里明確說明開放給全球研究者使用。樣本量方面單看一個(gè)周期似乎不大但合并多年份以后優(yōu)勢(shì)就出來了。比如研究肥胖或高血壓這類常見問題合并近20年數(shù)據(jù)后人數(shù)可以上萬甚至十萬級(jí)別病例組和對(duì)照組都綽綽有余。而且這些數(shù)據(jù)是統(tǒng)一的調(diào)查方案、統(tǒng)一的實(shí)驗(yàn)室標(biāo)準(zhǔn)、統(tǒng)一的數(shù)據(jù)字典體系合并的邏輯一致性比你把幾個(gè)獨(dú)立小數(shù)據(jù)庫硬拼在一起要可靠得多。還有一點(diǎn)是發(fā)表認(rèn)可度。NHANES系列數(shù)據(jù)在國(guó)際期刊上的接受度一直很高因?yàn)樗硇詮?qiáng)、變量公開可查、方法學(xué)文檔完善審稿人通常不會(huì)質(zhì)疑數(shù)據(jù)的質(zhì)量。你只需要把調(diào)查周期、抽樣設(shè)計(jì)、權(quán)重處理、排除標(biāo)準(zhǔn)寫清楚方法學(xué)部分就立得住。2.2 變量覆蓋廣客觀指標(biāo)是亮點(diǎn)這是NHANES區(qū)別于很多問卷類數(shù)據(jù)庫的核心優(yōu)勢(shì)。做臨床研究的人都有體會(huì)如果只有自報(bào)“我有沒有高血壓”誤差很大而NHANES直接給你一個(gè)用標(biāo)準(zhǔn)血壓計(jì)測(cè)出來的收縮壓和舒張壓再配合是否服用降壓藥的問題就能比較準(zhǔn)確地定義高血壓狀態(tài)。實(shí)驗(yàn)室指標(biāo)更是豐富。血常規(guī)里白細(xì)胞、血紅蛋白、血小板都有生化指標(biāo)里總膽固醇、高密度脂蛋白、低密度脂蛋白、甘油三酯、空腹血糖、糖化血紅蛋白營(yíng)養(yǎng)指標(biāo)里有維生素D、葉酸、鐵蛋白環(huán)境暴露領(lǐng)域還有血鉛、血汞等重金屬指標(biāo)部分周期還測(cè)了炎癥指標(biāo)、性激素、甲狀腺功能。近幾年的周期還增加了更多新指標(biāo)比如某些有機(jī)污染物。研究什么方向就能在數(shù)據(jù)字典里找對(duì)應(yīng)的化驗(yàn)變量。問卷部分覆蓋的是“生活方式”和“主觀健康”信息。我常用的有吸煙是否吸過100支煙、目前每天吸多少支、飲酒、體力活動(dòng)、睡眠時(shí)長(zhǎng)、抑郁量表PHQ-9、疼痛、牙齒健康、用藥記錄。用藥這一塊很有價(jià)值它包含了處方藥的通用名、藥物類別編碼可以研究特定藥物使用與化驗(yàn)指標(biāo)的關(guān)系。還有家族史、收入水平、教育程度、婚姻狀況、保險(xiǎn)情況這些重要的協(xié)變量做調(diào)整分析基本夠用。2.3 和其他數(shù)據(jù)庫比優(yōu)勢(shì)在哪很多人會(huì)問NHANES和MIMIC、SEER、CHARLS這些數(shù)據(jù)庫到底怎么選。我做了個(gè)簡(jiǎn)單對(duì)比NHANES全國(guó)性橫斷面調(diào)查覆蓋一般人群主打健康營(yíng)養(yǎng)和慢性病含體檢和實(shí)驗(yàn)室實(shí)測(cè)指標(biāo)適合做患病率、關(guān)聯(lián)性研究。MIMIC重癥監(jiān)護(hù)病房的大數(shù)據(jù)包含生命體征、入出院記錄、醫(yī)囑、檢驗(yàn)結(jié)果、護(hù)理記錄適合做ICU患者預(yù)后、臨床決策方向?qū)儆诳v向患者數(shù)據(jù)。SEER腫瘤登記數(shù)據(jù)覆蓋大量癌癥病例包含腫瘤分期、病理、生存隨訪適合做癌癥流行病學(xué)和生存分析。CHARLS中國(guó)中老年健康養(yǎng)老調(diào)查縱向面板自報(bào)信息和部分體檢數(shù)據(jù)適合研究中國(guó)中老年人群的衰老和慢性病。對(duì)比起來NHANES的獨(dú)特位置其實(shí)是“一般人群實(shí)測(cè)指標(biāo)多年份可合并”。如果你需要的是一個(gè)能代表全人群、又有客觀生化指標(biāo)的數(shù)據(jù)源NHANES幾乎是首選。如果你研究的是ICU患者、腫瘤發(fā)病趨勢(shì)或中國(guó)老齡化問題那就要考慮其他數(shù)據(jù)庫。不過也別過度神化它。第一NHANES是橫斷面設(shè)計(jì)變量和結(jié)局同時(shí)采集做因果推斷比較吃力第二它代表的是美國(guó)非住院平民人口結(jié)論外推到其他國(guó)家或住院患者時(shí)要謹(jǐn)慎第三部分變量在不同周期的定義、編碼甚至單位都可能變化這給多周期合并埋了坑。3. 正式使用前的下載與準(zhǔn)備工作3.1 注冊(cè)官網(wǎng)賬號(hào)雖然不是必須但建議做NHANES的官方網(wǎng)站是cdc.gov/nchs/nhanes/。打開后你看到的頁面風(fēng)格很樸素沒有花哨的交互但資料非常全。絕大多數(shù)數(shù)據(jù)文件的下載都不要求登錄直接點(diǎn)擊就能下載。那我為什么還建議注冊(cè)因?yàn)樽?cè)后有幾點(diǎn)實(shí)際好處一是可以下載部分限制訪問的數(shù)據(jù)比如含更細(xì)地理信息的文件二是官方發(fā)布新周期數(shù)據(jù)或文檔更新時(shí)會(huì)有公告三是你在做研究時(shí)要引用官方文檔登錄狀態(tài)下載和查詢記錄更方便。注冊(cè)流程很簡(jiǎn)單填郵箱、設(shè)置密碼、驗(yàn)證郵件就可以不需要機(jī)構(gòu)郵箱也不需要審批。注冊(cè)免費(fèi)這點(diǎn)不用擔(dān)心。3.2 XPT文件到底是什么格式怎么打開這是新手最容易卡殼的地方。我在指導(dǎo)別人時(shí)十個(gè)里有八個(gè)第一反應(yīng)是用Excel打開下載好的文件結(jié)果要么打不開要么打開一片亂碼。原因是NHANES提供的主要數(shù)據(jù)下載格式是SAS Transport Version 8文件后綴是.XPT。這不是Excel能直接處理的格式而是一種由SAS發(fā)明的跨平臺(tái)數(shù)據(jù)傳輸格式專門用來在不同統(tǒng)計(jì)軟件之間交換數(shù)據(jù)。為什么要用這個(gè)格式因?yàn)閄PT文件能保留變量名、變量標(biāo)簽、格式說明這些元信息。比如一個(gè)變量叫RIAGENDRXPT文件里還帶有一個(gè)標(biāo)簽“Gender of the participant”讀入統(tǒng)計(jì)軟件后你能看到這個(gè)變量的含義。如果轉(zhuǎn)成CSV標(biāo)簽就丟了。讀取XPT最常用的工具組合R語言用haven包的read_xpt()或foreign包的read.xport()Python用pandas.read_sas()SPSS和SAS本身也能直接讀取。我個(gè)人的建議是如果你以后要長(zhǎng)期用NHANES做分析直接學(xué)R配合survey、dplyr、tableone這些包處理NHANES數(shù)據(jù)非常順。Python也能做但統(tǒng)計(jì)描述和加權(quán)分析這一塊生態(tài)沒有R成熟。3.3 動(dòng)手下載第一個(gè)數(shù)據(jù)文件以人口學(xué)文件為例演示一下完整流程你后面下其他文件照葫蘆畫瓢就行。第一步在官網(wǎng)首頁找到“Questionnaires, Datasets, and Related Documentation”入口點(diǎn)進(jìn)去之后按年份選擇調(diào)查周期。假設(shè)你要下載1999-2000周期的Demographics數(shù)據(jù)就選“1999-2000”。頁面會(huì)列出一堆文件類別常見的有Demographics、Dietary、Examination、Laboratory、Questionnaire、Limited Access等。不同周期的頁面布局會(huì)有一點(diǎn)差別但整體邏輯差不多。第二步點(diǎn)開Demographics類別會(huì)看到對(duì)應(yīng)表格列里面有“Demographics (DEMO)”字樣旁邊標(biāo)明數(shù)據(jù)文件大小后綴是XPT。同時(shí)還有一份HTML格式的數(shù)據(jù)字典Codebook和一份文檔Documentation。下載XPT文件是你拿數(shù)據(jù)的第一步但一定記得把代碼本也下載或在線保留下來。你后面分析時(shí)查變量就靠它。第三步把XPT文件放到工作目錄用R讀取library(haven) demo - read_xpt(DEMO.XPT) dim(demo) colnames(demo)第一次讀取成功后你應(yīng)該能看到一個(gè)幾千行、幾十列的數(shù)據(jù)框。其中每一行對(duì)應(yīng)一個(gè)受訪者每一列對(duì)應(yīng)一個(gè)變量。比如RIAGENDR是性別RIDAGEYR是年齡按年記錄RIDRETH1是種族。這些變量名看起來有些奇怪但NHANES的變量命名有一定的規(guī)律前綴常常是模塊縮寫比如RI開頭多半是“interview/exam”相關(guān)的人口學(xué)變量LB開頭一般是實(shí)驗(yàn)室laboratory變量MCQ開頭是慢性病問卷medical conditions questionnaire。讀到這一步你已經(jīng)有能力下載任何NHANES數(shù)據(jù)文件了。核心步驟就是選周期、找類別、下XPT、讀進(jìn)來。但下載只是開始真正的難點(diǎn)是理解數(shù)據(jù)內(nèi)部的邏輯關(guān)系尤其是變量關(guān)聯(lián)方式和權(quán)重。4. 數(shù)據(jù)結(jié)構(gòu)里的關(guān)鍵邏輯變量、權(quán)重與合并4.1 認(rèn)識(shí)三個(gè)核心變量NHANES數(shù)據(jù)文件很多但所有文件之間并不是孤立的它們靠幾個(gè)關(guān)鍵變量串起來。你必須在心里刻住三個(gè)變量名。第一個(gè)是SEQNrespondent sequence number受訪者序列號(hào)。這是每個(gè)受訪者在當(dāng)個(gè)周期內(nèi)唯一的編號(hào)可以理解成數(shù)據(jù)庫里的主鍵。所有數(shù)據(jù)文件——人口學(xué)、體檢、化驗(yàn)、問卷——都用這個(gè)編號(hào)來標(biāo)識(shí)同一個(gè)人。你要把化驗(yàn)數(shù)據(jù)和人口學(xué)數(shù)據(jù)合并就是按SEQN匹配。就好比兩個(gè)Excel表格都有“學(xué)號(hào)”這一列你按學(xué)號(hào)VLOOKUP一樣。第二個(gè)是調(diào)查周期標(biāo)識(shí)。早期周期里常見的是SDDSRVYR比如1999-2000周期值為12001-2002周期值為2依此類推。當(dāng)你合并多個(gè)周期的文件時(shí)這個(gè)變量能幫你區(qū)分每個(gè)樣本來自哪個(gè)周期做分層描述或亞組分析時(shí)非常有用。近年的周期里這個(gè)變量可能用別的名字或位置需要查代碼本確認(rèn)。第三個(gè)是權(quán)重變量。人口學(xué)文件里通常有WTMEC2YR、WTMEC4YR分別代表2年體檢權(quán)重和4年體檢權(quán)重。MEC就是指移動(dòng)體檢中心也就是完成體檢部分的人群權(quán)重。為什么要體重這是整個(gè)NHANES分析最核心也最容易被忽視的一環(huán)。4.2 權(quán)重變量為什么繞不開先打個(gè)比方。假設(shè)你要估算全班同學(xué)的早餐習(xí)慣但你調(diào)查時(shí)故意多問了一些女生那么班級(jí)原始數(shù)據(jù)里女生比例比真實(shí)比例高如果你直接拿這個(gè)數(shù)據(jù)算“全班女生比例”結(jié)果一定是偏的。NHANES也是這個(gè)邏輯它為了確保特定亞組有足夠樣本故意讓某些人群的入樣概率更高。要找回“全美國(guó)非住院平民人口”的真實(shí)比例就必須對(duì)每個(gè)樣本按它的入樣概率做加權(quán)。具體怎么用如果只是描述性統(tǒng)計(jì)比如全人群的糖尿病患病率就要加權(quán)否則結(jié)果會(huì)明顯偏離CDC官方報(bào)告的數(shù)字。做回歸分析時(shí)學(xué)術(shù)界有兩種觀點(diǎn)嚴(yán)格派認(rèn)為在所有估計(jì)中都應(yīng)該考慮抽樣設(shè)計(jì)務(wù)實(shí)派認(rèn)為當(dāng)模型是研究關(guān)聯(lián)而非估計(jì)總體水平時(shí)可以不加權(quán)。我個(gè)人的操作習(xí)慣是描述性統(tǒng)計(jì)必須加權(quán)建模時(shí)會(huì)把加權(quán)模型和未加權(quán)模型都跑一下敏感性分析里報(bào)告兩種結(jié)果這樣審稿人也不會(huì)挑毛病。R里面處理NHANES數(shù)據(jù)我一般用survey包?;玖鞒淌窍榷x調(diào)查設(shè)計(jì)對(duì)象library(survey) nhanes_design - svydesign( id ~SDMVPSU, strata ~SDMVSTRA, weights ~WTMEC2YR, nest TRUE, data demo )這里的SDMVPSU和SDMVSTRA是NHANES專門提供的偽抽層和偽單元變量官方建議在做方差估計(jì)時(shí)使用。定義了設(shè)計(jì)對(duì)象以后可以用svymean、svytotal、svyglm等函數(shù)做加權(quán)均數(shù)、加權(quán)總數(shù)和加權(quán)回歸。這一套東西做完你的結(jié)果才是“有代表性”的。4.3 多周期合并的策略當(dāng)你決定合并多個(gè)周期時(shí)數(shù)據(jù)合并本身并不復(fù)雜把不同周期的文件按同樣的變量結(jié)構(gòu)用rbind或者bind_rows拼起來就行。麻煩的是兩個(gè)問題變量名和編碼的一致性以及權(quán)重的調(diào)整。先說變量一致性。NHANES不同周期的變量名在多數(shù)情況下是一致的但也不是沒有例外。比如某些實(shí)驗(yàn)室指標(biāo)早期用舊方法檢測(cè)后來換了檢測(cè)方法變量名可能不同單位也可能從mg/dL變成mmol/L。還有些問卷問題改變了措辭或選項(xiàng)變量的編碼就從0/1變成了1/2/3。所以合并前一定要逐個(gè)周期查看代碼本確認(rèn)你要的變量在每個(gè)周期都存在而且定義一致。如果不一致就需要做映射或轉(zhuǎn)換。這一步非常耗費(fèi)時(shí)間但跳過去后面就是坑。再說權(quán)重調(diào)整。如果你合并了兩個(gè)周期可以直接使用人口學(xué)文件里提供的4年權(quán)重WTMEC4YR。如果你合并了三個(gè)或更多周期官方給出的常用做法是新建一個(gè)權(quán)重變量把原始的2年權(quán)重除以合并的周期數(shù)。比如合并1999-2018共10個(gè)周期新權(quán)重就是WTMEC2YR / 10。為什么是除以10而不是乘以因?yàn)槊總€(gè)2年周期權(quán)重代表的是當(dāng)年那個(gè)周期總?cè)丝诘慕坪喜?0個(gè)周期以后如果不調(diào)整權(quán)重總和相當(dāng)于放了10倍的人口結(jié)構(gòu)性放大。除以周期數(shù)后合并樣本的加權(quán)總和才回到一個(gè)合理的人口量級(jí)。這個(gè)處理雖然不是唯一方案但操作簡(jiǎn)單、被廣泛接受寫文章時(shí)注明“combined weights were constructed by dividing the 2-year weights by the number of cycles”就行。我自己的習(xí)慣是合并前先做一個(gè)檢查單獨(dú)看2017-2018周期的加權(quán)平均年齡和官方發(fā)布的人口特征是否一致再和1999-2000周期對(duì)比確認(rèn)權(quán)重使用正確。如果算出來的均值和官方報(bào)告差得太離譜八成是權(quán)重用錯(cuò)或變量單位有問題。5. 新手最容易踩的坑與排查技巧5.1 常見問題速查表這幾年的指導(dǎo)經(jīng)驗(yàn)里大家翻車的場(chǎng)景高度相似。我整理了一張速查表你如果卡住了可以直接對(duì)號(hào)入座?,F(xiàn)象可能原因解決辦法下載的XPT文件Excel打不開XPT是SAS傳輸格式不是Excel表格用R的read_xpt()或Python的read_sas()讀取變量名和代碼本對(duì)不上下載了錯(cuò)誤的周期或錯(cuò)誤的文件核對(duì)文件前綴和周期年份重新下載對(duì)應(yīng)文件合并后樣本量異常大或異常小不同周期的樣本篩選條件不一致逐周期檢查數(shù)據(jù)字典確認(rèn)排除條件一致算出的患病率/均值和官方差異很大沒有使用權(quán)重用survey包定義調(diào)查設(shè)計(jì)對(duì)象并加權(quán)分析同一變量在不同周期編碼不一致各周期獨(dú)立維護(hù)變量定義合并前建立變量映射表統(tǒng)一編碼后再合并SEQN匹配后大量缺失兩個(gè)文件中的SEQN不在同一周期確認(rèn)匹配的兩個(gè)文件都來自同一調(diào)查周期5.2 幾個(gè)容易翻車的細(xì)節(jié)第一個(gè)細(xì)節(jié)是實(shí)驗(yàn)室文件的變量后綴。NHANES實(shí)驗(yàn)室數(shù)據(jù)經(jīng)常為同一個(gè)檢測(cè)項(xiàng)目提供多個(gè)版本比如原始值、排除異常的值、甚至按不同單位重編碼的版本。變量名后面可能帶L或M這樣的后綴含義在代碼本里有注釋。很多人讀進(jìn)R以后用原始列名直接跑回歸發(fā)現(xiàn)結(jié)果完全對(duì)不上就是因?yàn)闆]注意選的是哪個(gè)版本。第二個(gè)細(xì)節(jié)是缺失值的編碼。NHANES的缺失不是只用一個(gè)NA表示代碼本里常見編碼有7、8、9分別對(duì)應(yīng)“拒絕回答”“不知道”“不適用”。還有.D表示無法檢測(cè).R表示拒絕這些符號(hào)在讀取時(shí)會(huì)被識(shí)別為缺失但如果你用SAS或其他軟件直接導(dǎo)入某些軟件可能把它們當(dāng)成字符型數(shù)據(jù)處理導(dǎo)致數(shù)值變量變字符分析報(bào)錯(cuò)。讀取后要檢查列的屬性必要時(shí)用haven包已經(jīng)自動(dòng)處理好的labelled類數(shù)據(jù)做轉(zhuǎn)換。第三個(gè)細(xì)節(jié)是飲食數(shù)據(jù)的周期問題。NHANES的飲食回顧數(shù)據(jù)體積非常大包含幾十個(gè)食物組分變量而且早期周期和近期的飲食數(shù)據(jù)組織方式有差別。如果你要做膳食成分或營(yíng)養(yǎng)攝入研究建議先確認(rèn)目標(biāo)周期是否有飲食數(shù)據(jù)以及用什么調(diào)查工具采集的。我見過有同學(xué)想分析維生素D攝入下載了實(shí)驗(yàn)室文件里的血清維生素D又把飲食問卷里的維生素D攝入當(dāng)成同一個(gè)東西其實(shí)一個(gè)代表體內(nèi)水平一個(gè)代表膳食攝入兩者概念完全不同。第四個(gè)細(xì)節(jié)是限定訪問數(shù)據(jù)。有些變量比如更精細(xì)的地理信息、某些直接標(biāo)識(shí)信息是限制訪問的普通下載拿不到需要申請(qǐng)并獲得批準(zhǔn)。很多新手下到一半發(fā)現(xiàn)某個(gè)變量不在XPT文件里以為是下載錯(cuò)誤實(shí)際是因?yàn)樗鼘儆谑芟迶?shù)據(jù)。官方頁面會(huì)明確標(biāo)注“Restricted Data”字樣。如果研究確實(shí)需要可以去走申請(qǐng)流程但不建議第一篇研究就依賴這些變量。第五個(gè)提醒是多周期合并時(shí)的變量標(biāo)簽。bind_rows合并多個(gè)周期的數(shù)據(jù)框時(shí)R會(huì)自動(dòng)按列名匹配。如果兩個(gè)周期的同一變量在SAS格式里標(biāo)簽不同合并后可能變成帶差異的對(duì)象。我在實(shí)操中最穩(wěn)妥的做法是先選取需要的變量子集統(tǒng)一列名再把每個(gè)周期轉(zhuǎn)成普通data.frame最后合并。不要一上來就全變量合并那會(huì)讓數(shù)據(jù)框龐大且脆弱。5.3 資料與學(xué)習(xí)路徑建議如果你剛?cè)腴T我最推薦的學(xué)習(xí)路徑不是看論文而是先用一個(gè)具體的研究問題去“跑通全流程”。比如“美國(guó)成年人血清維生素D水平與代謝綜合征的關(guān)系”這個(gè)方向非常適合做NHANES第一篇。你要做的步驟是第一步下載1999-2018所有周期的Demographics文件合并保留年齡、性別、種族、教育、收入、權(quán)重等變量。第二步下載對(duì)應(yīng)的實(shí)驗(yàn)室變量文件找到血清25(OH)D的變量按SEQN合并。第三步定義代謝綜合征變量可能需要腰圍、血壓、空腹血糖、甘油三酯、高密度脂蛋白這些分布在體檢文件和化驗(yàn)文件里。第四步用survey包定義加權(quán)設(shè)計(jì)做描述統(tǒng)計(jì)再做加權(quán)多因素回歸。這一套流程下來你基本就把NHANES的數(shù)據(jù)下載、變量定位、數(shù)據(jù)合并、加權(quán)分析全練了一遍。之后再換到骨質(zhì)疏松、睡眠、抑郁或者其他方向只需要換變量而已。我個(gè)人在實(shí)際操作中還有一個(gè)習(xí)慣每下載一個(gè)數(shù)據(jù)文件都順手把代碼本的HTML另存一份到本地按周期和類別歸檔。這個(gè)習(xí)慣在寫文章時(shí)回報(bào)特別大因?yàn)槟阍趯懛椒▽W(xué)部分時(shí)要精確報(bào)告變量名、周期、檢測(cè)方法沒有代碼本光靠記憶會(huì)崩潰。另一個(gè)建議是早期不要貪多不要試圖一次下載幾十個(gè)文件研究“全宇宙”先鎖定一個(gè)臨床問題控制變量數(shù)量跑出結(jié)果后你自然會(huì)對(duì)數(shù)據(jù)有什么、數(shù)據(jù)缺什么有感覺。NHANES看起來復(fù)雜但它的邏輯其實(shí)很統(tǒng)一樣本是按周期組織的文件之間靠SEQN連接所有統(tǒng)計(jì)推斷都要回到權(quán)重。把這三點(diǎn)刻在腦子里數(shù)據(jù)大門就算真正打開了。