2013年10月1日 星期二

第一階段初步完工

好一陣子沒有報告進度了。目前,系統已經進入初步完工測試階段。使用者帳號也已完成與SRDA資料庫的共用設定。目前,只要是SRDA一般會員,輸入帳號密碼後即可使用。

在下載的步驟方面,測試時發現,在下載資訊不完全的情形下,仍然可以進入產生合併資料程序,導致無法正確產生資料。因此,在產生資料之前新增了一個確認設定的步驟,除了讓使用者再次確認產生資料的設定外,也讓系統檢查是否所有需要的訊息都已具備了。

近日也修改了登入權限的設定,使用者登出後會自動導回登入畫面,讓系統的權限控管機制更為完備。

目前正在撰寫使用手冊,完成後,將釋出試用訊息,邀請更多人參與試用。

另外,也預計於11月下旬正式公開試用。

2013年6月27日 星期四

統計圖表解決方案

題目及變數說明,除了透過文字說明題目的內容,變革,訪問波次等資訊外,data的基本統計資訊對使用者來說也是相當重要的資訊。在系統設計之初,老師們變建議需要有次數分配等描述性統計值。但如何呈現一直是一個相當頭大的問題。
希望比照nesstar,利用bar chart的方式呈現,既清楚,頁面也活潑。但我對動態繪圖一點idea都沒有。
很幸運的,我發現谷哥大神提供了一個很好用的現成工具google charts ,只要讓 php按照它的格式建立語法,便可動態產生統計圖表。實驗了兩天,效果出奇的好。目前所有的單選題都可以產生bar chart了,連多期資料都可以利用分組的方式讓各期的分配呈現在一個表內。目前只剩下一些細部調整,例如圖表的高度需設計動態調整,避免部分選項或波次過多的題組bar過細無法閱讀。
目前規劃單選題一定會以此方式呈現資料分配,至於複選題、填充題則還在思考要如何呈現。也許只提供有效值跟missing的次數就好了。

2013年6月19日 星期三

下載清單進化,細節持續微調

前一陣子,一直不願意面對的問題就是使用者下載清單。理智上知道需要用jQuery來處理會比較漂亮,功能及效能上也會比較好。但無奈我對js實在不熟,一直搞不定。所以只好放著回頭去處理資料。
前兩天帶著一顆怕受傷害的心,不太情願的再回來接觸我一直搞不定的jqgrid,這次居然出奇的順利,我搞定了。目前已將使用者下載記錄改為jqgrid,按時間排序的功能也ok。
未來考慮進一步修改「購物車」將變數選擇清單也改程jqgrid。

另外,這幾天也將介面進行小調整,讓一些連結更清楚,也將一些表格加上顏色。 畫面還是慘白,有點單調,不過還沒想到要如何美化。
產生資料檔的程序如果能在同一個頁面呈現就更完美了,不過目前還沒想到完整的解決方案。

產生檔案後,會停留在等待下載檔案的畫面,其實比較理想的狀況,應該在檔案下載後,頁面轉到首頁或userinfo頁面,這部分還待解決。

資料部分,目前已發現問題包含婚姻題組,部分題目不會顯示「訪問波次/原始題號」可能在當初鍵入DB時有所遺漏,待補充。
另外,工作題組部分題目的選項有變動,但似乎未完全recode,待檢查。

說明的內容是需要全部重新檢視的,只要有動過手腳的部分,都應該要完整說明。

次數分配需思考該如何呈現,單次的題目比較沒有問題,但對於多次詢問的題目,要如何呈現便是一個問題,呈現歷年合併結果似乎沒有任何意義,單期個別呈現要如何兼顧版面也是一個問題。

前幾天進行了多人同時使用的測試,沒有仔細檢測內容,不過從表頭看起來是沒有問題的。

2013年6月6日 星期四

多對多串連測試

婚姻及配偶工作匯入之後,與受訪者工作題組便可進行多對多串連測試。結果不出我所料,因為原先的SQL語法未控制調查年,因此亂串一通。經過一個晚上的調整,目前已經修正。
最後,選擇資料的語法大致為

select 變數 from [table] left join [table] on id=id and 調查年=調查年 where (樣本群) and (選擇年度);
不管是串連,還是堆疊,大致上都採用相同的語法從資料庫中撈資料。堆疊較簡單,撈出來的資料直接寫入檔案即可。至於串連,就必需再利用陣列進行調整。

測試的過程中,發現原先的程式有缺陷,導致無法正確選擇樣本群,另外若沒有選擇具跨期資料的變數也會產生錯誤,目前也已修正。

今天略維修正堆疊的codebook及資料結構,將每個多其資料檔都會產生一次的「調查年」變數刪減為一筆只會產生一個。
串連部分的codebook,現在設計是與資料檔一致,每個變數都會產生一列說明,也就是說,跨期資料若每年都有,就會產生N次,但其實,內容除了「年」不一樣之外,其餘內容完全相同。這部分感覺有些累贅,考慮修改成一次,另以文字說明變數命名規則就好。

另外發現,若使用者不選擇受訪者編號,將使資料產生不出來。目前初步修改購物車設定,不讓使用者刪除受訪者編號,另外,題目說明頁面也配合修正。但比較嚴謹的作法,應該要再產生檔案前再做一次檢查,如果不小心被刪掉了,則強制加回。

2013年5月31日 星期五

配偶婚姻及工作題組匯入

經過這一陣子斷斷續續的努力,婚姻及配偶工作題組終於初步完工了。在這裡必須強調「初步」因為跨年檢誤的部分並沒有很仔細的做完。主要的原因在於配偶是會變動的,所以在按照正常跳答邏輯將missing資料補回後,很難利用更長期的資料再進行修正。個別翻查問卷曠日廢時,且能補回的資訊也十分有限,所以決定先暫停了。


資料的部分,發現RR2007年結婚未滿一年,但配偶工作沒有變化(或僅工作地改變)導致行職業、為誰工作,公司人數跳答missing。這部分查過問卷,當年訪問時已發現此問題,應有提醒訪員要追問這些題目,部分訪員有問,但key in時可能依照跳答邏輯走,所以資料沒有輸入,有十幾筆日後可補回。
另外配偶的出生年、哪裡人、最高教育程度、父親最高教育程度等資訊missing的比例相當高,不確定是我程式的問題,還是資料銜接上的問題導致missing。且跨年資料若沒有明確證據確認配偶為同一人,也很難補回。
其餘的部分還未詳細檢測,陸續找時間進行中。

再進行婚姻及配偶題組的資料處理過程中,也發現了先前受訪者工作題組處理的若干缺失,等系統穩定後,再回頭修正。

目前已將資料匯入NAS資料庫,進行測試修正。
題目的部分, 忘了之前的格式中,題目波次的題號應該與主問題table一致,導致部分題目無法顯示,需重新整理匯入中。
另外,測試堆疊形式輸出,發現不同年的調查資料會交叉串連,可能需於SQL語法中增加條件限制。
測試串連輸出部分,表頭可以正常顯示,題庫部分結構應該較無問題。婚姻及配偶部分,資料也都有抓到,初步目視應該是ok的。另外調查年出現9999數值,原因不明。資料筆數四千多筆,看起來也還算正常,應該沒有很嚴重的多對多串連情形。不過實際狀況仍有待進一步確認。

總體來說,結果算是還不錯的,至少多了一組題組沒有讓我既有的程式直接掛點,讓我放下了半顆心中的大石頭。繼續測試及修正嚕!

2013年4月9日 星期二

codebook修正完成、記憶體限制調高

今日完成codebook程式修正,加入了題號及備註資訊。目前大部分的題目都沒有備註資訊,僅以唯一的一題進行測試,可以正常寫入。
另外,今日測試選擇大量變數的情形,一次選擇三個題組中所有的單選題及單一填充題,系統發生記憶體不足的情形。先嘗試於script中釋放部分用不到的陣列,但效果有限。
嘗試利用ini_set動態調整記憶體設定無效。所以直接調整php.ini的全域設定,將原有記憶體設定調高一倍。目前此問題已解決。未來再視實際情形調整。
明日繼續測試其他題型的下載狀況。

2013年4月8日 星期一

20130408進度及待處理問題

目前初步開發應該可以說到了一個階段,正進行一些測試,待完成後,在連同目前已知問題一併修正。
目前已知的部分包含:
1. codebook沒有填入「題號」及「備註」資訊。這兩個資訊將以「題」為單位,與其他欄位以「變數」為單位不同,需利用rowspan合併欄位,此部分還需調整。rowspan的系統支援度也需測試。
2. 串連資料可能帶入不存在的變數:按目前的處理邏輯,串連資料時,對於跨期變數,系統會根據選取年代,分別產生各年的欄位,但若某些變數並非每年都有,則可能產生不存在的變數。這些不存在的變數,雖然數值皆為missing,但卻容易造成使用者混淆,需修改程式排除。
3. 部分 format資訊不完整:測試過程中,發現部分變數的選項 label 不完整,初步認為是當初整理資料時的缺漏,並非系統缺失。仍待修正資料後再次測試。
4. 同時產生資料測試:尚未進行同時有兩位以上使用者產生資料的功能測試。此測試的重點在於了解伺服器記憶體是否能夠負荷,以及多人同時使用時,產生資料檔是否混淆。
5. 使用者下載記錄應設計分頁,避免頁面過長。

使用者資訊管理

關於未來的使用者,預計與SRDA共用會員帳號。所以不必另外開發帳戶控管系統。不過對於使用者的行為仍然需要記錄,因此仍然有部分使用者資訊需開發。
使用者功能的帳戶資訊提供使用者清單管理功能。共分為「已下載資料」及「未下載資料」兩部分。受訪者可於瀏覽變數階段隨時點選下載清單中的「儲存選擇清單」,為此份清單命名後,儲存(需先登入);若使用者未幫清單命名,系統會自動以當天日期命名。

使用者進入設定條件選項程序,於最後一步選擇串連方式後,系統也提供輸入清單描述的欄位。產生下載檔案後,系統將自動記錄下載清單。

 未下載清單列表提供使用者重新載入編輯功能,使用者亦可將不需要的清單刪除。已下載清單列表同樣提供重新載入編輯功能,但無法刪除;若產生的檔案仍保留於系統中,可再次點選下載,不需重複產生。
產生下載資料檔後,檔案將於系統中保留七天。期間內,使用者可隨時點選通知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程式定義檔也都測試過沒有問題。

2013年4月5日 星期五

網站首頁及使用者權限

網站的首頁擬參考教育部異體字典的方式,設置一個說明頁面。內容呈現系統的簡介、最新消息、使用方式等資訊。使用者可於此頁面登入系統,或直接點選進入系統瀏覽內容。
  
 
目前該頁面僅為雛形,內容並不完備。且為靜態頁面設計。未來將視需要開發最新消息管控及內容編輯等候台介面。

使用者原則上分成兩級。未登入使用者可直接點選「進入系統」瀏覽/搜尋題目,同時亦可將題目加入下載清單中,但無法儲存下載清單,亦無法下載檔案。系統帳號採取與SRDA共用會員帳號的方式進行。SRDA一般會員及網路會員皆可登入系統管理下載清單及下載檔案。

瀏覽及搜尋介面整合

三個月沒更新了。其實這陣子一直是有進度的,只是工作太忙,無暇做成記錄,利用這幾天把相關進度報告一下。 先 前的設計中,瀏覽(樹狀結構)與搜尋是兩個不同的介面。瀏覽介面原考量網頁loading速度,設計以非同步處理的方式載入次一層清單。但後來實測發現, 同步載入的速度是可接受的,所以目前改為一次載入完整的樹狀結構。待未來題組增加到一定程度後,再評估是否改為非同步載入,以提升效能。
 
此外,也將搜尋介面與瀏覽介面整合,使用者可以在同一頁面輸入關鍵字後,以相同的樹狀結構呈現符合的條目。
 

2013年1月7日 星期一

搜尋介面初步完成

經過一番調整(其實已經接近重寫了),搜尋介面終於初步完成了。



輸入關鍵詞後,系統即可列出包含此關鍵詞的題目,並將關鍵詞以紅色標註。
搜尋範圍包含題目、子題及選項。
顯示畫面會列出題目、題目所屬類別以及選項或子題,並可直接於最後的選擇欄位勾選所需的題目。選擇的邏輯與瀏覽頁面相同,僅題組式的題目可以分別選擇所需的子題,其他的題型都是以題目為單位選取。
限於篇幅,搜尋頁面不會顯示題目或子題的變項名稱(我認為在這階段,show出變項名稱並不是重點。如果需要更詳細的資訊,規劃以彈出視窗的方式呈現簡介頁面。
另外,對於題組是題目,後方選擇方塊跟子題間的對應並不容易閱讀,未來考慮調整表格架構,或以修改圖示的方式改善。
概念詞的功能目前尚未加入,預計等待整個系統功能初步完成後再進行。

接下來就是使用者介面了......

2013年1月2日 星期三

2012年底進度報告

突然發現已經兩個多月沒更新了。年底的確比較忙,工作東一塊西一塊的。進度比較破碎一點。所以就在2013的第一個上班日補進度交代一下嚕!
接續前一篇,目前題目結構的修正已經完成,配合題目也將瀏覽題目的樹狀圖也修正了。

綜合之前老師們的意見,頁面改以frame的方式呈現,左側為題目樹狀圖,右側則顯示題目的細節、選擇清單等主畫面。這樣的安排可以兼顧檢視細節及方便選擇。


加入email下載連結給使用者功能:使用者執行產生資料後,除了可以等待資料處理完成後直接下載檔案外,若不願意等候亦可直接關閉視窗,檔案產生後,將由系統將下載連結email至使用者信箱中。配合此功能,使用者產生的檔案將暫存於系統內,未來將視使用量及server空間決定保留期間。

加入選擇樣本群功能:在產生資料的選項中,增加一個選擇樣本群的功能,使用者可依需求選擇所需的樣本群。

完成產生統計軟體變數及選項label 定義:先前產生的合併資料中,雖然包含三個統計軟體的欄位定義程式,但其中並不包含變數及選項的label,目前已經加入。初步測試語法都可以正常執行,但編碼上可能還有點問題。
由於系統資料庫編碼為utf-8因此輸出檔案亦為unicode編碼。SAS、SPSS對於unicode編碼都有對應的解決方案,可以透過調整設定後正常開啟、執行。唯獨stata目前還找不到正確開啟unicode的解決方案。若不得已,可以在產生程式定義檔時進行轉碼,將utf-8轉為big5,但轉碼函數對應可能不是很完整,轉碼後的文字可能有顯示錯誤的情形。目前還是以尋找讓stata正確開啟unicode檔案為優先。

完成產生過錄編碼簿:此部分其實與產生label類似,只是將資料直接寫入PDF檔表格中而已。雖說看似簡單,但其實在搞定中文編碼上吃足了苦頭,許多php產生PDF的函數對中文的支援都不佳,因此搞了半天,最後好不容易利用TCPDF搞定了。

目前正進行搜尋介面的修正。由於題目結構調整,後端資料庫進行了很大幅度的變動,因此搜尋介面也必須重新設計。此外,未來也考慮納入調研中心開發的概念詞系統,增加搜尋的涵蓋範圍。

在搜尋介面之後,另一個重頭戲要登場了,那就視使用者介面。此介面開發將納入權限管理、歷史記錄儲存等功能,完成後,整個系統就算是有了初步的雛形了。接下來就可進行操作介面的調整及初步美編,完成後就可以開放初步測試了。

到目前為止,已經發現數據資料在處理時有部分缺陷,導致題目資料庫及數據資料庫配合上有問題而無法順利產生資料,這部分也是有待修正的。而未來也預計再增加兩個題組的數據資料後,正式對外開放試用。