西安交通大學醫(yī)學部公共衛(wèi)生學院流行病與衛(wèi)生統(tǒng)計教研室(710061)
米白冰 屈鵬飛 程 悅 黨少農(nóng)△ 裴磊磊 顏 虹△
基于R語言應用矩陣計算半定量食物頻率問卷的營養(yǎng)素攝入量*
西安交通大學醫(yī)學部公共衛(wèi)生學院流行病與衛(wèi)生統(tǒng)計教研室(710061)
米白冰 屈鵬飛 程 悅 黨少農(nóng)△裴磊磊 顏 虹△
目前常用的膳食調(diào)查方法可以分為前瞻性和回顧性調(diào)查方法兩大類,實際營養(yǎng)流行病學調(diào)查中多以回顧性調(diào)查方法評估人群膳食攝入,其中尤以半定量食物頻率問卷法在實際工作中應用較為廣泛[1-4]。實踐中,研究者多使用營養(yǎng)計算器、excel、SPSS、stata等軟件計算膳食營養(yǎng)成分,但上述軟件應用到大規(guī)模人群調(diào)查的膳食營養(yǎng)素數(shù)據(jù)處理時仍有頗多掣肘之處,使用不便[3,5-6]。本文將基于矩陣運算思想,利用 R語言的矩陣運算功能編制營養(yǎng)素計算程序,展示其在膳食營養(yǎng)素成分計算的應用,突出體現(xiàn)其便捷、高效、精確的特點,供相關研究人員在今后使用半定量食物頻率問卷時權(quán)作參考。
1.研究對象
(1)調(diào)查人群膳食數(shù)據(jù)庫
數(shù)據(jù)來源于2013年7月至11月在陜西省30個縣進行的出生缺陷現(xiàn)況及其危險因素橫斷面調(diào)查。采用橫斷面調(diào)查設計,分層多階段隨機抽樣方法進行抽樣,根據(jù)城鄉(xiāng)比例,并考慮人口密集度和生育水平,隨機抽取10個城區(qū)和20個縣。在抽樣縣中隨機抽取6個鄉(xiāng)(城區(qū)為3個街道),從每個鄉(xiāng)隨機抽取6個村(城區(qū)為6個社區(qū)),每個村隨機調(diào)查30名(社區(qū)為60名)在2010-2013年間曾經(jīng)懷孕的婦女,在這些婦女中隨機抽取個體完成半定量膳食頻率問卷,該膳食問卷收集了102種食物的食用頻率及分量的數(shù)據(jù)。膳食問卷審核無誤后,經(jīng)Epidata3.1建立數(shù)據(jù)庫,采用雙盲錄入法進行數(shù)據(jù)錄入和整理。選取其中2000份半定量膳食頻率問卷作為訓練集進行方法演示。
(2)食物成分表數(shù)據(jù)庫
以《中國食物成分表(2004版)》,《中國食物成分表(2002版)》為準,經(jīng)Epidata3.1建立數(shù)據(jù)庫,采取雙盲錄入法進行數(shù)據(jù)錄入,制作中國食物成分表數(shù)據(jù)庫。選取本次膳食問卷詢問到的有關食物單獨提取建立食物成分表數(shù)據(jù)庫,包含102種食物的25項膳食成分,數(shù)據(jù)庫結(jié)構(gòu)如表2。

表1 調(diào)查人群膳食數(shù)據(jù)庫樣例

表2 食物成分表數(shù)據(jù)庫樣例
2.研究方法
若A為m×n矩陣,B為n×p矩陣,則他們的一般矩陣乘積A×B會是一個m×p的矩陣C。其中元素的計算公式如下:

另有,給定兩個的矩陣,其阿達馬乘積標記為A·B。則有

運用矩陣運算的思想觀察上述兩個數(shù)據(jù)庫的結(jié)構(gòu)特點,可以發(fā)現(xiàn)具有明顯的規(guī)律性,膳食數(shù)據(jù)庫中fr1至fr102代表被調(diào)查者各類食物的食用頻率,wt1至wt102代表被調(diào)查者各類食物的單次食用分量。食物成分數(shù)據(jù)庫中,25個變量則為該食物的對應的25種營養(yǎng)素成分。則可以將膳食數(shù)據(jù)庫構(gòu)建為兩個矩陣,分別為7424行102列的食用頻率矩陣FR和單次食用分量矩陣WT;同時將食物成分數(shù)據(jù)庫構(gòu)建為102行25列的食物成分矩陣FC。對每一例被調(diào)查者,其營養(yǎng)素攝入量的計算公式如下:
某一營養(yǎng)素攝入總量
=fr1×wt1×食物1中該營養(yǎng)素含量+fr2×wt2
×食物2中該營養(yǎng)素含量+…+fr102×wt102
×食物102中該營養(yǎng)素含量
則計算整個調(diào)查人群的營養(yǎng)素攝入量,可以抽象為計算一個7424行25列的矩陣PF,具體計算過程如下

如上式,可以看到,靈活運用矩陣思想將繁瑣的計算過程抽象為簡單的矩陣計算式。而R語言強大的矩陣運算過程讓上述計算實現(xiàn)起來較為簡單[7]。下面我們就具體討論計算過程的R語言實現(xiàn)。
1.生成擬計算的矩陣FR、WT、FC
#導入膳食FFQ問卷數(shù)據(jù)#

#建立主要膳食矩陣#

#拆分為膳食頻率和每日膳食量矩陣#

#導入營養(yǎng)成分數(shù)據(jù)#

#建立矩陣#

2.計算每日營養(yǎng)素攝入矩陣PF,并輸出數(shù)據(jù)集
#矩陣的點乘計算相關人群膳食攝入量#

#計算每日營養(yǎng)成分#

#數(shù)據(jù)導出#

3.計算結(jié)果
輸入上述命令后運行,生成的調(diào)查人群營養(yǎng)素攝入量數(shù)據(jù)集如表3所示。可以看到,所有被調(diào)查者的營養(yǎng)素攝入量已自動按成分列出,便于后續(xù)處理和分析。

表3 調(diào)查人群的營養(yǎng)素攝入量數(shù)據(jù)樣例
半定量食物頻率問卷已廣泛應用在營養(yǎng)流行病學調(diào)查中,用于了解人群的膳食營養(yǎng)素攝入情況,有助于探索營養(yǎng)素與健康的相互關系。然而在實際應用工作中,由于傳統(tǒng)營養(yǎng)計算器設計目標用戶多為醫(yī)院臨床營養(yǎng)科室,多用于個體的膳食指導等方面,計算營養(yǎng)素成分時需單個手工輸入調(diào)查者的數(shù)據(jù)并計算,雖具有操作簡單,使用方便的優(yōu)點,但不能滿足用戶個性化需求,且難以修改數(shù)據(jù)庫。其面對數(shù)十份半定量食物頻率問卷時效率尚可,但在數(shù)千份問卷的數(shù)據(jù)分析時,會給數(shù)據(jù)錄入者造成極大的體力和腦力負擔,此時,其計算的準確性也不能保證。而有部分研究報道,使用SPSS、STATA等統(tǒng)計軟件編制宏程序計算膳食營養(yǎng)素,雖然免于手工單個數(shù)據(jù)的輸入和計算,但實際應用中發(fā)現(xiàn),上述軟件的程序編制工作浩繁,動輒輸入數(shù)百行程序,醫(yī)學工作者的學習難度較大,不能廣泛推廣。
本文主要介紹了矩陣運算的思想,將傳統(tǒng)的線性計算過程轉(zhuǎn)換為矩陣的乘法運算過程,計算過程大為簡化,思路清晰,極易編程實現(xiàn)。在具體應用過程中,利用R語言的矩陣預算過程能簡潔快速地編制程序(全部計算程序不超過20行),計算過程全程自動化,避免了人為錄入數(shù)據(jù)時的差錯,且能夠選擇性提取特定食物、特定營養(yǎng)素成分分別進行計算,對膳食數(shù)據(jù)的計算具有高度的靈活性,具有極高的應用價值,值得在實際研究中推廣應用。
[1]鄒凌燕.大學生膳食營養(yǎng)及人體成分的研究.山東大學,2005.
[2]王小琴,顏虹,颯日娜.西安市50歲以上居民食物頻率問卷準確性及重現(xiàn)性研究.衛(wèi)生研究,2009,38(3):299-301.
[3]黨少農(nóng),顏虹,邢遠,等.育齡婦女血清葉酸及血紅蛋白水平調(diào)查.中國公共衛(wèi)生,2009,(2):134-136.
[4]束莉.孕期增重、新生兒出生體重的影響因素分析及與膳食關系的研究.安徽醫(yī)科大學,2010.
[5]胡慶慶.農(nóng)村中老年人群食物營養(yǎng)素攝入情況及生活習慣調(diào)查分析.青島大學,2010.
[6]鄭艷澤,翟成凱,劉亞琪,等.Excel 2003在營養(yǎng)計算器中應用.中國公共衛(wèi)生,2010,(4):471.
[7]R Library:Matrices and matrix computations.http://www.ats.ucla.edu/stat/r/library/matrix_alg.htm.
國家自然科學基金(編號:81230016)
△通信作者:黨少農(nóng),E-mail:tjdshn@m(xù)ail.xjtu.edu.cn;顏虹,E-mail:xjtu_yh.paper@aliyun.com
郭海強)