東南大學公共衛生學院流行病與衛生統計學系(210009) 李萬慶 閔 捷 劉 沛 王燦楠 田 野 蔣文瀚
普查與調查數據處理系統(The Census and Survey Processing System,CSPro)是由美國普查局開發、中國國家統計局計算中心進行漢化移植的一個免費應用軟件。該軟件具有數據錄入、核查、雙份比較、合并、數據轉出且與其他軟件兼容等優良特性,當某些復雜調查由多級調查問卷組成時,CSPro可以用樹形結構顯示隸屬關系,同時通過后臺編程使數據錄入質量得到很好地保證,比較適合由多級調查問卷組成且調查對象較多的現場調查。本文以2011年中國總膳食調查研究數據庫構建為例,介紹CSPro軟件及其在中國總膳食調查研究數據庫構建中的具體使用方法。
1.CSPro的數據字典,通過對級(level)、記錄(record)、數據項(item)和值集的定義來顯示所有表與表之間、表與變量之間的隸屬結構關系以及每個變量的輸入類型、輸入范圍和輸入值限制,以便將來生成結構清晰的三級調查表格數據庫〔1〕。一個數據字典可有n個級為第一級,每級有n個記錄為第二級,所有記錄的第一個均為id項,每個記錄有n個數據項為第三級,每級可由符號‘+’‘-’展開。圖1為我們構建的中國總膳食調查研究的多級整體結構示意圖,它包括總膳食研究、食物編碼、recipecodes三個并列的數據字典,總膳食研究數據字典是總庫,食物編碼和cecipecodes數據字典為質量控制關聯子庫。其中,總膳食研究數據字典包含第一級總膳食研究questionnaire,總膳食研究questionnaire又包含第二級id、訪問時間、完成質量、家庭實物量登記表、家庭成員每人每日用餐登記表、三日家庭成員每日膳食詢問表等記錄。而每個記錄又包含第三級多個數據項,如id記錄下包含省份、城市、農村、市、縣、居委會、村、調查戶等數據項。
2.在級的水平下對每個記錄項進行設置,見圖2,列出級下四個記錄的設置,Type Value取不同的值區分不同類型的記錄,Required選Yes代表該記錄項為必填項目,Max取值表示每張表行數最大值,即四個記錄以4張表格形式出現,每個表格的行數分別為4行,1行,60行和20行。

圖1 中國總膳食調查研究數據字典多級整體結構示意

圖2 部分記錄的定義示意
3.每個記錄項下都包含n個數據項,對于每個數據項可以從左到右依次定義變量標簽,變量名,變量在總表中起始位數、變量長度、變量類型(有Alpha和Num型)、變量類別、變量重復次數、有無小數點、小數點是否顯示、空值是否用0補齊〔1〕。如圖3對調查對象id記錄下的各數據項進行變量設置。
4.我們可以對每一個數據項的集值進行設置。如圖4中對生理狀態的輸入范圍進行設置,正常可用0替代,孕婦可用1替代,乳母可用2替代,如果允許空缺,可設置missing,否則special選項設為空。設置好后在錄入時如果輸入其他值時就會顯示出錯提示信息。

圖3 部分數據項的定義示意

圖4 數據項輸入值設定示意
1.三級數據字典編好后,點edit-generate forms,自動形成三級調查表格。中國總膳食研究調查數據庫的部分表單如圖1所示,可以清晰的看到它們之間的隸屬關系,每張表分別與上述數據字典一一對應。
2.中國總膳食調查研究數據庫中家庭食物登記表部分見圖5,因為在數據字典中我們對家庭食物登記表這一紀錄的最大行數max定義為60,故生成的該表格有60行,而且該記錄下每個數據項都有60行。

圖5 家庭食物登記表中信息輸入形式示意
1.邏輯限制 CSPro有自己的編程語言,點viewlogic,進入邏輯代碼編輯頁面,可以對每一個變量進行進一步邏輯限制,并設置輸入糾錯提示。如在家庭成員每日用餐表中對調查人員的描述,當性別為男時,生理狀態就不能為乳母或孕婦,對生理狀態v28定義的程序如下:
Proc v28if$=2 or 3&a2=1 then errmsg(“男性生理狀態不能為乳母或孕婦”);reenter;endif;
其中,$指代當前定義變量生理狀態v28,v28=2 or 3指代生理狀態孕婦或乳母,a2=1指性別為男性,errmsg()函數能夠實現在錄入過程中數據輸入不符合要求時顯示括號內的提示內容。
2.變量間的自動運算 如在家庭食物量登記表中已經依次輸入第一、二、三日購進量,則三日總購進量會自動計算并填入。程序如下:
Proc v20apostproc v20a=v24a+v24b+v24c;
其中 v20a、v24a、v24b、v24c 分別為三日總購進量、第一、二、三日購進量。
3.跳轉的設置 當一張表需要輸入的內容已經輸完,但表格行數的設置常大于等于需要的行數,就需要進行跳轉設置,我們在中國總膳食研究調查數據庫中設置為當該表的前兩個變量均輸入為空時跳轉至下一張表格。程序如下:
Proc v2aif$=missing&a1b=missing then skip to va1;endif;
其中,v2a和a1b均為當前表的前兩個變量,va1為下張表的第一個變量。
4.通過關聯的質控文件進行限制〔2〕在總膳食調查數據庫構建中,對所有要輸入的食物編碼,我們以楊月欣編撰的2002、2004中國食物營養成份表中的編碼為依據進行輸入限制。同編輯總庫一樣再編輯一個食物編碼子庫,定義數據字典,形成錄入表格后,進入錄入界面,輸入所有編碼,也可以從已有的電子文件中提取食物編碼,以文本文件形式導入到食物編碼子庫中,再將總膳食研究與食物編碼子庫連接,就可以對總庫中的食物編碼變量v14進行logic限制〔2〕,如果輸入的食品編碼在子庫定義的食物編碼范圍內,我們認為是正確的,否則,輸入時會自動提示“食物編碼不符合”。程序如下:
Proc v14postproc foodcode=$;if loadcase(foodcode_dict,foodcode)=0 then errmsg(食物編碼不符合);reenter;endif;
當輸入到食物編碼變量時會自動裝載foodcode子庫中的值并與當前輸入值進行比對,如果不符合則自動跳出“食物編碼不符合”提示框。
從編寫數據字典對各級level,各記錄record,各數據項item進行數據庫名稱、各表格行數、變量名、數值類型、長度、小數點位數、取值范圍等進行定義,到自動生成表格,再到logic中對變量進行邏輯限制和自動運算,一個完整嚴格的調查數據庫就建立了。
CSPro尤其適用于設計復雜的多級表格數據庫。CSPro表格中每一列在構建數據字典時只需要設置一個變量,如食品編碼v14,并設置該列有60行,CSPro會自動為每一行格子從v14_01到v14_60依次自動分配變量,并可對其進行邏輯編輯。其次,CSPro在邏輯核查中可調用外部數據集文件進行比對。在復雜調查由多級調查問卷組成時,CSPro可用樹形結構顯示其隸屬關系,并通過變量編輯、各種邏輯限制和及時的輸入糾錯提示功能等確保一次錄入就有較高的準確度,相信以后在公共衛生調查研究中會逐步得到更廣泛的應用。
1.美國普查局國際項目中心,中國國家統計局計算中心.CSPro快速入門教程.http://www.stats.gov.cn/tdjt/xgzlxz/.
2.International Programs Center Population Division U.S.Census Bureau.CSPro User Guide Version 4.1.http://www.census.gov/population/international/software/cspro/.