楊璐+郁可沁+齊進+魏永越+趙楊+于浩+陳峰+張汝陽
摘要:《SAS軟件高級編程》是生物統(tǒng)計學本科生的一門必修專業(yè)技能課程。該課程難度系數較大,且不易掌握編程的精髓。筆者就課程學習總結個人心得,給出編程方法、編程策略、查詢工具和訓練方式四點體會和建議。
關鍵詞:生物統(tǒng)計學;本科生;SAS軟件高級編程;學習心得
中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2017)52-0185-02
南京醫(yī)科大學每年面向全國招收30名左右生物統(tǒng)計學專業(yè)本科生,四年制,授予理學學士學位。該專業(yè)的人才培養(yǎng)目標是“培養(yǎng)適應我國社會經濟發(fā)展要求的生物統(tǒng)計學專業(yè)技術人才,具有深厚的人文底蘊、嚴謹的科學精神、強烈的創(chuàng)新意識、較高的政治素養(yǎng)和高度的社會責任感,同時具有一定的基礎醫(yī)學、臨床醫(yī)學基本知識,掌握現(xiàn)代統(tǒng)計學基本理論、基本方法,具有獲取信息、數據管理、數據分析和結果表達的能力,熟練掌握數據管理軟件和統(tǒng)計學分析軟件,能夠從事衛(wèi)生統(tǒng)計、醫(yī)學統(tǒng)計、生物統(tǒng)計、數據管理等工作,為醫(yī)學、生物學科學研究、衛(wèi)生決策提供咨詢服務的復合型拔尖創(chuàng)新人才和應用人才”[1]。
根據專業(yè)課程設置,本科生在第3學年的第1學期需要學習《SAS軟件高級編程》課程。該課程是《SAS應用基礎》的進階課程,共72學時,旨在培養(yǎng)本科生的編程思維,傳授編程技巧,提高數據管理和分析的專業(yè)技能,達到“技術高、速度快、失誤少”的業(yè)務水平,滿足生物醫(yī)學領域專業(yè)人才的需求。
SAS軟件是一個模塊化、集成化的大型應用軟件系統(tǒng),在國際上已被譽為統(tǒng)計分析的標準軟件,廣泛應用于各個領域。《SAS軟件高級編程》是一門難度系數較高的課程。在學習過程中,有人才短思澀,百思不得其解;有人文思敏捷,編程行云流水。筆者根據自身學習經驗和操作體會,現(xiàn)將該課程的學習心得總結如下。
一、最好的編程方法:尋找規(guī)律
SAS宏程序最核心的功能是讓電腦自動完成大量“重復性”的工作,以解放人的雙手。宏程序中起作用的關鍵語句便是循環(huán)體。借助循環(huán)體中的循環(huán)、條件判斷、跳轉、中止語句可以實現(xiàn)所謂的“自動化”。因此,程序員要仔細揣摩期望實現(xiàn)的事情,尋找其中的規(guī)律。只要有規(guī)律,就可以通過程序實現(xiàn)。
例如:如何以最快的方式從1—1024之間找到目標值704?我們可以利用“二分法”思想檢索目標值。其思路如圖1所示:第1、2步先判斷上下限是否為目標值。結果為“否”,第3步計算上下限均值512。因512<704,則將范圍更新為512—1024,第4步計算新的上下限均值768。因768>704,則將范圍更新為512—768,第5步計算新的上下限均值640。因640<704,則將范圍更新為640—768,第6步計算新的上下限均值704。因704為目標值,檢索中止。
從二分法的思路可以看出一個規(guī)律:通過不斷比較當前上下限均值與目標值的大小,更新上限或者下限,以縮小檢索范圍。按照此規(guī)律,我們可以設計以下SAS宏程序,其思路是:(1)設定上限、下限宏變量分別是L和U,初始值分別是L=1,U=1024。先判定L、U是否是704。如是,程序中止;否則,進入下一步循環(huán)。(2)計算一個當前上下限的中間值M=(L+U)/2。若M<704,則將新的下限L設定為M;若M>704,則將新的上限U設定為M。(3)若M等于704,則中止循環(huán),否則,重復第(2)步驟。 二、最好的編程策略:分而治之、逐個擊破
實際工作中,程序員面臨的問題往往比較復雜。一般情況下不太可能用一個特別冗長的程序解決所有的問題。程序過長不僅會給閱讀和調試增加難度,后期維護和更新也不太方便。筆者推薦采用“分而治之、逐個擊破”的思路對復雜任務進行分解。換言之,撰寫多個擁有特定功能的小型宏程序,然后再將其“組裝”起來,形成一個功能復雜的大型宏程序。
例如:撰寫一個宏程序用于分類資料的描述與比較(圖2)。筆者所撰寫的宏實則調用了5個子宏。這5個子宏分別行使以下功能:(1)對分類資料進行頻數統(tǒng)計,給出R×C的列聯(lián)表。(2)若數據集中的行變量、列變量取值水平比用戶指定的取值少,則在列聯(lián)表中自動補齊。(3)指定行(列)百分比存放的位置,頻數右側一列,頻數下方一行或與頻數同一單元格。(4)按用戶指定的行變量、列變量取值水平展示列聯(lián)表。(5)按指定的統(tǒng)計學方法進行假設檢驗。
三、最好的查詢工具:幫助文件或者搜索引擎
SAS軟件涉及非常多的過程、語句、選項、函數等。程序員不太可能完全記住所有的內容。筆者認為這并不影響你成為一個優(yōu)秀的程序員。因為,我們在任何時候都可以進行查詢。SAS軟件以結構樹的形式給出了極為詳細的幫助文件。用戶可以檢索關鍵詞的形式,在幫助文件中查詢任何所需要的信息。幫助文件不僅有原理和語法介紹,甚至還給出了具體的例子,特別容易理解。
此外,當問題較為特殊時,程序員可以借助搜索引擎從網絡上獲取幫助。筆者一直堅信“自己所碰到的問題一定是別人同樣碰到過且已經解決的問題”。你會驚訝地發(fā)現(xiàn)多數情況下,已經有熱心的網友給出了問題的答案。若實在未能找到現(xiàn)成的答案,筆者建議用戶可以在論壇中在線求助,例如“經管之家”(http://bbs.pinggu.org/)。
四、最好的訓練方式:勤實踐、多思考
熟悉并精通一門統(tǒng)計軟件或者編程語言是每一個統(tǒng)計學工作者必備的技能。筆者建議在實施某一具體項目中,不斷提高編程技能,而不是僅僅閱讀書籍、紙上談兵[2]。此外,實踐中需多加思考,盡可能用宏程序去“偷懶”,提高工作效率,以減輕自己本人的工作量。俗話說“熟能生巧”。宏程序寫得足夠多以后,一定會對特定問題的處理形成編程的條件反射,達到“如魚得水”的境界。
因此,要以具體項目為導向,認真思考問題,尋找事件規(guī)律,分解編程任務,培養(yǎng)專業(yè)的程序員思維;并且,平時反復實踐操作,靈活運用查詢工具,形成高效的編程條件反射,提高SAS軟件高級編程水平。當然,這些僅僅是筆者學習的個人心得,并非具有通用性,還需要考慮個體差異,因人而異,量體裁衣,尋找最合適自己的途徑。
參考文獻:
[1]趙麗萍,趙楊,于浩,胡志斌,陳峰.生物統(tǒng)計學本科專業(yè)人才培養(yǎng)方案的設置與思考[J].中國衛(wèi)生統(tǒng)計,2015,32(2):364-365.
[2]魏永越,趙楊,柏建嶺,富春楓,于浩,陳峰.SAS ODS及RTF標記語言在臨床試驗規(guī)范化統(tǒng)計報表輸出中的應用[J].中國衛(wèi)生統(tǒng)計,2010,27(4):428-430.