最末端的資料輸出有了初步成果後,我將焦點回到中段題目的部分。
題目的頁面預計提供完整的題目資訊,包含中英文題目、訪問波次及題目出處、特性等詳細描述。不過很多資訊仍有待後續慢慢充實,初期大概只有中文題目跟訪問波次而已。
題目資料庫應該可以算是串起這整個系統的核心架構。它提供使用者搜尋、瞭解、選擇題目,並觸發後續的資料串連。也關係到產生統計程式、codebook的格式,因此至關重要。
而題目與變數之間並不一定是一對一的關係,很多時候其實是一對多的連結。例如「請問您是在哪一年出生的?民國_____年_____月」,這便是一個一對二的關係。同時,一個題目可能在不同的波次(問卷)中重複詢問,因此題目與波次間同樣也是一對多的關係。
但一般而言,使用者在選擇變數時,同一題的所有變數應該會一併選擇,因此同一題的各個變數其實仍然可以視為一個整體。將題目與變數之間簡化為一對一的關係。
依此邏輯,當使用者選擇一題時,系統會自動帶入此題的所有變數。使用者另需選擇訪問波次,做為合併資料時的篩選條件。
在此,沒有想通的問題是,受訪者選擇訪問波次的時機該放在何時?選擇每個題目時都個別選擇所需的波次?或者,如果一般而言,整個資料檔的的時序範圍是一致的,也許可以將選擇波次的時間點放在選擇完所有變數之後。
第二個矛盾點在此處與codebook之間的矛盾。此部分搜尋、簡介以「題」為單位建置,但是codebook又回到以「變數」為單位呈現。似乎難以共用相同的題目及選項描述。若建構兩套文字,恐增加後續維護的難度,也容易產生不一致的出錯機率,目前還在尋求解決之道。
華人家庭動態資料庫從1999年迄今,在台灣每年進行追蹤調查,記錄了台灣五千多個家庭過去十多年來的變化。但隨著資料的不斷累積,龐大的數據資料及複雜的樣本、問卷結構使得研究者的進入障礙越來越高。為了方便使用者操作,因此有了建立合併資料的構想。這裡記錄了我的工作歷程及相關資料。也歡迎有興趣的人跟我一起討論。
2012年8月17日 星期五
2012年8月16日 星期四
下載資料說明及資料輸出工作進度
先從下載檔案談起。合併資料最終給使用者下載的壓縮檔中,將比照SRDA的下載檔案,提供下載資料說明(readme檔)、計畫說明、過錄編碼簿(codebook)及資料檔。其中資料說明及計畫說明為固定文件;過錄編碼簿及資料檔則依使用者選擇的變數即時產生文件與資料。資料檔預計提供SAS、SPSS、STATA三種統計軟體格式,但為減低系統建置的成本及系統的負擔,三種格式都將以程式檔配合ASCII資料檔的方式呈現,而非直接提供三種版本的資料檔。
接續前一篇找尋資料合併的方式不可分的,當然就是把資料寫入檔案了。由於時間的壓力,所以沒有辦法花太多時間進行執行效能的優化,只能先求有再求好了。所以也就延續上篇透過SQL語法產生合併檔的方式處理。
目前透過SQL可產生堆疊式的合併資料,也就是利用樣本編號,將各題組的變數加以串連,但若在某一個題組選擇了多年的資料,便會形成一對多的串連方式。也就是同一樣本不同年度的資料在合併資料檔中將會記錄成不同筆。資料中另包含調查年變數以利區分。由於可透過SQL直接從資料庫中提取這樣結構的資料,將相同的結構寫入檔案也沒有太大問題。初步規劃資料以逗號分隔的csv檔儲存,第一列為變數名稱。
相較於堆疊式的合併資料,串連式的就比較複雜了。所謂串連式,是指每一個樣本就為一筆資料,不同年度的相同變數以不同的變數加以儲存。資料仍然透過相同的SQL語法從資料庫中提出,再利用陣列將資料重新組合而成。這幾天便為了這個陣列的轉換傷透腦筋,由於並非每位受訪者每期都能夠完訪,因此串連起來的資料需克服資料長度不同的問題。目前對於未完訪的的遺漏值暫時以空值處理,未來也許配合三個種統計軟體的程式檔,再調整成適當的狀態。
目前兩種方式的產生資料檔程式已初步完成。下一步是倒回去處理「選擇變數」(購物車)的部分了。不過,由於新資料釋出的進度有些落後,我又要回去幫忙了,因此進度可能又要暫停一下了。希望這次不要停太就才好。
接續前一篇找尋資料合併的方式不可分的,當然就是把資料寫入檔案了。由於時間的壓力,所以沒有辦法花太多時間進行執行效能的優化,只能先求有再求好了。所以也就延續上篇透過SQL語法產生合併檔的方式處理。
目前透過SQL可產生堆疊式的合併資料,也就是利用樣本編號,將各題組的變數加以串連,但若在某一個題組選擇了多年的資料,便會形成一對多的串連方式。也就是同一樣本不同年度的資料在合併資料檔中將會記錄成不同筆。資料中另包含調查年變數以利區分。由於可透過SQL直接從資料庫中提取這樣結構的資料,將相同的結構寫入檔案也沒有太大問題。初步規劃資料以逗號分隔的csv檔儲存,第一列為變數名稱。
相較於堆疊式的合併資料,串連式的就比較複雜了。所謂串連式,是指每一個樣本就為一筆資料,不同年度的相同變數以不同的變數加以儲存。資料仍然透過相同的SQL語法從資料庫中提出,再利用陣列將資料重新組合而成。這幾天便為了這個陣列的轉換傷透腦筋,由於並非每位受訪者每期都能夠完訪,因此串連起來的資料需克服資料長度不同的問題。目前對於未完訪的的遺漏值暫時以空值處理,未來也許配合三個種統計軟體的程式檔,再調整成適當的狀態。
目前兩種方式的產生資料檔程式已初步完成。下一步是倒回去處理「選擇變數」(購物車)的部分了。不過,由於新資料釋出的進度有些落後,我又要回去幫忙了,因此進度可能又要暫停一下了。希望這次不要停太就才好。
2012年8月10日 星期五
上工
因為進行今年度新的調查工作,合併資料從去年底延宕至今。目前調查工作已經結束,所以也就恢復合併資料的開發工作了。長官們希望10月上旬我能對於這個合併資料計畫做詳盡的報告,我的野心更大,希望到時候不只是還停留在規劃階段,而希望能有初步的成果可以直接在長官面前demo。給了自己這樣的目標,壓力也跟著來了,希望開發順利,一切按照進度進行。
這兩天已將之前完成的三個題組資料檔載入資料庫當中,進入實做階段了。第一步便是找出產生資料檔的最適方式。方案一是直接透過SQL語法產生合併檔,初步測試,至少在產生"堆疊式" 的合併資料方面是可行的,經過與統計軟體結果的交互驗證,正確性應該也沒有問題。但是執行效率似乎並不高。仍可從調整語法方面試著提高效率。至於橫向串連式的合併資料,還沒有想到該如何處理。
另一方案是將合併資料的工作交由程式處理。僅用簡單的語法從各題組table中撈出所需的資料,以陣列的形式交由程式組成合併資料。此部分還未進行測試。
訂閱:
文章 (Atom)