PSID Data Center的購物車也是利用樹狀結構呈現,如果選擇了多年的資料,樹狀圖的第一層是按照年代排列,第二層則顯示選擇了該年的變數清單。可以勾選變數刪除,亦可直接將整個購物車清除重來。或點選check out,產生資料表。
點選check out程序共有六個部分可進行設定:
Codebook type:可設定codebook的格式,共可選擇HTML, PDF, XML也可以選擇不要產生codebook。另外,還有一個相對的選項是「只產生codebook不輸出資料」不過我想應該不會有人勾選這個吧?!
Data output type:可選擇輸出資料的格式包含ASCII Data with SAS/ SPSS/ Stata Statements, Excel檔, , SAS V9 Transport Data File共六種格式。不過這是單選提,所以一次只能選擇輸出一種格式。
Subsetting Criteria:可以提供你輸入一些條件語法,篩選變數,不過僅限購物車裡有選擇的變數。另外,語法採用SAS格式。這不禁讓我十分好奇背後的資料架構到底是什麼database?不過老實講,這樣的個開放格式讓使用者輸入語法篩選,背後勢必需要相當複雜而言僅的檢核程式,另外也增加了流程上出錯的機率,所以我目前開發的系統並不打算提供樣本篩選功能。
Subsetting of CDs and Family Members:可以選擇要輸出所有家庭成員的資料,或是指輸出小孩的部分。這應該是配合PSID樣本結構的特殊選項。
Compression Option:可以選擇是否要將相關檔案壓縮成一個zip檔。如果不選擇的話,下一步驟會將所有檔案個別的連結列出,可以一一下載。
Cart Options:可選擇是否讓目前選擇的這個資料檔公開。以及是否將下載資料的連結email到信箱一份。
全部選擇完畢後按submit就可以產生資料檔嚕!資料檔產生頁面處了下載檔案的連結外,也會顯示資料檔的基本訊息(這次選了幾個變數,包含多少樣本等等)。
另外就是兩點基本的注意事項嚕! 第一點告訴你資料檔會在七天後刪除。這句話也顯示了資料檔會在server上保留七天。另外就是,他還是強烈的建議你要下載完整的問卷檔或codebook,比較能夠看到全貌。
整個操作過程中,感覺網站的反應速度並不快,各項功能雖然不能說非常方便,但已經十分完整了。是一個非常值得觀摩學習的對象。
華人家庭動態資料庫從1999年迄今,在台灣每年進行追蹤調查,記錄了台灣五千多個家庭過去十多年來的變化。但隨著資料的不斷累積,龐大的數據資料及複雜的樣本、問卷結構使得研究者的進入障礙越來越高。為了方便使用者操作,因此有了建立合併資料的構想。這裡記錄了我的工作歷程及相關資料。也歡迎有興趣的人跟我一起討論。
2012年9月27日 星期四
2012年9月24日 星期一
PSID Data Center-資料檢視
今天不講PSFD講一下PSID Data Center。
原來,資料購物車的概念人家早就有了!而且也已經完成了。經老師的提點,我也去試用了他們的data center。基本上,我的概念與想法和PSID是相同的,所提供的功能和結果也大致相同;不過由於資料本身的特性不盡相同,加上一開始的設計理念差異,所以在產生資料的流程上仍有些許的差異。本篇先比較分析資料檢視的部分,產生資料將利用另一篇文章描述。
首先PSID的Data Center需註冊成為會員。沒有註冊會員並登入,雖然也可以瀏覽、選擇變數,但到了「結帳」的步驟仍然必須註冊會員。實際測試,若等到結帳時才登入或註冊會員,有時候網頁連線會不大正常。所以建議一開始就先登入會員。
在Data Center的首頁提供了file, cross-year index及previous carts四個選項。file和cross-year index大致都是以樹狀結構展示題目,不同的地方在於file將歷年的題目全部放在樹狀結構中,而cross-year index則是將題目整合過,將訪問波次列於後面工勾選。我目前設計的結構比較接近cross-year index,但考量同一份資料檔不同的變數選選擇的時間範圍應該差不多,所以並沒有讓使用者於每個變數逐一勾選需要的年度,而是於產生資料檔的過程中,由系統分析受訪者所選的所有變數,取可下載年份的聯集讓使用者一次勾選。換句話說,我的設計是讓受訪者統一勾選資料檔的涵蓋年度,而非個別變數的涵蓋年度。
previous carts則是一個蠻有趣的設計,當你選擇完你的資料檔後,你可以選擇將資料檔公開,這樣別人就可以看到你的資料檔了,也算是一種共享吧!至於我設計的系統,目前暫時沒有這樣的規劃。當然日後還是看研究人員的需求嚕!如果希望留個記錄,再來研究該如何規劃吧!
展示題目的樹狀結構可能考量題目過於龐大的關係,是採用javascript的非同步通訊技術完成的。題目並不會在一開始全部載入,當某一層樹狀結構展開時,電腦才向server端要求載入這一層的題目資訊。但缺點就是展開時會有loading的時間。我目前由於測試的題目有限,所以並沒有這樣處理,而是將整個樹狀結構一次載入,未來再看隨著題組增加時的執行效率調整。
點選題目,會以彈出視窗的方式顯示該提的細節,包含簡單的次數分配、選項說明。我目前的規劃並沒有將次數分配包含於詳細說明當中,將來視研究人員的需要調整。
搜尋介面顧名思義,可以輸入關鍵字搜尋題目。另外可以勾選年度、資料類別等選項限制搜尋範圍。搜尋結果是以列表的方式呈現,可直接勾選加入購物車。
原來,資料購物車的概念人家早就有了!而且也已經完成了。經老師的提點,我也去試用了他們的data center。基本上,我的概念與想法和PSID是相同的,所提供的功能和結果也大致相同;不過由於資料本身的特性不盡相同,加上一開始的設計理念差異,所以在產生資料的流程上仍有些許的差異。本篇先比較分析資料檢視的部分,產生資料將利用另一篇文章描述。
首先PSID的Data Center需註冊成為會員。沒有註冊會員並登入,雖然也可以瀏覽、選擇變數,但到了「結帳」的步驟仍然必須註冊會員。實際測試,若等到結帳時才登入或註冊會員,有時候網頁連線會不大正常。所以建議一開始就先登入會員。
在Data Center的首頁提供了file, cross-year index及previous carts四個選項。file和cross-year index大致都是以樹狀結構展示題目,不同的地方在於file將歷年的題目全部放在樹狀結構中,而cross-year index則是將題目整合過,將訪問波次列於後面工勾選。我目前設計的結構比較接近cross-year index,但考量同一份資料檔不同的變數選選擇的時間範圍應該差不多,所以並沒有讓使用者於每個變數逐一勾選需要的年度,而是於產生資料檔的過程中,由系統分析受訪者所選的所有變數,取可下載年份的聯集讓使用者一次勾選。換句話說,我的設計是讓受訪者統一勾選資料檔的涵蓋年度,而非個別變數的涵蓋年度。
previous carts則是一個蠻有趣的設計,當你選擇完你的資料檔後,你可以選擇將資料檔公開,這樣別人就可以看到你的資料檔了,也算是一種共享吧!至於我設計的系統,目前暫時沒有這樣的規劃。當然日後還是看研究人員的需求嚕!如果希望留個記錄,再來研究該如何規劃吧!
展示題目的樹狀結構可能考量題目過於龐大的關係,是採用javascript的非同步通訊技術完成的。題目並不會在一開始全部載入,當某一層樹狀結構展開時,電腦才向server端要求載入這一層的題目資訊。但缺點就是展開時會有loading的時間。我目前由於測試的題目有限,所以並沒有這樣處理,而是將整個樹狀結構一次載入,未來再看隨著題組增加時的執行效率調整。
點選題目,會以彈出視窗的方式顯示該提的細節,包含簡單的次數分配、選項說明。我目前的規劃並沒有將次數分配包含於詳細說明當中,將來視研究人員的需要調整。
搜尋介面顧名思義,可以輸入關鍵字搜尋題目。另外可以勾選年度、資料類別等選項限制搜尋範圍。搜尋結果是以列表的方式呈現,可直接勾選加入購物車。
2012年9月21日 星期五
資料產生流程完成「對接」
其實這並不是今天的進度,只是前幾天都是抽空檔在寫程式,雖然完成了,也沒空上來寫日誌,所以就利用此篇文章統一交代一下目前的進度。
目前,資料選擇與下載的流程大致定案。流程如下:
目前,資料選擇與下載的流程大致定案。流程如下:
使用者透過搜尋或樹狀圖瀏覽題目,並將有興趣的變數加入購物車。
↓
檢視購物車
↓
產生合併資料
↓
選擇下載年度
↓
選擇合併方式
↓
產生檔案
其中,可在檢視購物車中看到所選擇的變數,也可以刪除不要的變數。當變數選擇妥當後,點選「產生合併資料」便會進入下一個步驟。
接下來,系統會分析是否有選擇多次詢問的變數,如果有,會列入可選擇的年度工勾選。
下一步是選擇合併方式。共分成串連和堆疊兩種。選擇後,系統就會產生資料檔了。
今天進度:完成教育程度題組的題目及選項載入系統,目前完工的合併資料已全部載入。
下一步將進行產生「統計軟體讀檔程式」的程式撰寫,希望可以在開會前置少完成一到兩種統計軟體讀檔程式。這部分目前已知的困難有二:統計軟體讀檔需要宣告變數長度及類別,目前資料庫中沒有儲存這部分的資訊,需要整理相關資料,並在適當的資料表中插入。其次,format和label有長度限制,恐無法直接由題目及選項資料表中載入,還要想想該如何解決。
2012年9月3日 星期一
題目資料庫的暫時處理方式
接續前篇。
考量開發時程限制,題目資料庫目前暫時先直接以codebook的形式帶入(以變數為主)。參考PSID的形式,設計以樹狀圖結構的方式呈現題組及題目(變數)。另外也設計搜尋介面。
目前此方式的缺點在於對單題多選項的題目或是量表題組而言,比較不容易看到題目的全貌。未來可考慮在現行的架構下,增加題目的文字描述,方便使用者瞭解。或是增加一個完整題目的資料庫,雖然此舉會增資資料維護的複雜度,但我認為在題目的呈現上會比較完整。
目前,樹狀結構、搜尋介面及詳細資料描述頁面都已初步完成。今日並完成選擇變數功能(購物車)的開發,待完成變數清單與確認(結帳)功能後,資料搜尋與資料輸出兩部分變算是完成初步的「對接」了。
另外,題目資料庫目前只暫時將基本資料及工作訊息兩部分的「題目」及「選項」匯入,還有很多描述細節有待後續慢慢補充。另外,教育題組的資訊也還有待整理匯入。
考量開發時程限制,題目資料庫目前暫時先直接以codebook的形式帶入(以變數為主)。參考PSID的形式,設計以樹狀圖結構的方式呈現題組及題目(變數)。另外也設計搜尋介面。
目前此方式的缺點在於對單題多選項的題目或是量表題組而言,比較不容易看到題目的全貌。未來可考慮在現行的架構下,增加題目的文字描述,方便使用者瞭解。或是增加一個完整題目的資料庫,雖然此舉會增資資料維護的複雜度,但我認為在題目的呈現上會比較完整。
目前,樹狀結構、搜尋介面及詳細資料描述頁面都已初步完成。今日並完成選擇變數功能(購物車)的開發,待完成變數清單與確認(結帳)功能後,資料搜尋與資料輸出兩部分變算是完成初步的「對接」了。
另外,題目資料庫目前只暫時將基本資料及工作訊息兩部分的「題目」及「選項」匯入,還有很多描述細節有待後續慢慢補充。另外,教育題組的資訊也還有待整理匯入。
2012年8月17日 星期五
題目資料庫建構問題筆記
最末端的資料輸出有了初步成果後,我將焦點回到中段題目的部分。
題目的頁面預計提供完整的題目資訊,包含中英文題目、訪問波次及題目出處、特性等詳細描述。不過很多資訊仍有待後續慢慢充實,初期大概只有中文題目跟訪問波次而已。
題目資料庫應該可以算是串起這整個系統的核心架構。它提供使用者搜尋、瞭解、選擇題目,並觸發後續的資料串連。也關係到產生統計程式、codebook的格式,因此至關重要。
而題目與變數之間並不一定是一對一的關係,很多時候其實是一對多的連結。例如「請問您是在哪一年出生的?民國_____年_____月」,這便是一個一對二的關係。同時,一個題目可能在不同的波次(問卷)中重複詢問,因此題目與波次間同樣也是一對多的關係。
但一般而言,使用者在選擇變數時,同一題的所有變數應該會一併選擇,因此同一題的各個變數其實仍然可以視為一個整體。將題目與變數之間簡化為一對一的關係。
依此邏輯,當使用者選擇一題時,系統會自動帶入此題的所有變數。使用者另需選擇訪問波次,做為合併資料時的篩選條件。
在此,沒有想通的問題是,受訪者選擇訪問波次的時機該放在何時?選擇每個題目時都個別選擇所需的波次?或者,如果一般而言,整個資料檔的的時序範圍是一致的,也許可以將選擇波次的時間點放在選擇完所有變數之後。
第二個矛盾點在此處與codebook之間的矛盾。此部分搜尋、簡介以「題」為單位建置,但是codebook又回到以「變數」為單位呈現。似乎難以共用相同的題目及選項描述。若建構兩套文字,恐增加後續維護的難度,也容易產生不一致的出錯機率,目前還在尋求解決之道。
題目的頁面預計提供完整的題目資訊,包含中英文題目、訪問波次及題目出處、特性等詳細描述。不過很多資訊仍有待後續慢慢充實,初期大概只有中文題目跟訪問波次而已。
題目資料庫應該可以算是串起這整個系統的核心架構。它提供使用者搜尋、瞭解、選擇題目,並觸發後續的資料串連。也關係到產生統計程式、codebook的格式,因此至關重要。
而題目與變數之間並不一定是一對一的關係,很多時候其實是一對多的連結。例如「請問您是在哪一年出生的?民國_____年_____月」,這便是一個一對二的關係。同時,一個題目可能在不同的波次(問卷)中重複詢問,因此題目與波次間同樣也是一對多的關係。
但一般而言,使用者在選擇變數時,同一題的所有變數應該會一併選擇,因此同一題的各個變數其實仍然可以視為一個整體。將題目與變數之間簡化為一對一的關係。
依此邏輯,當使用者選擇一題時,系統會自動帶入此題的所有變數。使用者另需選擇訪問波次,做為合併資料時的篩選條件。
在此,沒有想通的問題是,受訪者選擇訪問波次的時機該放在何時?選擇每個題目時都個別選擇所需的波次?或者,如果一般而言,整個資料檔的的時序範圍是一致的,也許可以將選擇波次的時間點放在選擇完所有變數之後。
第二個矛盾點在此處與codebook之間的矛盾。此部分搜尋、簡介以「題」為單位建置,但是codebook又回到以「變數」為單位呈現。似乎難以共用相同的題目及選項描述。若建構兩套文字,恐增加後續維護的難度,也容易產生不一致的出錯機率,目前還在尋求解決之道。
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)