本書源自作者5年來的項目和工作實踐經驗,力求對SAS編程與數據分析做一個較為完整的梳理,除了從技術架構方面細致地梳理了SAS數據分析中的關鍵技術和實用知識點,例如數據集,宏編程。圖表生成等,更在講解中埋藏了一條關于行業(yè)實踐分析的案例輔線,包括嵌入其中的大量實踐案例和單獨成章的綜合案例,幫助讀者將關鍵技術和行業(yè)實踐相輔相成,讓讀者能身臨其境地了解SAS數據分析行業(yè)的精髓。本書并不想陷于具體技術問題的解決方案中,而是希望通過一些關鍵技術點、模型以及實例的關聯(lián)講解來幫助讀者梳理清楚SAS編程的開發(fā)思路,繼而學會解決一類問題。
建立起SAS語法的基本框架和知識體系的邏輯框架,更將數據分析行業(yè)工作流程、技巧和行業(yè)發(fā)展融入書中,凝練出自我提升途徑。
SAS經驗談
SAS語言的特點是功能復雜、上手有難度和特定領域應用。
自20世紀60年代誕生以來,歷代SAS版本的更新都會加入Z新統(tǒng)計分析理論的研究成果,將它們通過簡單的SAS語句來實現(xiàn)。時至今日,SAS已經有近千個函數和上百種proc以幫助數據分析師完成各種統(tǒng)計分析工作。每個函數和proc的語法與功能都有差別,這使得SAS構成一個復雜的功能體系,在數據分析中扮演著不可替代的角色。
與一般語言不同,SAS對于新手并不是很友好。SAS的語法比較特殊,將所有與數據處理和分析的功能放到了data步和proc的程序塊中,分析師不僅要掌握這些程序塊的語法,還需要根據所建立的模型使用不同的語句。很多人在初學SAS的時候發(fā)現(xiàn)很難把其他語言的使用經驗套用到SAS上,于是花了過多的精力卻沒有找到重點。
SAS的第三個特點就是其只在特定領域應用,這些領域包括醫(yī)藥、金融、銀行、交通等,往往都是資本密集型和技術密集型行業(yè)。以筆者所在的醫(yī)藥行業(yè)為例,2018年被稱為中國的制藥元年,從這一年起,中國的制藥領域已經擺脫了傳統(tǒng)的仿制藥研發(fā)和制藥原材料出口的模式,真正走上了創(chuàng)新藥研發(fā)的路徑。2020年初爆發(fā)的新冠疫情,雖然讓全世界的經濟都蒙上了一層陰影,但也讓很多人看到了醫(yī)藥行業(yè)發(fā)展的潛力。
雖然以上這些行業(yè)都是使用SAS作為分析工具,但不同行業(yè)的側重各有不同,例如醫(yī)藥行業(yè)會更多使用SAS的數據處理和統(tǒng)計分析功能,金融行業(yè)則需要建模功能,如果一開始沒有確定自己的行業(yè),很可能導致學習SAS很久后發(fā)現(xiàn)很多功能并不會用到。
寫作緣起
基于數據分析行業(yè)和SAS 的特點,筆者萌生出了創(chuàng)作一本SAS 進階提升讀物的想法,幸而找到了李翔宇老師合作,共同完成了本書。我一直從事臨床試驗數據分析工作,與SAS打了多年交道。李翔宇老師在新能源、通信、教育等行業(yè)都有過相當成功的項目經驗。我們二人的經驗也保證了本書既具有專業(yè)的深度,也具有視野的廣度。
雖然本書只專注于SAS和數據分析行業(yè),但它的創(chuàng)作難度并不低,因為本書不僅僅要幫助讀者建立起SAS語法的基本框架,更希望建立起知識體系的邏輯架構,這對于SAS這門發(fā)展了數十年、代碼系統(tǒng)盤根錯節(jié)的語言來說絕非易事。更重要的是,筆者與李翔宇老師在本書中提出了優(yōu)秀數據分析師的“士”型人才模型以及自我提升途徑,筆者堅信這是對所有讀者更重要的職業(yè)發(fā)展指導。
另外,筆者在創(chuàng)作時既考慮了行業(yè)應用,也著力弱化它。在技術方面,力求講解SAS中一部分通用的語句和功能,它們在很多工作場景中都會被用到。同時筆者也準備了大量工作中的實戰(zhàn)案例,讓讀者不僅“知道”怎么做,還要真正“學會”怎么做。
本書組織架構
在結構上分為三篇,按照遞進的關系講解SAS和數據分析。
第one篇,首先了解SAS的技術特點、歷史等,然后從Z簡單的data步和proc開始,逐步建立SAS學習的基礎框架。
第二篇是在第one篇的基礎上,展開學習SAS中相對復雜的功能,包括宏編程、統(tǒng)計分析與假設檢驗、創(chuàng)建統(tǒng)計圖表等,并在該篇Z后一章使用一個大型臨床試驗數據分析案例對所有編程技巧進行總結提升。
第三篇,我們將視野展開,從SAS編程技術上升到數據分析師這個職業(yè)和數據分析行業(yè),了解行業(yè)全貌,掌握必備技巧。筆者在本書Z后一章還提出數據分析師的“士”型人才模型,幫助所有數據分析從業(yè)者建立起自我提升的正確途徑。
本書讀者對象
所面向的讀者對象主要包含三類人:
l 初入數據分析行業(yè)的新人;
l 就業(yè)多年希望轉行到數據分析崗位的人才;
l 在校學生。
以上三類讀者的需求、現(xiàn)狀、自身條件均不相同。初入數據分析行業(yè)的從業(yè)者往往需要快速提升以適應職場節(jié)奏;轉行人才則需要對行業(yè)整體現(xiàn)狀有所了解,才能更好地指導自己的學習工作;在校學生除了技術,更需要掌握一些數據分析經驗。
針對這三類讀者,筆者在書中除了編程知識的講解,也將數據分析行業(yè)工作流程、技巧和行業(yè)發(fā)展融匯在本書之中,力求讓所有讀者在讀過之后不僅學會數據分析技術,還能成為一名合格的數據分析師。
源代碼下載包
為了方便讀者更好地學習本書,筆者將書中源代碼整理成下載包,讀者可通過以下鏈接下載獲取。
http://www.m.crphdm.com/2020/1119/14297.shtml
備用網盤鏈接:
https://pan.baidu.com/s/1nGp3RzZV0vbDr6KmI3UpgQ
提取碼:rmjp
交流與感謝
本書的內容大都來源于筆者的工作經驗,難免存在遺漏或不準確之處。若各位讀者在閱讀本書的過程中有任何的意見或者建議,歡迎發(fā)郵件到筆者的工作郵箱iwenhaoma@gmail.com,筆者會在第one時間給出回復。
感謝中國鐵道出版社有限公司全體工作人員為本書出版所做的努力,尤其感謝策劃編輯老師長達數個月的付出,為本書做出持續(xù)的指導。筆者與編輯老師交流的過程中,經常說到的一句話就是:好的圖書一定是經過長期打磨而成的作品,這個道理筆者認為同樣適用于數據分析師。一名好的數據分析師不一定一帆風順、一路坦途,更多的是一路披荊斬棘、奮勇前進。只有瀝血的手指,才能彈出不朽的樂章!
愿風雨和青山常伴各位的數據分析之路。
馬文豪,北京理工大學學士學位、美國德州大學信息系統(tǒng)管理碩士學位,美國Mallinckrodt生物制藥公司高級統(tǒng)計分析師,精通SAS編程、宏編程、臨床醫(yī)藥數據分析,擁有多年數據分析與培訓經驗,了解數據分析全產業(yè)鏈。
李翔宇,北京工業(yè)大學通信工程學士學位,美國德州大學信息系統(tǒng)管理碩士學位,在通信、新能源等行業(yè)擔任數據分析師和系統(tǒng)架構師,擅長Excel、SAS、SharePoint等工具技術,掌握數據分析和系統(tǒng)搭建經驗。
第one篇 小扣柴扉——成為SAS編程高手
第1章 SAS——統(tǒng)計分析的專用語言
1.1 SAS程序員——一個一點也不酷的職業(yè)... 3
1.1.1 穩(wěn)定性... 3
1.1.2 行業(yè)前景... 4
1.1.3 職業(yè)前景... 5
1.2 Python這么火,我為什么要學SAS. 7
1.2.1 R語言:統(tǒng)計分析專業(yè)戶... 7
1.2.2 Python:成功“出圈”的編程語言... 8
1.2.3 SAS:非開源的強大數據分析工具... 10
1.3 SAS的行業(yè)應用... 12
1.3.1 醫(yī)藥行業(yè)... 12
1.3.2 金融行業(yè)... 14
1.3.3 營銷行業(yè)... 15
第2章 跟SAS交個朋友
2.1 SAS的安裝和版本介紹... 17
2.1.1 先聊聊SAS的發(fā)展脈絡... 17
2.1.2 SAS三種不同版本的安裝方式... 18
2.1.3 到底該用哪一版... 29
2.2 每個窗口都有用:日志、結果、輸出... 30
2.2.1 桌面版... 31
2.2.2 SAS Studio版... 34
2.3 編寫你的第one個SAS程序... 36
2.4 養(yǎng)成編程好習慣... 41
2.4.1 縮進——六合刀法... 42
2.4.2 關注日志——三分劍術... 43
2.4.3 善用注釋——太極劍法... 48
2.4.4 幫助文檔——北冥神功... 50
第3章 data步——數據集處理小能手
3.1 邏輯判斷與數據集合并... 52
3.1.1 SAS的基本語法特點... 52
3.1.2 data步與proc. 53
3.1.3 邏輯判斷語句... 53
3.1.4 數據集的合并... 56
3.2 數值型變量與字符型變量... 59
3.2.1 兩種變量的概念... 60
3.2.2 數值型變量的相關函數... 62
3.2.3 字符型變量的相關函數... 64
3.3 數據格式... 69
3.3.1 創(chuàng)建、改變和刪除數據格式... 70
3.3.2 數值型變量的格式... 74
3.3.3 字符型變量的格式... 75
3.3.4 自定義數據格式... 76
3.3.5 字符型變量與數值型變量的轉換... 77
3.4 日期和時間的處理... 80
3.4.1 日期和時間變量的數據格式... 81
3.4.2 IOS8601格式... 84
3.4.3 日期和時間變量相關函數... 87
3.5 實戰(zhàn)案例:多種方法計算藥物副作用持續(xù)時間... 89
3.5.1 案例背景... 90
3.5.2 案例分析... 90
第4章 proc是個筐——數據分析往里裝
4.1 data步力所不及?proc迎難而上... 94
4.1.1 怎么學習proc. 95
4.1.2 從proc append說開去... 96
4.2 數據清理第one步——排序與查重... 99
4.2.1 排序... 99
4.2.2 查重... 104
4.3 數據的轉置與輸出... 107
4.3.1 數據轉置... 107
4.3.2 數據輸出... 111
4.4 讀取和存儲外部文件... 116
4.4.1 數據輸入... 116
4.4.2 data步與infile. 120
4.4.3 數據輸出... 123
4.5 讀取數據集和庫的信息... 125
4.5.1 proc contents——一眼看穿數據集... 126
4.5.2 proc datasets——萬能proc. 129
4.6 好風憑借力:在SAS中使用SQL. 136
4.6.1 SQL與proc——強強聯(lián)合的數據分析工具... 137
4.6.2 操作變量與值... 138
4.6.3 數據集的合并... 143
4.6.4 使用proc SQL的正確姿勢... 145
4.7 實戰(zhàn)案例:使用proc sql進行副作用與伴隨用藥數據多對多合并... 146
4.7.1 案例背景... 146
4.7.2 數據明晰... 147
4.7.3 需求實現(xiàn)... 148
4.7.4 總結思考... 151
第二篇 登堂入室——掌握數據分析技巧
第5章 宏——重復的事情交給程序
5.1 宏編程概念初探... 155
5.1.1 什么是宏?三個字概括:自動化... 155
5.1.2 宏的好處千千萬... 156
5.1.3 宏編程注意事項... 159
5.2 編寫第one個宏程序... 160
5.2.1 宏程序的結構... 160
5.2.2 變量與宏變量——同名而不同姓的一對... 161
5.2.3 宏參數——讓你的宏程序“活起來”. 163
5.2.4 宏相關的選項... 166
5.3 宏的三要素:宏變量、宏邏輯和宏函數... 169
5.3.1 宏變量——百變游戲房... 170
5.3.2 宏邏輯——穿針引線的書房... 175
5.3.3 宏函數——宏程序的起居室... 179
5.4 SAS語句無法實現(xiàn)?宏程序來幫你... 181
5.4.1 %sysfunc引用SAS函數... 181
5.4.2 %sysfunc處理文件... 183
5.4.3 %sysfunc獲取系統(tǒng)信息... 186
5.5 實戰(zhàn)案例:自動創(chuàng)建包含變量參數的數據集模板... 188
5.5.1 項目背景... 188
5.5.2 項目拆解... 190
5.5.3 編程實現(xiàn)... 191
5.5.4 調試反饋... 193
第6章 統(tǒng)計分析并不難
6.1 數據分析的本質:從數據到知識... 197
6.1.1 三級火箭與數據分析... 198
6.1.2 統(tǒng)計方法... 198
6.2 獲取各種統(tǒng)計量... 205
6.2.1 proc means——常用的數值型變量統(tǒng)計量獲取方式... 205
6.2.2 另一條道路... 211
6.2.3 proc freq——字符型變量我擅長... 212
6.3 實戰(zhàn)案例:異常值處理... 216
6.3.1 什么是異常值... 217
6.3.2 異常值的影響與處理方法... 217
6.3.3 異常值出現(xiàn)的原因... 218
6.3.4 使用統(tǒng)計相關proc去除異常值... 219
6.3.5 使用proc sql找出異常值... 221
6.4 帶你走進p value. 225
6.4.1 顯著性檢驗... 225
6.4.2 P值、拒絕域和置信區(qū)間... 226
6.4.3 常見的分布類型... 228
6.4.4 從proc ttest說開去... 230
6.4.5 proc freq是籮筐,各種p值里面裝... 232
6.5 實戰(zhàn)案例:藥物到底靈不靈... 234
6.5.1 隨機雙盲對照試驗概念... 235
6.5.2 數據概覽... 236
6.5.3 分析與實踐... 237
6.5.4 案例總結... 240
6.6 其他統(tǒng)計分析功能常用模型... 240
6.6.1 生存分析... 241
6.6.2 回歸分析... 244
6.6.3 相關性分析... 250
6.6.4 主成分分析... 252
第7章 生成統(tǒng)計報表
7.1 數據可視化——數據分析的Z終目的... 255
7.1.1 數據可視化概念... 255
7.1.2 可視化方式的選擇... 257
7.1.3 從SAS到各種輸出格式——ODS是一座橋... 260
7.2 使用proc report生成數據報表... 266
7.2.1 proc report的基礎知識... 267
7.2.2 define語句調整每一列的參數... 269
7.2.3 讓表格更易懂:表頭、腳注與分行... 275
7.2.4 proc report重要選項一覽... 279
7.2.5 如何學好proc report 281
7.3 實戰(zhàn)案例:生成層級化計數報表... 283
7.3.1 案例背景... 283
7.3.2 數據與需求分析... 284
7.3.3 創(chuàng)建數據集... 286
7.3.4 創(chuàng)建輸出文件... 290
7.3.5 總結與思考... 293
7.4 變身藝術家:使用SAS繪圖... 294
7.4.1 proc gchart——方便的繪圖工具... 295
7.4.2 proc gplot——研究趨勢和變化... 301
7.4.3 自定義你的圖形——goption、symbol和其他語句... 306
7.4.4 其他常用的繪圖proc. 308
7.5 實戰(zhàn)案例:繪制生存曲線... 312
7.5.1 什么是生存分析... 313
7.5.2 案例背景與資源分析... 314
7.5.3 實戰(zhàn)操作... 316
7.6 美化統(tǒng)計圖表... 321
7.6.1 輸出結果與模板... 322
7.6.2 模板的設計與封裝... 326
7.6.3 如何成為proc template高手... 329
第8章 玩轉數據——常用數據分析與處理技巧
8.1 設置基準線(Baseline)... 331
8.1.1 基準線的概念與定義方法... 332
8.1.2 SAS中定義基準線的方法... 333
8.1.3 常見問題和處理方法... 336
8.1.4 基準線與變化量統(tǒng)計圖表... 338
8.2 缺失值的處理方法... 342
8.2.1 缺失不一定是錯誤... 342
8.2.2 均值法——Z簡單的填補方法... 344
8.2.3 特殊場景——末次觀測值結轉法(LOCF)... 348
8.2.4 日期時間的缺失與部分缺失... 350
8.3 數據的時間窗口... 352
8.3.1 什么是時間窗口... 352
8.3.2 SAS中實現(xiàn)日期窗口化的方法... 354
8.3.3 使用宏程序實現(xiàn)窗口化... 358
8.4 自動設置圖表表頭和腳注... 361
8.4.1 回顧與思考——如何創(chuàng)建表頭和題注... 361
8.4.2 優(yōu)秀的數據分析師應該“懶”一點... 364
8.4.3 創(chuàng)建自動批量設置表頭和腳注的宏程序... 364
8.4.4 關于模塊化和文檔化編程的思考... 368
第9章 大型實戰(zhàn)——從數據到圖表的臨床試驗分析
9.1 藥物上市流程全揭秘... 370
9.1.1 臨床試驗與審批... 371
9.1.2 隨機雙盲對照試驗... 372
9.2 辦事要按規(guī)矩來——CDISC標準淺析... 373
9.2.1 CDISC組織與CDISC標準——沒有王冠的王者... 373
9.2.2 CDISC中包含什么... 375
9.2.3 SDTM——數據標準化... 376
9.2.4 ADaM——拿來就用的分析數據集... 379
9.2.5 如何學習SDTM與ADaM... 380
9.3 創(chuàng)建分析用數據集... 380
9.3.1 從分析結果入手的逆向思維... 380
9.3.2 從spec開始... 382
9.3.3 SDTM數據集的結構... 386
9.3.4 創(chuàng)建ADSL數據集... 388
9.4 創(chuàng)建分析圖表... 393
9.4.1 項目分析... 393
9.4.2 數值型變量的統(tǒng)計量... 394
9.4.3 字符型變量的統(tǒng)計量... 396
9.4.4 創(chuàng)建宏程序... 399
9.4.5 創(chuàng)建輸出圖表... 407
第三篇 爐火純青——深入數據分析行業(yè)
第10章 進入數據分析行業(yè)
10.1 從頭開始進入數據分析行業(yè)... 413
10.1.1 數據分析的背后... 413
10.1.2 從零開始,逐步提升... 417
10.1.3 百尺竿頭,更進一步... 418
10.1.4 重整旗鼓,梅開二度... 420
10.2 求職—面試—入職,每一步都先人一步... 421
10.2.1 任爾東西南北風——全面的求職準備... 421
10.2.2 把酒祝東風,且共從容——面試一本通... 423
10.2.3 春風得意,不如潤物無聲——入職全指南... 425
10.3 善用神兵利器,提升工作效率... 426
10.3.1 數據分析師的事,怎么能算抄... 427
10.3.2 宏程序已加載:工作量減50%.. 430
10.3.3 日常積累,終有大用... 431
10.3.4 溝通交流,必不可少... 432
第11章 是真名士自風流
11.1 什么是“士”型人才... 434
11.1.1 已破產的理論——“|”型人才和“一”型人才... 435
11.1.2 理論合并——“T”型人才的誕生... 436
11.1.3 更進一步——“十”型人才... 437
11.1.4 并非簡單加一橫——“士”型人才... 438
11.2 左右逢源——了解數據分析全流程... 439
11.2.1 為什么選擇臨床試驗數據分析行業(yè)... 440
11.2.2 每個流程都要懂... 441
11.2.3 建立良好的人際關系... 443
11.3 上食埃土,下飲黃泉——從程序到項目... 444
11.3.1 讓人又愛又恨的工作經驗... 445
11.3.2 到底什么是工作經驗... 446
11.3.3 從程序到項目的思維... 448
11.4 單點突破,方圓掌握——數據分析師的心法與身法... 450
11.4.1 扎穩(wěn)下盤——了解數據分析在公司中的地位... 451
11.4.2 保持靈活,伺機而動... 452
11.4.3 八方來襲,巋然不動... 453
11.4.4 九層之臺,起于累土... 453