2009年10月4日 星期日

研究資料的整理

資料是研究分析的基礎,除了理論推導的研究不需要資料之外,其他的研究工作都需要正確且齊全的資料,才有辦法進行。在美國進行醫管或健康行政的實證(計量)研究,大致上有三種資料來源。第一種是研究者自己設計問卷,透過問卷調查收集所需要的資料;這是屬於一手資料的收集(primary data collection),這種資料收集方式可以研究全國性的樣本,也可以針對某些特定的對象進行研究。下面兩種則是屬於運用現成的二手資料:首先是從相關的幾種全國的資料庫中挑出自己需要的資料,加以整合,這種方式絕大多數是以全國的樣本做為研究對象;但是有時候研究的資料在這些全國的資料庫中找不到,或是資料無法整合,這時可能得藉由第三種方式,即針對可以找到資料來源的範圍進行研究。

比如我想研究牙科診所的效率變化,目前美國應是沒有一致、長期收集的全美牙科診所資料,但是有些州政府可能有定期收集或要求州內所有牙科診所填報財務與服務量的資料,這時就可以縮小範圍,針對某一或某些州的牙科診所進行研究。或者,研究者也可以找某個全國的牙科連鎖公司或集團一起合作,運用該集團旗下所有牙診診所的資料來做分析。總之,研究必須根據資料的取得程度調整探討的範圍,來回答所要研究的問題。通常,樣本範圍越大越好,這樣可以推論的層面就越廣。如果樣本是來自某一州的資料,則所得到的結果通常只能代表這一州的情況,不能用來推測其他州的狀況。這是研究的外部效度(external validity)問題。同樣地,用某一集團所屬機構的資料分析所得到的結果,可能僅適用說明該集團的經營成效,無法擴大類推到其他的機構。

我的畢業論文所用的資料來源是上述第二種方式,也就是將幾個全國的資料庫當中的相關資料整合成我所需要的分析資料檔,分析對象是全國的醫院樣本。這種方式在美國醫務行政學界的文獻中很常見,其主要的好處是資料樣本代表性很廣,樣本數很大,可是問題經常是沒有一個資料庫剛好具備所有我需要的資料,這些資料大多散在不同的資料庫,首先要先確定哪些資料在什麼資料庫中可以找到,等全部都找到了,還必須加以彙整,當中花費不少苦工。以下分享這次整理資料的一些心得。

通過論文提案審查之後,我決定先進行資料的整理,如果確定資料齊全的話,對研究的進行會比較安心一點。雖然我對這些資料來源不是完全陌生,可是對於有一部分所需要的資料到底藏在哪裡,甚至到底有沒有,在沒有真正找出來以前,還是不敢太篤定。此外,根據我之前的經驗,這些資料庫中有程度不一的遺漏或空白資料(missing values),而且在資料合併的過程中,也有可能產生新的遺漏資料。如果這些遺漏資料所佔的比例不小的話,對資料品質影響可能很大,甚至引起分析的偏差,這時就必須用更複雜的計量分析模式去校正,頭也就會變得一個兩個大。

簡單來說,我需要的資料包括:(1)美國每一家急性綜合社區醫院的基本資料(如床數、所有權屬性、所在位置等等)、服務項目、服務量、總員工人數與護理人員數、基本財務資料、以及醫院所在地區的資料(如總人口數、老年人口數、居民平均收入與失業率等等);研究期間是從1997年到2003年這七年。

我所需要的醫院資料(基本資料、服務項目、服務量、總員工人數與護理人員數)可以在美國醫院協會(American Hospital Association, AHA)的年度醫院調查資料庫中找到,我們系上每年都會向AHA購買此份資料庫供老師與研究生做研究使用。這個資料庫可能是有關美國醫院的研究方面最被廣泛使用的,好處是覆蓋率與回覆率相當高,調查的項目眾多,而且每年調查的內容都幾乎完全一樣,適合作跨時間的研究;問題是這份資料庫的資料內容遺漏率不小,資料的正確性並未經過嚴格的稽核,有時可以發現很不合理的數值。

醫院的基本財務資料主要來自Centers for Medicare and Medicaid Services (CMS)的醫院成本報告資料庫,這套資料庫的正式名稱是Healthcare Cost Report Information System (HCRIS)。由於Medicare在1983年以前對醫院的給付是採論量計酬,根據醫院平均成本訂定各項服務的給付價格,而且還有給付資本設備的成本,因此CMS要求所有Medicare的特約醫院都必須依照統一的報表格式提供成本與財務資料,供CMS計算醫院服務的成本。所以學界都稱此為醫院成本報表(Hospital Cost Report)。不過後來CMS也收集各種Medicare特約的健康照護機構(如護理之家、居家照護、洗腎中心、精神療養機構等)的財務報表並公布,所以後來名稱才改成HCRIS。這套資料庫的好處是資料齊全、詳細、且品質較好,這是因為所有Medicare的特約醫院都一定要依規定提報資料(美國絕大多數的醫院都是Medicare的特約醫院),而且不可造假,否則被稽查出來後是要負法律責任的。然而,這套資料庫內容很複雜,其中光是醫院的財務資料就散在100多份的報表裡面,要完全弄清楚其中的內容並不容易,連教財務的教授也不見得都知道。此外,這套資料庫還有一個問題,是每年度每家醫院填報的財務資料期間並不完全一樣,雖然大部分醫院所提報的都是根據從某年10月初到隔年9月底之間的財務資料,也有不少數醫院的資料期間跟別人都不一樣,從小於100天到超過365天都有。這些問題都會增加資料整理與分析的難度,甚至影響到分析結果的正確性。

我還有用到各醫院每一年DRG的病例組合指標(case mix index, CMI)數值的資料,這份資料可以直接從CMS的網站上下載,資料內容還算齊全,雖然有小部分的遺漏率。

最後,我所需要的醫院所在地區的資料,是從Area Resource File(ARF)得來,這份資料是由美國衛生部下面的一個機構,從50多種資料來源(包括普查局的資料)彙整出來的全美各郡的健康照護資源、健康照護服務使用率、以及社經資料的資料庫,資料相當完整,品質也不錯。我們系上每年也都會購買最新ARF資料讓老師與研究生使用。不過,要使用這份資料,必須有一個前提,就是定義醫院所在的郡(county)為其主要服務市場。這當然不是最理想的方式,可是資料的基礎是如此,也就只能順應了。有些學者採用都會區(從郵遞區號去重組)或地理資訊系統的方式(如醫院方圓20英哩的範圍)去劃定醫院服務市場範圍,但是資料處理起來都要增加好幾倍的功夫。

確定了我所要的資料都在這些資料庫中之後,接下來我必須從每一套資料庫中在1997到2003年之間每一年的所需資料都分別整理出來,再將每一年的不同資料檔加以合併為一份該年的全部資料檔,然後將各年的資料檔合併成一份最終的分析資料檔。在檔案合併的過程中,我是使用AHA的資料檔做為基本檔,將其他資料庫的檔案合併進來。在合併AHA、HCRIS、CMI的資料時,所使用的合併對照變數是Medicare的特約機構編號(Medicare provider ID number),這三個檔案合併完成後,再透過全美通用的州郡編號(FIPS state & county code)將ARF檔案與之合併。

這份資料檔的筆數有三萬兩千多筆,每一年的醫院樣本數是四千多筆。資料檔一完成之後,我就先去檢查每一個分析變數是否有遺漏的資料,結果發現幾個問題。首先是AHA每一年資料檔中都有不少醫院沒有Medicare特約機構編號(Medicare ID),以致我在合併HCRIS與CMI檔案時,這些醫院的資料被排除在外。還好我有好幾年的資料,因此我用AHA的醫院編號(AHA資料庫中給每家醫院的專用編號)將每家醫院的Medicare ID按年排列出來,做成AHA ID與Medicare ID的完整對照表,不過還是有50多家醫院在這七年中完全沒有Medicare ID,這些可能不是Medicare特約醫院,由於數量不多,因此我就將這些醫院排除在樣本之外。最後,我用這張AHA ID-Medicare ID對照表,將每年AHA資料檔中遺漏的Medicare ID補上去,再做檔案合併,大幅降低資料遺漏率。

不過,CMI、ARF、HCRIS、AHA每年的資料檔本身也都有遺漏資料,或合併過程中因為對照碼不符而被排除所產生的遺漏資料。從分析的角度來看,資料遺漏分成兩大類,一種是自變數的遺漏資料,另一種是應變數的遺漏資料。在多變量的迴歸分析中,任何一個變數有遺漏資料,遺漏資料所屬的樣本便會被自動排除在分析之外,使得實際樣本數減少。更嚴重的問題是,如果因此被排除的樣本數不少,且具有某種特性(比如以營利醫院、小型醫院居多),而這些特性又與主要的研究變數有相關的話,則會導致到研究結果的偏差。學界稱此為「樣本選擇偏差」(sample selection bias),也就是說最後的分析樣本已經與原來的樣本有顯著差異,這時所得到的結果並不能夠代表原來所設定的研究樣本的情況。因此除非能夠確定這些排除的樣本是因為「隨機遺漏資料」(missing at random)所造成的,否則就要設法填補資料,降低遺漏率。

自變數遺漏資料的填補有很多種方法,有很複雜的,也有很簡單的。最簡單的是填入該變數的樣本平均值,複雜的可以在現有資料中,找出該自變數與其他相關自變數的關係,透過迴歸去預測遺漏值的自變數,再將預測值填入遺漏資料中。

我用的方式還算單純,因為我有七年的資料,而且總樣本中大部分的醫院都有一年以上的資料(也就是有一筆以上,比如A醫院從1997到2003每年都有共七筆,B醫院則有1998、2000、與2003年共三筆資料),大部分的自變數對每一間醫院來說,每年之間的數值差異應該不會太大。如果某個變數中,某家醫院某一年有遺漏值,我先用該醫院在該變數中其他年份的平均值去填補,這樣便又降低不小遺漏率,但還是有遺漏值。最後針對這些遺漏值,我就用樣本平均值填補,並用一個虛擬變數去註明該樣本在某個變數中有接受資料填補。這個虛擬變數在之後的迴歸分析中有兩種作用,一個是檢測該變數的資料填補是否會導致樣本選擇偏差,另一個作用是在迴歸分析中當作控制變數,以校正因資料填補所帶來的樣本選擇偏差。

解決了自變數的遺漏問題,再來是應變數的遺漏值,這部分要比自變數的遺漏值更棘手。因為前面提到的自變數遺漏值填補方法不一定適用在應變數上面。我的應變數是每一間醫院在某一年有沒有開辦居家照護服務,是一個二元變數,遺漏比例相當高,大概佔總樣本的14%。此時不管是醫院的平均值或樣本平均值都派不上用場,更不能用迴歸預測的方式去填補遺漏值。

計量經濟學稱此情況為「被遮掉的資料」(censored data)[1],因為所有樣本的資料都有,只是一部份樣本的應變數資料無法被呈現出來,這是受限應變數的(limited dependent variable)情況之一。就我所知,這時通常是使用Heckman selection model來處理,由於我的應變數是二元變數,所以要用Heckman Probit model。這部分的分析處理有時相當繁複,甚至現有的統計套裝軟體沒有現成的功能可以運用,必須自己寫程式去跑分析。

正在苦思如何處理這個問題的時候,我突然想到我在整理醫院的財務資料時,有順便收集醫院開辦的居家照護的基本財務資料(開辦居家照護的醫院在成本資料提報時,也要提供居家照護的財務資料),並彙整到最終的分析資料檔中,包括居家照護的收入與幾個主要支出項目的數字。由於HCRIS的資料正確性相當高,我就想到,如果某醫院在某一年所提供的財務報表中,居家照護的收入是大於零的話,那這家醫院在該年度應該是有開辦居家照護才對;相反地,若其居家照護的收入是零或沒有註明的話,則這家醫院在該年度應該沒有開辦居家照護。我問我的指導教授這樣的想法有沒有問題,他說這樣的假設應該是合理。因此我用HCRIS的資料為主,重新找應變數的數值,若HCRIS資料有遺漏的樣本,我再使用AHA的數值,兩者都遺漏的樣本醫院,我就假設這些醫院在該年度並未開辦居家照護[2]。透過這兩種資料來源的混合運用,我取得相當完整的應變數資料,不僅資料品質比原本的好,還省去許多分析的難度與複雜度。不過為慎重起見,我在分析時特別去做敏感度分析,就另一種應變數的資料組成(以AHA為主,HCRIS為輔)做分析,比較這兩種結果,發現結果差別不大。

這次的資料整理經驗,讓我學習到一個最重要的經驗,就是收集資料時,盡可能多收集相關的資料,以及跨年或前後幾年的資料,這些對遺漏資料的處理或填補都有幫助,可以提高資料的品質,並大大減少分析的複雜度,更重要的是,增加分析結果的正確程度。

此外,面對眾多資料整併的工作,這次我一反過去一個檔案一個檔案處理的方式,改用寫執行檔去進行所有的資料整理與檔案合併。這有幾個好處,第一個是整理出來的資料檔案內容有一致性;第二是省事,比如在整理每一年的AHA資料時,我只要寫好某一年的整理程式,其他年的程式只要複製(有時須做稍微修改)就可以了;第三是正確度高,寫好執行檔交給電腦去整理資料內容,只要邏輯正確,結果應該都不會錯;各別去處理檔案內容很容易出錯;最後,也是我覺得最重要的是,省下大量的時間與挫折感。經常我會發現自己少收集到某些資料,或某些資料要再做些處理,這時我不必從頭做起,只要去改一下執行檔的程式內容,讓電腦重新跑一次,就可以很快得到最新的資料檔。常用的統計軟體,如Stata、SPSS、SAS都有執行檔的功能。

還有,以前我遇過幾次情況是整理過的檔案資料,過一陣子回來看或是要再重新跑一些分析的時候,就想不起來當初資料是怎麼整理的,甚至連有些變數的名稱或內容是甚麼都沒有印象,由於當時不是用執行檔去整理資料,也就無從查起整理的流程或思路。如果當時是用執行檔去進行資料的整理,要追蹤就容易多了。此外,這次我還在整理資料的過程中,拿一本筆記簿,隨時將資料檔案來源、變數名稱、新增變數的定義、檔案合併的流程、過程中想到的問題與處理方式、每一階段的資料筆數與刪除筆數、選擇或刪除資料的條件與邏輯等都一一記錄下來,以加強印象、釐清思緒、並輔助自己有限的記憶力。我覺得幫助很大。

最後,分享一個非專業的分析結果的整理與呈現方式。我目前是使用Stata做資料整理與分析工作,經常要將分析結果做成表格,貼到MS Word。據說Stata可以設計自己想要的表格型式來呈現分析結果,不過我還不會。可是若要將一個數字一個數字打到表格中,既費時又容易出錯。後來我都是用土法煉鋼的方式,將Stata的outputs,複製到文字檔,再用Excel去讀入文字檔(有時分隔線要調整一下),便可以將分析結果放入Excel工作表中,這時要做分析結果的整理便相當方便,還可以做一些簡單的運算,強化資料結果,或做成圖表。等分析結果在Excel中都編排好,最後再複製貼到MS Word中就大功告成了。

資料整理在研究中扮演重要的份量,要成為一個獨立的研究人員,資料整理是必備的能力,不過這部分很少在正式的課程中學到,大多透過自己一次又一次的摸索與經驗累積。研究生在參與研究計畫時多半要負責資料的整理,以及在進行論文研究的過程中獲得實際的操作經驗。但這只是剛開始,資料整理可能是一輩子都學不完的功課。我的畢業論文所用的資料是以機構為單位的資料,這算是最單純的資料形態,我看過系上的老師或學長/學姊用病人為單位的資料,複雜程度要比機構的資料大上好幾倍,一個小細節沒考慮到,可能就全盤皆錯。不過,當每次克服這些資料的挑戰,達成研究目的時,就愈能享受其中的成就感。

[1] 另外一個因資料遺漏所引起的類似、但不相同問題是「被刪除掉的資料」(truncated data),這是當某些條件的樣本完全不存在的情況。
[2] 我也去比較AHA與HCRIS這種資料來源,在我的應變數上面的一致性有多大,發現有84%的樣本是一致的。

8 則留言:

Gong-Yi Liao 提到...

您好, 我是一個在Univ. of Connecticut 的研究生, 我對您的研究很有興趣, 希望可向您請教。

thchou 提到...

Gong-Yi,
有機會可以互相學習,是一大福氣。
若要進一步連絡,可以來信thchoutw@gmail.com

Gong-Yi Liao 提到...

在資料填補中(imputation),檢測imputation有沒有影響的一個方法是用完整資料去作:
先取出資料完整的部份, 並分成兩部份, 一部份是model學習的部份, 另一部份是model評估的部份, 故意把model評估的資料挖掉一些, 然後用model學習部份所建立起來的model去預測這些被挖掉的值, 看看差多少。

thchou 提到...

Gong-Yi,
謝謝您這個好建議。我在上計量經濟學時聽老師提到類似的方法,但自己尚未嘗試過。這次或許可以實際操作看看。
不過我的問題是:若原來遺漏資料的樣本就與沒有遺漏的樣本有很顯著的差異。我根據完整資料的樣本所做的測試可以檢驗出遺漏資料所產生的問題嗎?

Tony 提到...

STATA 的長處是data manipulation & analysis。其output和reporting的部份比較弱﹐相對地比較不能設計出精密複雜的表格。SPSS和SAS 這方面就強很多﹐可以設計複雜的表格﹐也能把這些表格直接轉成Excel files來存檔或輸出。

這output的弱點不是學界裡最大的考量﹐卻使得這軟體在業界的接納程度受到很大的限制。

在STATA裡若要設計表格﹐起碼方便你copy & paste 去到Excel裡﹐要用tabulate(可簡寫為tab)功能。這裡有一些分析frequency的簡單例子﹐你可以照着例子學﹐玩一下應該就會。

http://www.ats.ucla.edu/stat/Stata/examples/icda/icdast2.htm

至於如何把複雜統計法的output設計成比較像Excel 的table﹐途徑是要把Stata分析的結果變成另一個data file/list﹐再用Stata讀進來使用tabulate的相關功能。這在Stata裡做起來就頗羅嗦。沒時間學就認命。若本來就用SAS或是R﹐會比較沒有問題。

處理複雜一點的資料都是寫執行檔﹐這就為什麼會有專業的statistical programmers。
要是學校裡的人隨便就會﹐那專業的靠什麼吃飯﹖寫執行檔的好處除了快和標準化之外﹐最大的好處就如你所說﹐會讀程式的人一看就知道資料處理的用意和過程。所以程式本身就是研究過程的記錄(documentation)。這documentation 在學界不重要﹐在業界可是一件大事。因為人來人往換工作﹐如果每個人都在point-and-click﹐誰能銜接上一個離職的人﹖而且作project management時需要稽查正確性﹐看結果有時候不夠﹐要看資料處理的流程﹐所以當然是查程式/執行檔。

一般NPO也可能僱專人處理統計數據﹐但是大多數主管手從不親自去碰data﹐都不懂這些﹐資料庫(包括數據和執行檔的規劃儲存)一團糟。至於學校的老師﹐幾個待過業界﹖當然不會教學生這些”實際謀生的技能“。只會談談大東西裝會而已。

Gong-Yi Liao 提到...

Tony 的意見相當中肯,
關於遺失值的問題, 因為如果遺失值出現了, 不可能用來評估有沒有影響, 因為不見的值是如何處理?

要評估有無影響, 能從完整資料中用MAR的方式, 炮製出有遺失值的資料再分析看看有沒有影響

thchou 提到...

謝謝兩位提供的寶貴資訊與指導。

Lina 提到...

感謝您的分享~~~~~