R视觉化介面与互动式教学课件_第1页
R视觉化介面与互动式教学课件_第2页
R视觉化介面与互动式教学课件_第3页
R视觉化介面与互动式教学课件_第4页
R视觉化介面与互动式教学课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、R財務分析與互動式介面教學實務經驗分享明新科技大學教師社群2017.05.10田慧君 于昌永 靜宜大學財務與計算數學系第1页,共29页。Financial data Analysis System 靜宜大學 財務與計算數學系 第2页,共29页。1.隨著巨量資料分析發展,使用R語言將成為重要的基本能力。2.REXER ANALYTICS調查顯示,R為資料分析師使用比例最高的工具。3.GOOGLE、輝瑞藥廠、美國銀行、洲際酒店集團、殼牌石油皆等使用R。4.ORACLE、MICROSOFT與IBM將R做為其產品中的主要資料分析工具。R軟體的特色免費的自由軟體、開放源碼且應用廣泛有效的資料處理及存取能

2、力 (可與C, C+和Fortran等程式連結)方便的矩陣操作與運算能力完整而連貫的資料分析能力(有大量套件程式可用)強大的視覺化工具(繪圖功能)跨平臺,可在Windows、UNIX和MacOS執行WHY R?第3页,共29页。R 與 財務金融完整的財金功能套件多樣方便的財務資料取得方式容易上手的財務資料分析方式不斷推陳出新的財金與各式各樣套件R for trading strategy develop and testing algorithm trading /tw_dsconf/dsc-2016-rR for finance time series data analysis第4页,共2

3、9页。R-財務金融相關套件Quantmod 、 Quantstrat 、 PortfolioAnalytics 、 PerformanceAnalytics./web/views/Finance.html第5页,共29页。RStudio下載安裝: download R之後 執行RStudio-XXX.exeR下載安裝: download R之後 執行R-XXX-win.exeR與 Rstudio 安裝及使用簡介第6页,共29页。1. R 與 RSstudio安裝完成後,可在應用程式檔案系統Rstudio圖形點選 ,即可啟動RStudio 2.安裝與執行套件範例:若要安裝shiny套件Packa

4、gesInstall shiny若要執行shiny,在右邊shiny對應的方框中直接打勾第7页,共29页。編輯程式區執行程式 及 執行指令記憶體內物件、變數File:檔案清單Plot:繪圖Packages:套件清單Help:套件與指令輔助說明Rstudio是個好用的IDE革新套件讓R在三方面有開創性改變網頁伺服器RStudio server互動式網頁Shiny互動式文件Rmarkdown資料整理工具dplyr tidyr繪圖介面ggplot2 ggvis整合式開發環境 RStudio第8页,共29页。小單元主題TimeR_fundamental I_1R introduction與數據型態15

5、 min + 10 minR_fundamental I_2基本運算與if、for、function15 min + 10 minR_fundamental II_1資料結構15 min + 10 minR_fundamental II_2資料處理初步與結果顯示15 min + 10 minR_quantmod財務套件使用15 min + 10 minR_shiny互動式網頁15 min + 10 minR與財務資料分析-教材範例範例: 2016.07 夏日大學教材第9页,共29页。主單元: R_fundamental I x a-male # char字串變數及資料型態: 將資料儲存於變數物

6、件內,方便重複使用及分析1.資料常用型態:numeric數值、integer整數、char字串、factor因數、Boolean邏輯2.變數物件命名:變數名稱只能以字母或.開頭變數名稱大小寫是不同的 3.指派(儲存)資料給變數:使用 b=factor(male) # factor因子 a1 male b1 male Levels: male # factor呈報資料時,無第10页,共29页。主單元: R_fundamental I 常用運算: 算數操作、邏輯操作、if(條件式)、for迴圈#算數操作 10 + 20 #加法 10 * a #乘法 x/20 #除法邏輯操作 與 關係比較= Equ

7、al toGreater than&Logical AND|Logical OR!Logical NOT 10=91 TRUE#if(條件式) 執行程式指令#只有條件式為真(TRUE)才會執行#例子:袋子裡原本有四元,如果不足十元# (小於十元)再加入五元,結果是9元x=4if(x x=c(-4,5,10,-1,6,2,33,44,55) #產生向量變數,常用c() z=c(mary,John,Ellen) x3 #使用 位置指標 取得元素,利用指定元素位置 xc(1,4,2) #取得第1、4、2個元素1 -4 -1 5儲存複雜資料常用結構:vector: 同類型資料matrix:同類型資料,

8、同長度data.frame:不同類型資料,同長度list : 不同類型資料,不同長度特殊結構:不同R套件,設計特定儲存資料結構如:zoo、xts(常用於財務交易數據)vector向量:將多個存在一維向量內 a=matrix(x,nrow=3,ncol=3) #產生矩陣變數 a ,1 ,2 ,3 1, -4 -1 33 2, 5 6 44 3, 10 2 55 matrix矩陣:將多個同類型向量資料,存在矩陣內第13页,共29页。以R提供的內建資料集為範例 data() #查看有那些內建資料集 data(esoph) #載入esoph資料集- esophagealcancer(食道癌) #載入後

9、,產生esoph的data.frame物件 str(esoph) #查看esoph資料集的結構 View(esoph) # V大寫,將esoph資料集內容顯示于編輯區data.frame資料框: 處理資料最常用的結構,將多組長度一致的向量(欄) (不同向量內的資料類型可不同)存在data.frame內 與Matrix最大不同在於允許不同column有相異型別 第14页,共29页。主單元: R_fundamental II #在help中,輸入esoph查看此資料集詳細說明# A data frame with records for 88 age/alcohol/tobacco combina

10、tions(法國)#共5個欄位,88筆資料agegp年齡(Age group): factor 6個level : 25-34 35-44 45-54 55-64 65-74 75+ yearsalcgp 酒精(Alcohol consumption): factor 4個level: 0-39 4079 80119 120+ gm/dayTobgp抽煙(Tobacco consumption): factor 4個level: 0-9 10-19 20-29 30+ gm/dayNcases癌症人數(Number of cases): numericncontrols未罹癌人數(Number

11、 of control):numeric#可發現此5個欄位中,有4種資料,前3個欄位雖然皆是factor,#但其level構造不同,屬於不同資料。後2個欄位皆為numeric。第15页,共29页。主單元: R_fundamental II x=c(-4,5,10,-1,6,2,33,44,55) #產生向量變數 xx3# boolean取值,取得所有大於3的元素 max(x) #選取x中最大元素 min(x) #選取x中最小元素 sum(x) # x中所有元素作和 mean(x) # x中所有元素之平均值 sd(x) # x元素之標準差處理及初步觀察資料時常用指令: boolean取值、max

12、、sum、mean、sd資料缺失值檢查與處理:缺失值NA:“Not Available”常出現在許多資料中:char、numeric、factor x=c(NA,1,2) sum(x) #有NA,在套用函數時,可能導致結果為NA 1 NA is.na(x) #檢驗變數是否有NA 1 TRUE FALSE FALSE y sum(y) #去除NA後,再套用函數 1 3 which(is.na(x) #檢查NA在那裡 1 1注意:1.雖然NA是空值,但也有其代表意義,例如:溫度記錄temp=c(36.5,36.2, 37, NA, 37)2.許多財務資料中都會有NA值,務必以is.na()、whi

13、ch(is.na()先檢查,並進行適當處理,如na.omit()第16页,共29页。主單元: R_fundamental II x= x=c(-4,5,10,-1,6,2,33,44,55) # 產生數值向量變數 summary(x) # 依資料型態 回傳x的大致資訊Min. 1st Qu. Median Mean 3rd Qu. Max. -4.00 2.00 6.00 16.67 33.00 55.00 fivenum(x)#用於數值資料 minimum, lower-hinge, median, upper-hinge, maximum 1 -4 2 6 33 55 處理資料後初步結果顯

14、示: summary、fivenum、table、hist、plothist():畫出數值分佈的長條圖,提供觀察依據plot():依資料型態畫圖提供觀察依據 hist(table(esoph$agegp) 第17页,共29页。data.frame數據框基本分析$: 取欄位(column)table():將factor數據依level進行分群,然後對每一群資料資料筆數進行統計, 結果組合成一個比較表格返回aggregate() :群集函數,將按指定栏位的factor資料進行分群, 然後對每一群資料的某特定欄位資料套用指定函數, 最後把結果組合成一個比較表格返回 data() #查看有那些內建資料

15、集 data(esoph) #載入esoph資料集- esophageal cancer(食道癌)載入後,產生data.frame物件 head(esoph) #查看esoph內前6筆資料,對資料內容有概念 which(is.na(esoph) #查看esoph內是否有NA值 integer(0) #查無NA值以R提供的內建資料集為分析範例第18页,共29页。它首先將資料依factor level進行分組,然後對每一組資料資料筆數進行統計,最後把結果組合成一個比較表格返回,可瞭解資料资料笔数分佈 table()函數 table(esoph$agegp) # esoph$agegp取出欄位值,$

16、是data.frame取欄位值符號 # table()可針對指定欄位,依factor level,彙整資料筆數table(esoph$agegp,esoph$alcgp)# table(x,y)可彙集x,y two-way table 結果分析1.數據資料筆數均勻分布在年龄的各level 2.數據資料筆數分佈在年齡及酒精組合的各level也頗均勻 data.frame数据框基本分析第19页,共29页。data.frame數據框基本分析 aggregate(cbind(ncases,ncontrols) alcgp,esoph,sum) cbind(ncases,ncontrols) alcgp

17、 表示使用 alcgp 的factor,分成多個資料群,對ncases、 ncontrols 數據都各自進行sum()操作 結果分析:1. 酒精消耗量,得到有/無食道癌人數2. 酒精消耗量愈大的群體, 得食道癌比例明顯愈高 可進一步以統計檢定Note:由此看出 前一頁中僅以人數觀察容易誤導, 應該看比例較正確人數:75人 比例:75/355 (21%) 人數:45人 比例:45/67 (67%) 第20页,共29页。 quantmod是應用在財務方面的R語言套件。 quantmod套件提供許多功能:搜集金融資料、繪畫歷史股價、計算報酬率 資料分析:價格趨勢、風險估測、投資組合及其他財務應用下載

18、及安裝 quantmod套件 install.packages(quantmod) # 下載quantmod套件 library(quantmod)# 安裝quantmod套件 透過網路,由yahoo finance 取得股票交易數據 tw2330 tw2330.DF View(tw2330)#檢視資料主單元:quantmod套件與財務資料分析第22页,共29页。主單元:quantmod套件與財務資料分析計算交易報酬率 相關指令如下:dailyReturn、weeklyReturn、monthlyReturn、quarterlyReturn、yearlyReturn re.2330=month

19、lyReturn(2330.TW) #計算2330.TW股票月報酬 head(re.2330) #顯示月報酬的前6筆資料 plot(re.2330)# plot()畫時間序列圖,觀察各時期的月報酬率變化 hist(re.2330)# hist()畫出報酬率分佈的長條圖,觀察報酬率分佈结果分析:1.20082009年,金融海嘯期間,月報酬率波動幅度較大2.長條圖顯示,正報酬機率較高 需進一步以統計檢定 第23页,共29页。主單元:quantmod套件與財務資料分析技術分析圖型財務常用圖形:candles、matches、bars和lines。技術分析基本函數: addMACD()、addRSI(

20、)、addSMA()、addTA() chartSeries(2330.TW,subset=2007:2008-01,theme=white,name=台積電) # subset=2007:2008-01股價走勢圖的時間起始點設定在2007年2008-01年 # theme=white股價走勢圖的背景設定為白色 # name=台積電股價走勢圖的標頭名稱設定為台積電畫出股價走勢圖後,可以再加上技術指標 addMACD() addRSI() addSMA(n = 5, col = red) addSMA(n = 20, col = blue)1.5日均線向下穿越20日均線-轉弱賣出訊號2.RSI

21、買進訊號第24页,共29页。主單元:quantmod套件與財務資料分析自行操作及練習Exercise 3-1: 1.透過網路,由yahoo finance取得某上市公司股票交易資料 2.計算此上市公司股票投資月報酬率並以plot及hist畫圖Exercise 3-2: 畫出此上市公司股價走勢圖,的時間起始點設定在2008年2015年,並加上20日均線與250日均線第25页,共29页。主單元: shiny互動式網頁1.shiny是一個可製作互動式網頁的R套件,在Rstudio上執行,由Rstudio擔任網頁伺服器2.製作互動式網頁程式由2個函數負責:ui與serverlibrary(shiny)

22、library(quantmod)ui-fluidPage( titlePanel(stock input), sidebarLayout( sidebarPanel( textInput(stock, label = h3(Stock Symbol), value = 2330.TW), dateRangeInput(time,start = 2008-01-01,end =2012-06-01, label = h3(Time), fluidRow( column(4,checkboxInput(D5, label = 5D, value = TRUE), column(4,checkbo

23、xInput(D20, label = 20D, value = TRUE), column(4,checkboxInput(D240, label = 240D, value = TRUE) ) ), mainPanel( plotOutput(chart) ) ) )輸入參數stocktimeD5D20D240輸出網頁畫面送到server抓數據、畫圖,再將圖chart送回來由ui的plotOutput()呈現在網頁上ui負責網頁畫面版面、輸入、輸出第26页,共29页。主單元: shiny互動式網頁shiny製作互動式網頁由2個函數負責:ui與serverui輸入參數stock、timeD5、D20、D240由input物件携带至server函数server-function( input, output) dataStock - reactive( getSymbols(input$stock,auto.assign = FALSE) )output$chart - renderPlot( timeup-as.character(input$time1) timedown-as.character(input$time2) time -paste0(time

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论