本文是作者在學習許啟發(fā)子房、蔣翠俠撰寫并由清華大學出版社出版的《R軟件及其在金融定量分析中的應用》時寫下的review questions.內容涵蓋書中第1形用、2、4证杭、5尾序、6章,分別為R軟件基礎躯砰、基于R軟件的傳統(tǒng)計算每币、金融數據整理與預處理、金融資產收益計算金融波動模型部分琢歇±嫉。可以作為R軟件初學者的Guide,檢驗學習成果李茫。
數據操作
如何顯示工作空間中的所有對象揭保,如何清除工作空間中的某個對象或全部對象? ls()/objects()輸出的類別是什么魄宏?
對象命名規(guī)則有哪三個要點秸侣?
對象創(chuàng)建四種方法,哪一種很少用宠互,哪一種不推薦使用味榛?
有哪四種基本數據類型?這些類型最基本的屬性是哪兩個予跌,這兩個屬性如何獲得搏色?
字符型定義時使用單引號和雙引號的區(qū)別在于?
在基本數據類型基礎上券册,R語言創(chuàng)造出了哪些對象频轿?(7個)
什么是向量? 同一基本類型元素構成的序列烁焙,相當于一維數組
向量如何生成摩窃? c()享郊、m:n节榜、seq()谷醉、rep()
什么是數組? 帶有多個下標同一類型的元素集合
數組最重要的屬性是什么?它代表什么含義乞榨? 維數向量dim,向量長度代表?
數組如何創(chuàng)建? array() data,dim,dimnames
數組內的元素如何訪問? []
什么是矩陣? 二維數組
矩陣的創(chuàng)建: matrix() data,nrow,ncol,byrow,dimnames
矩陣的訪問秽之,與數組相同; 如何將訪問結果保留矩陣類型而不是變成向量類型吃既? drop
如何刪除矩陣中的某些行或列? 負值
diag()是泛型函數考榨,當輸入是整數、向量鹦倚、矩陣時河质,分別有什么作用?
如何將矩陣轉化為上三角或下三角矩陣? lower.tri/upper.tri
列表如何創(chuàng)建? list() name=object
列表的四種訪問方式? [[]] [] [''] $
上面四種訪問方式中,第一種的缺點是什么(每次只能訪問一個元素)震叙,第一種和第二種輸出結果的類型是否相同?第三種方法使用時要注意什么掀鹅,相比于第四種?(帶引號)
如何獲取一個列表內的元素名? names
如何增加列表元素媒楼?如何改變列表元素乐尊?如何刪除列表元素?
unlist()函數對列表的作用是什么划址?輸出的類型是什么? 帶有名字的字符串向量
數據框有哪些特點扔嵌?四個 1.特殊的列表對象2.以矩陣形式存放數據3.變量必須有相同的長度/行數4.非數值型向量會被強制轉化成因子
數據框的創(chuàng)建: data.frame() name = data
數據框的引用: 矩陣引用方法,列表引用方法
因子是用來干什么的夺颤? 存儲分類/離散數據痢缎,并存儲該數據的不同水平
因子如何創(chuàng)建? factor() levels,labels,exclude
如何統(tǒng)計各類水平的頻數? table()
如何創(chuàng)建表達式類型? expression()
如何對表達式求值世澜? eval()
如何對表達式求偏導? D() 注: 結果是'call'類型
如何獲得對象的類型? 如何判斷對象的類型独旷? 如何轉化對象的類型? is|as
獲得對象類型的三種函數的區(qū)別是什么? class(),mode(),typeof()
將數值型因子轉換為數值型向量時,要注意什么寥裂?
通過對字符型因子轉化為數值型向量嵌洼,我們的發(fā)現是什么? 因子會將變量按照levels順序以數值編碼的方式存儲
如何獲知更多的類型判別函數和轉換函數? methods()
數學運算中封恰, %% 和 %/% 的含義是咱台?
數學運算中如果出現了邏輯型變量會如何參與運算?
矩陣的三種乘法俭驮?如何實現回溺?運算要求?
如何比較兩個對象整體是否相等? identical(), all.equal()
這兩個函數的區(qū)別是什么混萝? 返回結果的差異/是否判斷近似相等
異或用哪個函數實現遗遵?異或是什么意思?
&逸嘀、|和 && || 的區(qū)別是 作用于第一個元素
向量運算中车要,當兩個向量長度不同是會發(fā)生什么? 短的將被循環(huán)使用
如何對向量添加元素崭倘? append() after
對向量求和翼岁、求均值类垫、中位數、標準差琅坡、方差悉患、最大最小值、極差榆俺、連乘積售躁、判斷所有、判斷部分茴晋、升序排列陪捷、降序排列、升序排列原下標诺擅、最大值最小值的下標 注: sort(a) ≡ a[order(a)]
矩陣轉置的兩種方法市袖?不同? t() aprem()
矩陣維數獲得三種函數? nrow()/ ncol()/ dim()
矩陣合并烁涌?按行合并凌盯,按列合并
矩陣求特征值和特征向量、求逆烹玉、奇異值分解驰怎、qr分解、行列式二打。哪些函數需要輸入的是方陣县忌?
apply函數作用: 對矩陣或數組的某一維進行某種運算的實現
apply函數用法: apply() MARGIN,FUN
tapply函數的作用:進行分組統(tǒng)計,即用因子继效、向量和調用的函數來計算
tapply函數用法: tapply() X,INDEX,FUN simplify的作用是症杏?默認為TRUE
常用命令
- 如何查看當前工作目錄?如何設置工作目錄瑞信?
- 設置工作目錄時厉颤,要注意什么? 使用“/”或“\” 而電腦內部使用的是“\”
- 如何查看內存大蟹布颉逼友?查看已使用內存大小秤涩?已分配內存大兄钠颉? memory.size(NA) memory.size(FALSE) memory.size(TRUE)
- 如何查看內存限制?如何增大內存筐眷?如何清除內存垃圾黎烈? memory.limit() memory.size(x) gc()
- 如何加載包?如何查看當前已經存在的包? library() search()
- 自己編寫的函數如何加載照棋? source(file = '')
- 如何保存當前工作空間的所有對象资溃?下次啟動后如何加載? save(,file = ) load(file = )
- 查看數據的前幾行烈炭、后幾行溶锭、任意幾行? head\tail\some
- 顯示對象全部內容的三種方式梳庆?
- 如何設置顯示位數?兩種方式的不同點在哪些方面卑惜? 是否改變數據/是否全局改變/digits表示的意義
- 顯示數據框和列表時膏执,如何將變量名鏈接到內存中,之后又如何取消這種掛接露久?如何取消加載包的掛接更米? attach() detach()
圖形制作
高級繪圖函數和低級繪圖函數的區(qū)別:高級繪圖函數能夠創(chuàng)建一個新的圖形,可以通過其參數選項來設置圖形的坐標軸毫痕,標題征峦,標簽,字體等消请,而低級繪圖函數自身無法生成圖形界面栏笆,只能在已有的圖形上增加新的圖形,如點臊泰、線蛉加、標簽等
plot()函數是泛型函數,當輸入的分別為向量缸逃、時序针饥、矩陣、兩個向量需频、因子丁眼、因子與它對應的向量時,輸出分別是什么昭殉?
如何畫出因子的頻率圖苞七?
如何從一個向量中無放回或有放回的抽取n個數組成新的向量? sample() replace = FALSE
pairs()和coplot()函數的主要區(qū)別挪丢? pairs函數只顯示雙向關系莽鸭,coplot函數能夠說明多變量關系 coplot(y~x|z+t) z,t需要是因子或者向量來分類
如何畫直方圖? hist() freq = F, xaxt = 'n'表示x軸設置但不顯示
如何畫出概率密度圖? 對density()進行plot
如何畫樣本的QQ圖吃靠,并畫出相應正態(tài)分布的QQ線硫眨? qqnorm()、qqline()
低級繪圖函數:如何給圖上加點,如何在圖上加線礁阁,如何在圖上加標題(主標題副標題),如何在圖上加文本巧号,如何在圖外加文本,如何添加圖例姥闭? points() lines() abline() title() text() mtext() legend()
text(x,y,labels='') mtext('',side =)
legend() 參數: 位置參數'' legend = c() 字符串向量 lty 線形向量 lwd 線寬度向量
如何添加多邊形丹鸿?如何繪制矩形?如何設置坐標軸棚品? polygon() col,border 填充顏色與邊框顏色 rect() axis() side,at,label,las
繪圖參數的更改方式有哪兩種靠欢?兩者區(qū)別在于? 一種是直接在繪圖函數中設置參數選項铜跑,一種通過par()函數設置门怪,前者影響當前繪圖函數,后者影響當前所有繪圖函數的輸出
高級繪圖參數有哪些锅纺?各代表什么意思掷空? add, axes, type, xlim,ylim, xlab, ylab, main, sub
type中的值 'p','l','b','o','h','s','n' (點圖,線囤锉,線不過點坦弟,線過點,垂直線官地,階梯形曲線,不畫內容)
par繪圖參數有哪些酿傍? lty, mar, mfrow, mfcol, pch, las, cex 各代表什么含義,怎么用? linetype,margin,按行繪制驱入,按列繪制拧粪,points character, labelspecification
線型 1實 2虛 3點
實例:
有一個包可以相較于傳統(tǒng)方法可以更快地讀取excel文件,是哪個包沧侥?怎么使用可霎? 通過RODBC包,函數:odbcConnectExcel2007(),sqlFetch() odbcConnectExcel是文件流宴杀,sqlFetch從文件流中讀取數據癣朗,使用完文件流后用close()關閉
如何在得到某一個值對應的下標? which()
如何得到ts類型的數據? ts() data, start,end,frequency frequency=1,年度數據旺罢;4,季度數據;12旷余,月度數據;
如何畫自相關函數圖?偏自相關函數圖扁达?如何改進使得圖的窄帶變寬正卧? acf(),pacf(),改變ylim
累積分布函數是什么?怎么畫一個樣本的累計分布圖跪解? ecdf(),plot(ecdf())
knots函數????
如何去掉向量中重復的元素炉旷? unique()函數
如何得到正態(tài)分布的累積概率? pnorm(x,mean,sd)
如何對函數進行繪圖? curve(function) from,to,lty,add
如何利用axis函數將坐標軸刻度放縮? axis(side = 1, at = axTicks(1), labels = as.integer(axTicks(1)/100) axTicks(m) m為side窘行,返回的是數值向量
編程計算
- 函數定義的兩種方式?
- 函數定義的一般格式 函數名 <- function(參數列表){表達式}
- 函數中饥追,如何寫入判斷,并在判斷為FALSE的情況下停止運行 stop
- 函數通過哪三種方法向外界輸出運算結果罐盔? 打印輸出但绕,圖形輸出,返回結果
實踐
1.
- 從某向量x中有放回取出num個數 sample(x,num,replace = TRUE) prob = 表示從向量中個元素被抽取到的概率向量
- 篩選出某向量中的不同元素 unique(x)
- 得到兩個集合不同的元素,x集合有而y集合沒有的元素 setdiff(x,y)
- 兩集合取并集 union(x,y)
- 兩集合取交集 intersect(x,y)
- 檢查兩集合是否相同(只要元素相等即可惶看,順序不影響) setequal(x,y)
2.
- 向量生成符:的運算優(yōu)先級低于冪運算^捏顺,但高于乘法運算
- 只有“matrix與data.frame”在Rstudio的data中,其他類型數據都在value中
- class\typeof\mode: mode模式是R存儲對象的模式纬黎;class類的概念是沿襲面向對象編程的概念而來幅骄,是一個抽象的概念;typeof和mode相似莹桅,但比mode分得更精細昌执;常見的mode有“numeric”“character”“l(fā)ogical”“complex”“raw”“l(fā)ist”“expression”“name”“symbol”“function”
- 如何得到任意一個R對象的簡要結構? str(x)
- 獲得一個R對象的一些屬性烛亦? attributes(x)
3.
- 連接函數c()诈泼,將數據包括向量組合成一個向量
- 如何粘接字符串? paste(x,y,z,...)
- NA表示缺失值
- 用邏輯向量作索引輸出特定位置的元素,注意:如果邏輯向量長度小于原向量煤禽,則將邏輯向量循環(huán)使用铐达;若邏輯向量長度大于原向量,則超出部分輸出NA
- 如何對向量進行差分檬果?如何多階差分瓮孙? diff(x, lag = )
4.
- 如何求標準差? sd()/ sqrt(var())
- 如何進行五數匯總选脊?(基于中位數的五分位點) fivenum()
- 四分位數杭抠?指定分位百分點? quantile(x, c(0,0.33,0.66,1))
- 絕對中位差: median absolute deviation (數據點到中位數的絕對偏差的中位數) mad()
- 四舍五入: round()
- 向下取整: floor()
- 升序排列恳啥,降序排列 order()/order(,decreasing = TRUE)
- 如何求向量的累積和偏灿,累積最大值,累積最小值钝的,累積積 cumsum(),cummax(),cummin(),cumprod()
- 如何求兩向量相關系數翁垂? cor(x,y)
5.
- letters, LETTERS分別是小大寫英文字母向量
- 注意: 無法給因子水平賦值,以為其僅為數值標識硝桩,強行賦值后會得到警告沿猜,并且被賦值的地方變成NA值
6.
- solve(a,b) 可以解方程組ax=b,b默認為單位陣碗脊,因此solve(a)即是對a求逆
9.
- z = list(1:3, Tom = c(1:2, a=list("R", letters[1:5]), w="hi!")) 問length(z$Tom) 5
10.
- 讀取文件時不選定文件名啼肩,打開文件列表選擇 read.table(file.choose())
- 把變量寫入文件 write(x,"")
- 掃描文件數據到某變量y y <- scan("")???
11.
- 如何逐行判斷是否無NA值? complete.cases(),輸出邏輯向量疟游,TRUE代表無NA值呼畸,FALSE代表有NA值
- 向量也可以進行按行列合并 例子: rbind(1:5,rnorm(5)) cbind(1:5,rnorm(5))
- 如何對向量的元素和矩陣的行或數據框的行查重? duplicated() 返回是否重復過的邏輯向量
- 輸出矩陣不同行颁虐,組成新矩陣: unique()
12.
- 輸出數據蛮原,保留有效數字n位 print(,digits = n)
- 向量與矩陣之間的運算 sweep(x,1,1:5,"*")
- 假設 x = matrix(1:20, 5, 4) ;則x1:5;x1:4 的輸出結果是另绩? x+1:5; x+1:4的輸出結果是儒陨?(加法會按照維度自動匹配,乘法只按照行來乘)
- 如何將矩陣標準化笋籽? scale() center, scale 按列標準化,是否減均值蹦漠,是否除以標準差?
- 獲得因子各水平值的頻數车海? table() 輸出的是table類型笛园,用integer存
- 依據兩個因子分類,交叉制表侍芝? table(x,y)
- 公式法表達兩個因子分類研铆,交叉制表? xtabs(~x+y,Data)
- 消除對象的類州叠? unclass()
- 如何依據多個分類因子求均值棵红? tapply(Data,list(factor1,factor2),mean)
13.
- 如何對向量存儲的分類變量畫條形圖?比例圖咧栗? barplot(table(x)) barplot(table(x)/length(x))
- 條形圖和直方圖的區(qū)別逆甜? 條形圖畫的是離散型數據的頻數分布,直方圖畫的是連續(xù)型數據的頻數分布
- 對直方圖坐標軸下加上實際點的分布? rug(x)
- 如何畫莖葉圖致板? stem()
- 如何在回歸的散點圖中增加回歸線交煞? abline(lm(y~x))
- 畫圖時,畫點斟或、線結合但不通過的圖 和畫點素征、線結合且線通過點的圖分別怎么畫? type = 'b' /'o'
- 確定文本與符號縮放比例的參數缕粹,默認為1 cex
- 如何在圖中添加文本稚茅,具體? text(x,y,labels = texts,...)
19.
- 如何計算執(zhí)行某一語句所用時間平斩? system.time()
- 如何對一個函數進行修改亚享? fix()
20.
- 如何創(chuàng)造一個復向量? complex(real =, imaginary =)
- 如何求一個復向量的實部虛部模和輻角绘面? Re(),Im(),Mod(),Arg()
- 如何求組合數? choose(x,y) x個中任取y個的種類數
- 如何求階乘欺税? factorial(n)
- 如何求函數的極值侈沪? optimize(function,c(min,max)) 輸出列表有 minimum和objective
- 如何求函數的零根? uniroot(function,c(min,max)) 輸出列表有root,f.root,iter等
21.
- 如何將連續(xù)變量切分成區(qū)間分類變量晚凿?切分點為四分位點亭罪? cut(x, breaks = quantile(x), include.lowest = TRUE) 輸出的是因子,表現為區(qū)間
- 如何獲得數據框的子框歼秽? cars[n] 與cars[,n]相似应役,不過cars[n]輸出的是子數據框,cars[,n]輸出的是原變量數據類型
傳統(tǒng)計算
多元回歸
- 多元線性回歸的步驟有哪些燥筷? 模型表示箩祥,參數估計,擬合優(yōu)度肆氓,顯著性檢驗袍祖,模型診斷,模型預測
- 模型診斷分為哪幾個過程谢揪,分別用到什么方法蕉陋? 殘差分析,影響分析(Cook距離拨扶,DFFITS準則)凳鬓,多重共線性分析(方差膨脹因子,條件數)
- 如何讀取xlsx文件屈雄?(不用RODBC包) 村视,需要哪些包? read.xlsx(file = , sheetIndex = / sheetName = ) rJava,xlsxjars,xlsx
- 如何建立線性回歸模型官套?參數設置酒奶?.和~表示的含義? 注意:lm()中data必須是數據框類型
- 建立模型后如何查看奶赔? print和summary各自輸出結果是什么惋嚎? print輸出模型結構和系數;summary輸出模型結構站刑,殘差概述另伍,回歸系數及其檢驗,方程整體效果檢驗(RSE,擬合優(yōu)度,F檢驗)
- 如何檢驗多重共線性绞旅? kappa條件數摆尝,利用kappa(data),輸出條件數因悲,判斷標準是100堕汞,1000; 計算方差膨脹因子晃琳,DAAG:vif(lm),輸出帶變量名的向量讯检,判斷標準最好為1琐鲁,不大于10
- 如何進行殘差分析?輸出的各圖分別代表什么含義? plot(lm) 第一張圖殘差與擬合值人灼,第二張圖是殘差的QQ圖围段,第三張是標準化殘差的平方根與擬合值,第四張圖是cook距離圖投放,給出幾個對模型影響較大的點
- 如何單獨獲得模型系數的向量奈泪,兩種方法? coef(lm)/ lm $ coefficients
- 如何獲得擬合值向量,兩種方法? predict(lm)/ lm $ fitted.values
- 如何獲得殘差灸芳,兩種方法? resid(lm)/ lm $ residuals
- 如何獲得擬合優(yōu)度和標準差? summary(lm) adj.r.squared/ summary(lm) $ sigma
- 如何進行預測段磨? predict。lm(lm,newdata = ,interval = ) 注意:newdata需要是數據框耗绿,點預測的輸出是向量苹支,區(qū)間預測的輸出是矩陣
- 如何對矩陣的列進行繪圖? matplot()
逐步回歸
- 逐步回歸有哪三種變量選擇準則? 選擇F檢驗,選擇調整后的擬合優(yōu)度误阻,選擇AIC準則(望小準則)
- 如何改變數據框變量名稱? names() <-
- 如何輸出x1~x7這樣的字符串向量债蜜? paste(,,sep=) 向量,向量,sep是兩者間的間隔
- 如何進行逐步回歸?R語言逐步回歸的準則是什么? step(),AIC最小值準則
聚類分析
- 聚類大概分哪兩種究反?區(qū)別是什么寻定? R型和Q型 (變量,樣本)
- Q型聚類的四種距離定義? 絕對值距離精耐,歐幾里得距離狼速,閔可夫斯基距離,切比雪夫距離
- R型聚類的兩種距離定義? 夾角余弦卦停,相關系數
- 數據標準化的目的是什么向胡?數據標準化的要求有哪三點? 消除量綱的影響惊完;同一指標內部數據之間距離相對不變原則僵芹,不同指標之間相對距離不變原則,極大值不變原則
- 常見的數據標準化方式有哪三種小槐? 中心化變換拇派,標準化變換,極差標準化變換
- 三種典型的系統(tǒng)聚類法凿跳? 最短距離法件豌,最長距離法,重心法
- 如何對類矩陣的數據進行標準化處理(按列標準化) scale() 輸出矩陣
- 對矩陣計算距離矩陣控嗜?(行之間的距離) dist() method =, 注意: 輸出的是下三角矩陣,dist類型
- 如何進行聚類? hclust(d,method = '') d必須是dist類型, 'complete'是完全距離法(最長距離法)茧彤,'average'是類平均法(距離平方的平均),'ward'是離差平方和法(類內距離總平方和增加最小),'centroid'是重心法躬审,輸出是hclust類棘街,以list方式存儲
- 如何畫圖展示結果? plot(hclust,hang = ) 如果想要底下標簽對齊蟆盐,hang的值需要為負數
- 如何在圖中加上結果的矩陣? rect.hclust(hclust, k = ,border = '') k表示需要的類數遭殉,border指矩陣邊框顏色
因子分析
- 進行因子分析的步驟: 第一步石挂,確定最優(yōu)因子數目 第二步,參數估計险污,獲得
- 如何得到矩陣的相關系數矩陣痹愚? cor()按列處理,輸出矩陣
- 如何得到特征值與特征向量蛔糯? eigen(),輸出list拯腮, ev vectors
- 如何進行平行分析? parallel(subject =, var = , rep =, cent =)
- 如何畫圖確定因子數量? 首先nSree(x = x eigen $ qevpea),其次plotnSree()
- 如何進行因子分析/參數估計蚁飒? factanal(x = ,factor = ,scores = "regression")
- 如何畫因子載荷圖动壤? 先得到loadings矩陣,其次創(chuàng)建畫框不畫圖淮逻,將對應變量文本添加到圖上
- 如何計算因子的權重琼懊? 得到原相關系數矩陣的特征值前幾個,然后標準化得到權重
- 如何得到因子得分爬早? 載荷矩陣與權重向量的矩陣乘法
- 如何得到總評價并且對原對象排序哼丈? 將原對象序號與總評價對應然后排序
二元選擇模型
- 傳統(tǒng)的線性模型為何不能用于離散選擇? 一:難以保證p的預測值始終落在[0,1]之間 二:具有異方差現象
- 線性概率模型的問題是什么筛严?改進的要求有哪些醉旦? 對響應變量發(fā)生概率兩端約束過強; 變換方法要求:1.使得解釋變量的預測值都落在(0,1)之間2.對所有的X桨啃,隨X增加時车胡,Y單調增加或單調減小
- 變換概率模型如何得到的?與LPM模型相比的區(qū)別是什么优幸?
- 二元選擇模型的常用分布有哪幾種吨拍? Probit, Logit, Extreme模型各自的函數
- 如何獲得正態(tài)分布褪猛,logistic分布和極值分布的累積概率网杆? pnorm(q=,mean=,sd=);
- plogis(q=,location=,scale=);pextreme <- function(x) 1-exp(exp(-x))
- 怎么找到極值分布概率為0.5時對應的x的值? 首先創(chuàng)立新函數 pextreme(x)-0.5,利用uniroot函數得到零點伊滋,然后畫點或畫線 注意:uniroot輸出的是list
廣義線性模型
- 廣義線性模型GLM的三個構成要素: 隨機成分碳却,用于描述響應變量及其概率分布特征;系統(tǒng)成分笑旺,用于設定線性解釋函數中解釋變量昼浦;連接函數,用于建立響應變量均值函數與系統(tǒng)成分之間的關系
- 說明高斯多元線性回歸模型筒主、二元選擇logit模型和計數數據的Possion模型都是GLM模型的特例关噪。
分位數回歸
- d
金融數據整理與預處理
向量互動輸入方法: scan()
如何讀取excel/csv文件鸟蟹?四種方法? read.delim("clipboard")/ read.table(".txt")/ read.csv(".csv")/ read.xlsx(".xlsx",sheetIndex/sheetName)
如何在線讀取股票數據? 運用quantmod包使兔,getSymbols函數建钥,getSymbols('',from,to,auto.assgin = TRUE) 注意: 輸出的是xts類型的數據
運用quantmod包讀取數據時,如果是深市數據虐沥,滬市數據熊经,指數數據,需要注意什么欲险? .ss,.sz,^
導入quantmod包前需要的其他包? xts,zoo,TTR
如何查看股票數據的前幾行镐依,后幾行,中間任意幾行天试,開始日期槐壳,結束日期,以及維數喜每? head,tail,some,start,end,dim
如何進行對不同股票數據合并宏粤?也就是對兩個xts類型數據進行合并?NA值是否包括灼卢? merge.xts(,,all)
股票數據的子集如何選擇绍哎? 分為變量選取和樣本選取:變量選取既可使用變量名鞋真,也可使用索引值崇堰;樣本選取可以使用時間和索引,也可以使用專門的subset函數涩咖。 subset(x,條件)
如何隨機抽樣海诲?抽樣前需要做什么處理? 抽樣前要將xts類型的數據轉為ts類型(as.timeSeries/ as.timeSeries.xts)檩互,然后使用sample函數(需加載timeSeries包)特幔,最后用sort函數將時間從前到后排列
如何補齊時間序列對象的缺失日子? align() by = '1d', method = 'before', include.weekends 頻率,方法闸昨,是否包括周末
如何補齊時間序列對象的缺失值? na.approx()(插值取代NA值)
如何進行頻率轉換蚯斯?將高頻轉換為低頻? to.monthly()/ to.weekly()/to.quarterly()/ to.yearly()/ to.daily() 必須針對單只股票的xts數據
如何將數據框數據轉換成時間序列格式饵较? 需要設定時間索引拍嵌,因此要將日期那列轉換為Date類型向量,然后將原數據框轉換為xts循诉, as.Date() xts(data, order.by = Date)
如何將數據寫入excel文件? write.xlsx(data, file = ,sheetName =)
截面數據預處理
如何計算一個字符串或這字符串向量每個字符串的字符數横辆? nchar() 輸出數值向量
如何從一個字符串中取出其中一段小字符串? substr(x, start = , stop = )
如何檢查NA值茄猫? 用is.na()狈蚤,輸出每個元素是否為NA值的邏輯值向量
運算符的作用: x %in% y 檢查x的各元素是否是y中的元素困肩,輸出邏輯向量
如何合并數據框? merge(x,y, by = c('變量名')) 通過變量名來進行合并脆侮,每次只能合并兩個
如何刪除對象中的NA值? na.omit()
金融資產收益計算
- 計算股票收盤價日收益率的三種方法: 1.使用公式直接計算 2.用log與diff函數 3.用returns函數 注:1.對兩個zoo對象處理僻弹,生成zoo對象;對向量處理生成向量 2.對zoo對象處理他嚷,生成zoo對象 3.用zoo對象處理蹋绽,生成的是矩陣,但是保留了第一行NA
- 如何生成zoo類型的數據筋蓖? zoo(x =, order.by =)
- 如何獲得滯后一期的數據卸耘? lag(x, k = ) 針對一般時間序列數據,k=1代表滯后一期粘咖;對于zoo型時間序列蚣抗,k=-1代表滯后一期
- 如何利用returns函數? returns(x, method = , percentage = )
- 如何對第三種方法求得的結果計算平均收益瓮下? mean(x,na.rm = TRUE)/ mean(na.omit(x))
- 如何計算幾何平均收益翰铡? (prod(re/100+1)^(1/length(re)) -1) * 100
- 讀取txt文件,如果希望數據類型都為字符型讽坏,如何寫锭魔? read.table(..., colClasses = 'character')
- 如何將年月數據轉化成相應的類型? as.yearmon()
- 如何合并兩個zoo類型? merge(x,y)
- 如何巧妙計算出一個序列NA值的總數? sum(is.na(x))
- 如何獲得一個均勻分布的樣本路呜? runif(length, from, to)
- 如何將一組非負數標準化使它們和為1迷捧,便于作為權重? w/sum(w)
- 如何將個股收益率轉換成組合收益率? 矩陣乘法: %*%
- 如何計算債券類資產的內部收益率胀葱,到期收益率漠秋? 首先設置損失函數,輸入收益率抵屿,價格和現金流庆锦,輸出現值損失,其次運用uniroot函數得到的零根即是內部收益率
- 損失函數如何設置轧葛?
- 如何求得零根搂抒? uniroot(f,c(min,max),...) ...需輸入其他參數的值如,p=p,Cs=Cs
GARCH模型族
ARCH模型
- 如何模擬生成ARCH(q)序列 使用fGarch包 garchSpec(model = list(omega =, alpha = , beta =)), garchSim(spec, n = , extended = )
- ARCH效應檢驗使用的是拉格朗日乘數法朝群,原假設是不存在ARCH效應燕耿,檢驗方法: library(FinTS) ArchTest(x =, lags = )
GARCH模型
- GARCH(p,q)的方程;GARCH的特點姜胖,不僅能夠表現出波動聚集性,還可以表現厚尾特征
- GARCH模型如何定階淀散? 第一步根據eps平方的PACF確定q右莱;第二步根據AIC/BIC準則確定p
- 如何將str中的一部分字符換成另一種字符蚜锨? gsub('','',str)
- 如何做自相關圖,偏自相關圖慢蜓? acf(data,lag.max=) pacf(data,lag.max=)
- GARCH建模 garchFit(~garch(p,q),data =,trace = FALSE, cond.dist ='std'/'sstd'/'ged'/'sged')
- 獲取GARCH模型波動率信息 fBasics::volatility(model)
- 獲取標準化殘差η residuals(model, standardize = TRUE)
- 模型預測 predict(model, n.ahead = ,trace = FALSE, mse = 'cond', plot = FALSE)
擴展的GARCH模型
- GARCH-M模型:考慮了收益與風險的關系亚再,風險溢價參數γ
- IGARCH模型:單整GARCH模型,用于描述條件方差的持續(xù)性質
- EGARCH模型:反映金融市場波動的非對稱性
- TGARCH模型:反映金融市場波動的非對稱性
- APARCH模型:更廣泛
- 如何生成模型晨抡? library(rugarch) ugarchspec(variance.model = list(model = 'fGARCH', garchOrder = c(p,q),submodel='TGARCH'/'GARCH'),mean.model = list()) ugarchfit(model,data = )
- 生成APGARCH模型 garchFit(~1+aparch(p,q),data = ,trace = FALSE, delta = )
自我練習
- 如何得到某一個文件夾下的全部文件名稱氛悬? list.files()
- 如何創(chuàng)建一個某類型的空值向量? vector(mode="",length=0)
- 如何取得時間序列數據的時間耘柱? index()