R具有高效的數據存儲和數據處理功能,隨著大數據技術的崛起,R語言已成為大數據處理必備的工具之一。
R語言并不是獨立存在的程序設計語言,我們習慣說的R其實是指R系統。本書從建立R系統的基本環境入手,講述R語言的基本函數及數據分析圖形的繪制,用豐富的范例來講解R語言的基礎知識,并切入三個熱門領域:金融分析、統計模型、數學計算。通過解析在這些領域的實用案例及數據處理分析的過程,讓你在*短的時間內掌握R語言的核心知識,并可以用這些知識解決自己實際工作中遇到的問題。
若你是初學者,本書可以作為你學習R語言應用基礎的快速入門教材。若你有一定基礎,本書則可以進一步拓展你的視野,提升你使用R系統進行專業數據分析的能力。
R是免費開放的軟件,具備大型的數據吞吐量與多種工具套件的優點,在金融應用、統計分析、矩陣處理、圖表繪制等方面都擁有十分便捷的函數與工具,操作方式類似于MATLAB語言,已經成為大數據處理的常用工具之一,并與常見的C、Java、Python等并列為常用的程序語言。本書內容包括數據的輸入與輸出、函數計算與圖表繪制等,從數學計算、統計模型與金融分析三個熱門應用領域介紹實用案例以及分析處理的方式,讓讀者在*短的時間內有效地使用R語言解決實際問題。若你是初學者,本書可以奠定你的基礎,快速學會R語言;若你已有一定基礎,本書也能拓展你的視野,提升專業數據分析能力。
前 言R語言并不是獨立存在的程序設計語言,當我們單獨稱R而不是R語言時,其實是指R系統。R是用于統計分析、繪圖的語言和操作環境,或者說R是一個集成的環境,其中包含一整套數據操作、計算和圖形繪制的軟件包。R定位于提供一個完善和統一的系統,所以R語言并不會脫離R環境而獨立存在,因而不像其他數據分析語言那樣成為一個附屬工具。作為GNU系統的一個自由、免費、源代碼開放的軟件環境,R具有高效的數據存儲和處理功能、一整套完整的數組和矩陣計算能力以及開放、完整的數據分析體系,同時為數據分析、統計及其結果的圖形展示提供了強大的繪圖功能。隨著大數據技術的興起,R也成為大數據處理必備的工具之一。R語言在矩陣處理、統計分析、金融應用、圖表繪制等方面都擁有十分便捷的函數與工具,操作方式十分類似MATLAB語言。將R應用于數學計算、統計模型,特別是股票和期貨等金融交易數據的分析、回測,甚至是行情走勢的研判,變得越來越熱門。例如,只需要寥寥幾條語句就可以繪制出專業的K線圖、均線系統、布林線、MACD等技術圖形。目前,每年都會舉辦R語言大會,屆時邀請學界與產業界的人士發表最新的開發工具或產業應用。微軟公司在2015年1月宣布收購了R的商業方案提供商Revolution Analytics,可見R語言也是一個被看好的工具軟件。為了讓初學者迅速步入R語言的殿堂,本書從R基本環境的建立開始介紹,而后切入R語言的基本函數和分析圖形的繪制,在豐富的范例中迅速掌握R的核心知識,以便讀者可以繼續自學,為提升R的應用能力打下堅實的基礎。本書還花了不少篇幅教授讀者如何從公開的信息網站和財經網站獲取實際的證券、期貨交易的歷史數據,并以此數據為基礎在范例中加以運用,達到在實戰中學習的效果。本書從一般性的使用、函數介紹與圖表繪制開始,讓讀者快速地對R具備基本的使用技能,接下來從三個熱門的領域:數學計算、統計模型與金融分析介紹實用的案例。如果你對這些領域之一感興趣,并想試試R在這些領域的功力,即大數據分析和處理、數學計算、統計分析、財務數據分析、證券交易數據分析與研判等,那么本書就非常適合你用來打通自己潛力的任督二脈。雖然本書在撰寫與編排上力求盡善盡美,但是疏漏之處在所難免,懇請讀者與專家不吝指正。
豐士昌
豐士昌曾擔任MIS工程師與主管,對于Linux系統管理與服務器架設擁有十余年經驗,著有系統、網絡、服務器相關書籍四十余本,通過LPIC Level 1與Level 2認證,目前擔任企業信息部門主管,并兼任計算機培訓講師,教授操作系統、服務器、云端系統等課程。
目 錄
第1章 建立R語言的環境 1
1.1 認識R語言 1
1.1.1
R語言的誕生 1
1.1.2
關于大數據 2
1.1.3
R語言在大數據中的應用 4
1.2 單機版的R語言 6
1.2.1
在Windows上安裝R語言軟件 6
1.2.2
在Linux上安裝R語言軟件 10
1.2.3
第一次使用R語言 12
1.3 服務器上的R語言 13
1.3.1
為什么要連接到服務器 14
1.3.2
遠程連接操作的方式 14
1.3.3
將服務器的圖形映射到客戶端 18
第2章 R語言的內建工具 25
2.1 變量定義與邏輯判斷 25
2.2 數值與向量 26
2.2.1
數值的基本運算 26
2.2.2
數值的科學函數 30
2.2.3
向量函數 33
2.3 數組與矩陣 38
2.3.1
數組與矩陣的產生與命名 38
2.3.2
數組的合并與矩陣的轉換 42
2.3.3
矩陣的計算 45
2.3.4
矩陣的數值分解 49
2.4 數據的處理 51
2.4.1
變量的處理工具 51
2.4.2
數據的讀入與輸出 57
2.4.3
數據的排序 64
2.4.4
數據的分割與合并 65
2.5 文字的處理 67
2.5.1
字符串的產生 67
2.5.2
字符串的顯示 68
2.5.3
字符串內容的搜索 70
2.5.4
字符串內容的提取 74
2.5.5
字符串的替換與組合 75
2.5.6
缺失項(NA)的處理 77
2.6 其他 79
2.6.1
外部軟件包與程序的加載 79
2.6.2
系統環境命令 86
2.6.3
日期、時間相關的函數 88
第3章 外部數據的讀取 90
3.1 文本文件的讀取 90
3.1.1
將文本文件內容存為變量 90
3.1.2
根據固定字符分隔字段 91
3.1.3
通過Linux指令轉換字段格式 92
3.1.4
范例實踐 97
3.2 數據庫的讀取 98
3.2.1
創建MySQL數據庫與數據表 99
3.2.2
使用數據庫語句存取數據 100
3.2.3
安裝和使用RMySQL 104
3.2.4
使用R讀取數據庫內容 105
3.2.5
使用R將內容寫入或更新數據庫 106
第4章 程序邏輯結構 108
4.1 函數 108
4.1.1
使用已經存在的函數 108
4.1.2
自行定義與使用函數 109
4.2 判斷 110
4.2.1
邏輯判斷表達式 110
4.2.2
條件判斷語句 111
4.3 循環 112
4.3.1
for循環 112
4.3.2
while循環 115
4.3.3
repeat循環 117
4.3.4
break跳出循環 118
4.3.5
next跳過此次循環 118
4.4 創建自己的R語言程序 119
4.4.1
Source與R Script 119
4.4.2
在外部執行R Script 120
第5章 圖形的繪制 125
5.1 系統環境 125
5.2 圖形函數 125
5.2.1
par函數 125
5.2.2
Line Chart(線圖) 128
5.2.3
Dot Plot(點圖) 130
5.2.4
Bar Plot(條形圖) 131
5.2.5
histogram(直方圖) 133
5.2.6
Pie Chart(餅圖) 134
5.2.7
Density Plot(密度圖) 136
5.2.8
Box Plot(箱線圖、盒須圖) 138
5.2.9
abline、curve(直線、曲線) 139
5.2.10
text(輔助文字) 142
5.2.11
Saving Graphs(保存圖形) 143
5.3 繪圖范例 143
第6章 數值分析與矩陣計算 146
6.1 數值分析函數 146
6.1.1
數值精度 146
6.1.2
四舍五入誤差 147
6.1.3
R的內建數值與數學函數 149
6.1.4
多項式函數 150
6.1.5
方程式的解 155
6.2 矩陣應用函數 158
6.2.1
行列式 159
6.2.2
逆矩陣 160
6.2.3
特征值與特征向量 160
6.2.4
矩陣分解 161
6.3 矩陣計算范例 164
6.3.1
矩陣的N次方 165
6.3.2
Fibonacci數列 166
6.3.3
特征向量的中心性 167
6.4 微分方程組范例 168
6.4.1
常微分方程式 169
6.4.2
邊界值問題 171
第7章 統計模型的建構與分析
174
7.1 概率函數的應用 174
7.1.1
一般概率的計算 174
7.1.2
概率分布 174
7.1.3
隨機變量 180
7.2 統計函數的應用 182
7.2.1
基本統計的計算 182
7.2.2
評估置信區間 185
7.2.3
執行統計檢驗 187
7.3 圖形與模型的應用 190
7.3.1
繪制統計圖形 190
7.3.2
線性回歸模型 194
第8章 金融工具的分析與使用
197
8.1 金融函數的應用 197
8.1.1
時間序列分析 197
8.1.2
回報率與杠桿原理 212
8.1.3
債券收益率與期限結構 214
8.1.4
投資組合理論 215
8.2 圖形與模型的應用 217
8.2.1
Black-Scholes 模型 217
8.2.2
套期保值模型 218
8.2.3
Delta避險 220
8.3 金融軟件包的應用:quantmod
221
8.3.1
安裝與加載 221
8.3.2
獲取數據并繪圖 223
8.3.3
數據的讀取 225
8.3.4
K線圖的繪制 227
8.3.5
TTR技術指標的應用 230
第9章 金融大數據的挖掘 234
9.1 獲取歷史數據和信息 234
9.1.1
了解數據的來源與獲取 234
9.1.2
了解時間單位不同的差距 235
9.1.3
網絡上的公開信息 236
9.2 公司基本資料與股票市場的分析 238
9.2.1
公開信息的分析與獲取 239
9.2.2
分析公司的基本資料 243
9.2.3
圖表的繪制與輸出 244
9.2.4
股價的分析與策略 245
9.3 期貨交易的分析與回測
246
9.3.1
了解期貨交易所的數據 246
9.3.2
在R中讀取交易數據 246
9.3.3
數據的分析與計算 246
9.3.4
圖表的繪制與輸出 248
第10章 平順銜接 MATLAB
251
10.1
MATLAB的安裝與加載 251
10.2
介紹MATLAB軟件包內的函數 251
10.3
Rcpp 267
10.3.1
認識Rcpp 267
10.3.2
安裝工具軟件包 267
10.3.3
Rcpp范例與性能測試 271