今日完成codebook程式修正,加入了題號及備註資訊。目前大部分的題目都沒有備註資訊,僅以唯一的一題進行測試,可以正常寫入。
另外,今日測試選擇大量變數的情形,一次選擇三個題組中所有的單選題及單一填充題,系統發生記憶體不足的情形。先嘗試於script中釋放部分用不到的陣列,但效果有限。
嘗試利用ini_set動態調整記憶體設定無效。所以直接調整php.ini的全域設定,將原有記憶體設定調高一倍。目前此問題已解決。未來再視實際情形調整。
明日繼續測試其他題型的下載狀況。
華人家庭動態資料庫從1999年迄今,在台灣每年進行追蹤調查,記錄了台灣五千多個家庭過去十多年來的變化。但隨著資料的不斷累積,龐大的數據資料及複雜的樣本、問卷結構使得研究者的進入障礙越來越高。為了方便使用者操作,因此有了建立合併資料的構想。這裡記錄了我的工作歷程及相關資料。也歡迎有興趣的人跟我一起討論。
2013年4月9日 星期二
2013年4月8日 星期一
20130408進度及待處理問題
目前初步開發應該可以說到了一個階段,正進行一些測試,待完成後,在連同目前已知問題一併修正。
目前已知的部分包含:
1. codebook沒有填入「題號」及「備註」資訊。這兩個資訊將以「題」為單位,與其他欄位以「變數」為單位不同,需利用rowspan合併欄位,此部分還需調整。rowspan的系統支援度也需測試。
2. 串連資料可能帶入不存在的變數:按目前的處理邏輯,串連資料時,對於跨期變數,系統會根據選取年代,分別產生各年的欄位,但若某些變數並非每年都有,則可能產生不存在的變數。這些不存在的變數,雖然數值皆為missing,但卻容易造成使用者混淆,需修改程式排除。
3. 部分 format資訊不完整:測試過程中,發現部分變數的選項 label 不完整,初步認為是當初整理資料時的缺漏,並非系統缺失。仍待修正資料後再次測試。
4. 同時產生資料測試:尚未進行同時有兩位以上使用者產生資料的功能測試。此測試的重點在於了解伺服器記憶體是否能夠負荷,以及多人同時使用時,產生資料檔是否混淆。
5. 使用者下載記錄應設計分頁,避免頁面過長。
目前已知的部分包含:
1. codebook沒有填入「題號」及「備註」資訊。這兩個資訊將以「題」為單位,與其他欄位以「變數」為單位不同,需利用rowspan合併欄位,此部分還需調整。rowspan的系統支援度也需測試。
2. 串連資料可能帶入不存在的變數:按目前的處理邏輯,串連資料時,對於跨期變數,系統會根據選取年代,分別產生各年的欄位,但若某些變數並非每年都有,則可能產生不存在的變數。這些不存在的變數,雖然數值皆為missing,但卻容易造成使用者混淆,需修改程式排除。
3. 部分 format資訊不完整:測試過程中,發現部分變數的選項 label 不完整,初步認為是當初整理資料時的缺漏,並非系統缺失。仍待修正資料後再次測試。
4. 同時產生資料測試:尚未進行同時有兩位以上使用者產生資料的功能測試。此測試的重點在於了解伺服器記憶體是否能夠負荷,以及多人同時使用時,產生資料檔是否混淆。
5. 使用者下載記錄應設計分頁,避免頁面過長。
使用者資訊管理
關於未來的使用者,預計與SRDA共用會員帳號。所以不必另外開發帳戶控管系統。不過對於使用者的行為仍然需要記錄,因此仍然有部分使用者資訊需開發。
使用者功能的帳戶資訊提供使用者清單管理功能。共分為「已下載資料」及「未下載資料」兩部分。受訪者可於瀏覽變數階段隨時點選下載清單中的「儲存選擇清單」,為此份清單命名後,儲存(需先登入);若使用者未幫清單命名,系統會自動以當天日期命名。
使用者進入設定條件選項程序,於最後一步選擇串連方式後,系統也提供輸入清單描述的欄位。產生下載檔案後,系統將自動記錄下載清單。
未下載清單列表提供使用者重新載入編輯功能,使用者亦可將不需要的清單刪除。已下載清單列表同樣提供重新載入編輯功能,但無法刪除;若產生的檔案仍保留於系統中,可再次點選下載,不需重複產生。
產生下載資料檔後,檔案將於系統中保留七天。期間內,使用者可隨時點選通知email中的連結下載,或登入系統,由帳戶資訊中下載。七日後,檔案刪除,若仍須下載此檔,則需重新產生。
使用者功能的帳戶資訊提供使用者清單管理功能。共分為「已下載資料」及「未下載資料」兩部分。受訪者可於瀏覽變數階段隨時點選下載清單中的「儲存選擇清單」,為此份清單命名後,儲存(需先登入);若使用者未幫清單命名,系統會自動以當天日期命名。
使用者進入設定條件選項程序,於最後一步選擇串連方式後,系統也提供輸入清單描述的欄位。產生下載檔案後,系統將自動記錄下載清單。
未下載清單列表提供使用者重新載入編輯功能,使用者亦可將不需要的清單刪除。已下載清單列表同樣提供重新載入編輯功能,但無法刪除;若產生的檔案仍保留於系統中,可再次點選下載,不需重複產生。
產生下載資料檔後,檔案將於系統中保留七天。期間內,使用者可隨時點選通知email中的連結下載,或登入系統,由帳戶資訊中下載。七日後,檔案刪除,若仍須下載此檔,則需重新產生。
2013年4月6日 星期六
屈服了!程式定義檔編碼
合併後的資料是以csv搭配spss, sas, stata程式定義檔的方式提供受訪者下載。
資料庫設計之初是以utf-8作為資料庫的編碼格式。但實際測試時發現,在繁體中文ms windows環境下,系統預設編碼為big5,因此三個統計軟體的預設編碼同樣也為big5。若由系統直接輸出utf-8格式的程式定義檔,軟體開啟時都將是亂碼,且會產生錯誤,根本無法執行。其中SAS及spss都支援unicode模式,可以經過調整後正確開啟,但畢竟不是預設模式,需要費一點手腳;更慘的是stata,他居然完全沒辦法支援unicode,只能支援作業系統預設的編碼模式。
所以,最後我屈服了,決定提供big5編碼的程式定義檔。但考量系統運作的穩定性,整個系統及資料庫仍然維持utf-8編碼,僅於輸出檔案時利用iconv函數進行編碼轉換。iconv的轉碼並不十分完美,如果遇到沒有對應的文字,可能會出錯,不過由於問卷中並沒有太多的特殊字,所以先這樣用用看吧!如果未來出現太多問題,再個別進行調整。
目前,這部分已經完成,spss, sas, stata程式定義檔也都測試過沒有問題。
資料庫設計之初是以utf-8作為資料庫的編碼格式。但實際測試時發現,在繁體中文ms windows環境下,系統預設編碼為big5,因此三個統計軟體的預設編碼同樣也為big5。若由系統直接輸出utf-8格式的程式定義檔,軟體開啟時都將是亂碼,且會產生錯誤,根本無法執行。其中SAS及spss都支援unicode模式,可以經過調整後正確開啟,但畢竟不是預設模式,需要費一點手腳;更慘的是stata,他居然完全沒辦法支援unicode,只能支援作業系統預設的編碼模式。
所以,最後我屈服了,決定提供big5編碼的程式定義檔。但考量系統運作的穩定性,整個系統及資料庫仍然維持utf-8編碼,僅於輸出檔案時利用iconv函數進行編碼轉換。iconv的轉碼並不十分完美,如果遇到沒有對應的文字,可能會出錯,不過由於問卷中並沒有太多的特殊字,所以先這樣用用看吧!如果未來出現太多問題,再個別進行調整。
目前,這部分已經完成,spss, sas, stata程式定義檔也都測試過沒有問題。
2013年4月5日 星期五
網站首頁及使用者權限
瀏覽及搜尋介面整合
訂閱:
文章 (Atom)