本書選用統(tǒng)計學(xué)和數(shù)據(jù)科學(xué)中常見的 R 語言和Python語言“雙語”編
寫,主要內(nèi)容包括:引言、R 語言編程基礎(chǔ)、R 語言數(shù)據(jù)處理、R 語言可
視化、R 語言隨機(jī)抽樣和隨機(jī)數(shù)、R 語言基本統(tǒng)計推斷、R 語言回歸分析、
R 語言大數(shù)據(jù)分析、Python 語言基礎(chǔ)、Python 數(shù)據(jù)處理等內(nèi)容。此外,
本書在每章正文后設(shè)置主要函數(shù)列表、練習(xí)題和實驗題,以幫助學(xué)生復(fù)習(xí)
鞏固和自主練習(xí)。同時,還為教師配備了課程教學(xué)大綱(含課程思政內(nèi)容)、
課件、習(xí)題解答、模擬試題及配套答案等豐富的教學(xué)資源。
本書結(jié)構(gòu)嚴(yán)謹(jǐn),邏輯清晰,敘述清楚,說明到位,行文流暢,習(xí)題配
備合理,可讀性強(qiáng),可作為高等學(xué)校統(tǒng)計學(xué)、大數(shù)據(jù)科學(xué)與技術(shù)等專業(yè)的
教材或相關(guān)專業(yè)的教學(xué)參考書,也可供統(tǒng)計分析軟件初學(xué)者或從業(yè)者參考。
本書遵循教指委相關(guān)指導(dǎo)文件和高等院校學(xué)生學(xué)習(xí)規(guī)律編寫而成。踐行四新理念,融入思政元素,注重理論與實踐相結(jié)合。
前 言
我們生活在一個大數(shù)據(jù)時代,這也是統(tǒng)計學(xué)工作者能夠一展抱負(fù)的時代。然而,工欲
善其事,必先利其器,統(tǒng)計學(xué)從業(yè)者的 “器” 是什么呢?我們認(rèn)為,“器” 就是一門合適的
編程語言。對于統(tǒng)計專業(yè)的學(xué)生來說,掌握 R 語言是必需的。同時,我們也發(fā)現(xiàn),隨著
數(shù)據(jù)科學(xué)尤其是深度學(xué)習(xí)的興起,Python 語言在計算機(jī)科學(xué)、人工智能等領(lǐng)域應(yīng)用廣泛。
要和其他從事統(tǒng)計數(shù)據(jù)分析工作的同行交流、合作,統(tǒng)計專業(yè)的學(xué)生還必須了解 Python,
會用 Python。
R 和 Python 都很重要,那么到底學(xué)哪個呢?我們認(rèn)為 “小孩子才做選擇題,大人全
都要”。因此,在本書的編寫過程中,我們試圖 “畢其功于一役”,把 R 和 Python 兩種語
言都囊括其中。但是,需要指出的是,對于統(tǒng)計專業(yè)的本科生來說,兩門語言的重要程度
是不一樣的:對 R 語言,要熟練掌握并運用;對 Python 語言,通曉基本概念,會用即
可。因此,在本書中,我們重點介紹了 R 語言,包括 R 語言基本概念、R 語言數(shù)據(jù)處理、
R 語言可視化、R 語言統(tǒng)計推斷和 R 語言大數(shù)據(jù)分析等。對于 Python 語言,我們則介
紹了 Python 的基本概念、Python 數(shù)據(jù)處理等入門內(nèi)容。
本書由王洪編寫。王思政、周含璞和鄒易等人參加了部分章節(jié)的資料整理工作。
在本書編寫過程中,作者參閱了大量的統(tǒng)計分析軟件、教材和相關(guān)資料,在此我們特
向有關(guān)作者表示深深的謝意。本書的編寫還得到了中南大學(xué)本科生院、數(shù)學(xué)與統(tǒng)計學(xué)院許
多同仁的大力支持,謹(jǐn)向他們表示衷心感謝。
本書的出版是編者階段性教學(xué)實踐的總結(jié)。由于編者個人的局限性,本書可能會有一
些不足之處,懇請讀者批評指正。
王 洪
2023 年 8 月
作者簡介
王洪,男,統(tǒng)計學(xué)博士,副教授,博士生導(dǎo)師。美國加利福尼亞大學(xué)洛杉磯分校
(UCLA)生物統(tǒng)計專業(yè)博士后,國家認(rèn)證系統(tǒng)分析師,主要從事機(jī)器學(xué)習(xí)和生物統(tǒng)計
等方面的研究工作。以第一作者或通訊作者的身份發(fā)表 SCI 論文 30 余篇,獲軟件著作權(quán)
1 項。主持和參加多項國家社科基金、國家自科基金項目,主持多項全國統(tǒng)計科研項目重
點項目、人文社科基金等省部級項目,主持多項企業(yè)合作橫向課題。
目 錄
前言
第 1 章 引言 1
1.1 統(tǒng)計分析的未來 1
1.2 常見統(tǒng)計分析軟件比較 2
1.3 R 語言軟件的下載、安裝及基本操作3
1.3.1 下載和安裝 R 語言軟件 3
1.3.2 R 語言軟件基本操作與控制 4
1.3.3 常用的 R 程序包7
1.3.4 RStudio 10
1.3.5 Markdown12
1.4 Python 語言軟件的下載、安裝及運行 14
1.4.1 下載與安裝 Python 語言軟件14
1.4.2 Anaconda15
1.4.3 運行 Python 15
1.5 本章小結(jié) 16
1.6 練習(xí)題17
1.7 實驗題17
第 2 章 R 語言編程基礎(chǔ) 18
2.1 R 語言版的 “Hello World!” 18
2.2 R 語言腳本運行 18
2.3 R 語言常量和變量19
2.4 R 語言對象基本操作 20
2.4.1 R 語言對象屬性20
2.4.2 列出對象與刪除對象 22
2.5 R 語言數(shù)據(jù)類型 23
2.5.1 向量23
2.5.2 數(shù)組32
2.5.3 矩陣33
2.5.4 數(shù)據(jù)框 35
2.5.5 列表36
2.6 R 語言流程控制 38
VI
2.6.1 分支條件語句 39
2.6.2 循環(huán)語句 41
2.7 R 語言自定義函數(shù)45
2.8 本章小結(jié) 48
2.9 練習(xí)題49
2.10 實驗題 50
第 3 章 R 語言數(shù)據(jù)處理 51
3.1 數(shù)據(jù)的輸入與輸出51
3.1.1 終端輸出 51
3.1.2 讀取數(shù)據(jù) 53
3.1.3 保存數(shù)據(jù) 57
3.2 數(shù)據(jù)選擇 59
3.2.1 常見數(shù)據(jù)操作函數(shù)59
3.2.2 取子集 63
3.2.3 常見數(shù)據(jù)選擇函數(shù)68
3.3 數(shù)據(jù)整理 71
3.3.1 修改變量名稱 71
3.3.2 增加新變量72
3.3.3 徹底刪除新變量72
3.3.4 類型轉(zhuǎn)換函數(shù) 73
3.3.5 排序74
3.3.6 數(shù)據(jù)合并 76
3.3.7 缺失數(shù)據(jù)處理 80
3.4 本章小結(jié) 81
3.5 練習(xí)題82
3.6 實驗題82
第 4 章 R 語言可視化 84
4.1 R 語言基礎(chǔ)繪圖 84
4.1.1 高級繪圖函數(shù) 84
4.1.2 低級繪圖函數(shù) 96
4.1.3 交互式繪圖函數(shù)98
4.1.4 使用圖形參數(shù) 99
4.1.5 圖形保存101
4.2 ggplot2 繪圖包 102
4.2.1 ggplot 語法 103
4.2.2 ggplot 繪圖函數(shù)103
4.3 增強(qiáng)型繪圖 plotly 包 112
VII
4.3.1 將 ggplot2 對象轉(zhuǎn)換為 plotly 對象112
4.3.2 直接創(chuàng)建 plotly 對象112
4.4 交互式動態(tài)網(wǎng)頁 Shiny 包 115
4.4.1 Shiny 簡介115
4.4.2 Shiny 應(yīng)用程序的結(jié)構(gòu)115
4.4.3 編寫簡單的 Shiny 應(yīng)用117
4.4.4 運行 Shiny 應(yīng)用程序121
4.5 本章小結(jié) 122
4.6 練習(xí)題 123
4.7 實驗題 123
第 5 章 R 語言隨機(jī)抽樣和隨機(jī)數(shù) 124
5.1 隨機(jī)變量分布 124
5.2 隨機(jī)抽樣 125
5.3 生成已知分布的隨機(jī)數(shù)129
5.3.1 R 語言函數(shù)生成隨機(jī)數(shù)129
5.3.2 逆變換法生成隨機(jī)數(shù) 131
5.3.3 舍選法 133
5.4 隨機(jī)數(shù)的應(yīng)用 134
5.4.1 估計參數(shù)134
5.4.2 驗證大數(shù)定律 135
5.4.3 驗證中心極限定理 136
5.5 本章小結(jié) 138
5.6 練習(xí)題 138
5.7 實驗題 138
第 6 章 R 語言基本統(tǒng)計推斷 140
6.1 R 語言匯總統(tǒng)計量函數(shù)140
6.2 R 語言參數(shù)估計方法 144
6.2.1 點估計 144
6.2.2 區(qū)間估計146
6.3 假設(shè)檢驗 148
6.3.1 t 檢驗 149
6.3.2 二項分布的總體檢驗 156
6.3.3 泊松分布的總體檢驗 157
6.3.4 樣本比例的總體檢驗 158
6.3.5 方差分析160
6.4 非參數(shù)統(tǒng)計推斷162
6.4.1 K-S 檢驗162
VIII
6.4.2 Wilcoxon 符號秩檢驗163
6.4.3 Wilcoxon 秩和檢驗 165
6.4.4 Pearson 卡方檢驗 166
6.4.5 Fisher 精確檢驗170
6.5 本章小結(jié) 171
6.6 練習(xí)題 171
6.7 實驗題 172
第 7 章 R 語言回歸分析173
7.1 一元回歸模型 173
7.1.1 R 語言回歸函數(shù)173
7.1.2 一元回歸分析示例 175
7.2 多元回歸模型 178
7.2.1 多元回歸分析示例 178
7.2.2 處理類別變量 180
7.2.3 回歸系數(shù)的置信區(qū)間 182
7.2.4 標(biāo)準(zhǔn)化的回歸系數(shù) 182
7.3 回歸模型的擬合優(yōu)度 183
7.3.1 R2183
7.3.2 調(diào)整后的 R2 184
7.4 回歸模型診斷 184
7.4.1 殘差的分類184
7.4.2 線性假設(shè)診斷 186
7.4.3 殘差分析和異常點檢測186
7.4.4 多重共線性檢測189
7.5 模型選擇 196
7.5.1 最佳子集回歸 196
7.5.2 逐步回歸197
7.6 模型的預(yù)測203
7.6.1 回歸模型的預(yù)測203
7.6.2 標(biāo)準(zhǔn)化數(shù)據(jù)的預(yù)測 204
7.7 本章小結(jié) 205
7.8 練習(xí)題 206
7.9 實驗題 206
第 8 章 R 語言大數(shù)據(jù)分析 207
8.1 R 語言效率編程207
8.1.1 檢查代碼運行時間 207
8.1.2 優(yōu)化 R 循環(huán) 208
IX
8.1.3 向量化運算209
8.1.4 優(yōu)先使用 base 包命令210
8.1.5 使用 C++ 編程211
8.1.6 使用 apply 族函數(shù) 211
8.2 內(nèi)存管理 214
8.2.1 內(nèi)存使用214
8.2.2 內(nèi)存清理215
8.3 R 并行處理包 216
8.3.1 parallel 軟件包216
8.3.2 foreach 軟件包218
8.4 R 高效讀取大數(shù)據(jù)219
8.4.1 提升讀取效率的函數(shù) 219
8.4.2 在內(nèi)存外存儲數(shù)據(jù) 221
8.5 本章小結(jié) 222
8.6 練習(xí)題 222
8.7 實驗題 223
第 9 章 Python 語言基礎(chǔ) 224
9.1 在 R 中調(diào)用 Python 224
9.2 Python 入門 225
9.2.1 Python 版 “Hello World!”225
9.2.2 關(guān)鍵字和標(biāo)識符226
9.2.3 變量和常量226
9.2.4 Python 語句、縮進(jìn)和注釋 228
9.2.5 Python 數(shù)據(jù)類型229
9.2.6 數(shù)據(jù)類型轉(zhuǎn)換 232
9.2.7 運算符和操作對象 233
9.3 Python 數(shù)據(jù)結(jié)構(gòu)236
9.3.1 序列236
9.3.2 列表241
9.3.3 元組246
9.3.4 字符串 247
9.3.5 字典252
9.4 Python 流程控制256
9.4.1 條件語句256
9.4.2