文档1:《R与金融时间序列分析常见问题集》
【包】
library(zoo)
#时间格式预处理
library(xts) #同上
library(timeSeires)
#同上
library(urca) #进行单位根检验
library(tseries)
#arma模型
library(fUnitRoots) #进行单位根检验
library(FinTS)
#调用其中的自回归检验函数
library(fGarch) #GARCH模型
library(nlme)
#调用其中的gls函数
library(fArma)
#进行拟合和检验
【基本函数】
数学函数
abs,sqrt:绝对值,平方根 log, log10, log2 ,
exp:对数与指数函数 sin,cos,tan,asin,acos,atan,atan2:三角函数
sinh,cosh,tanh,asinh,acosh,atanh:双曲函数
简单统计量
sum, mean, var, sd, min, max,
range, median,
IQR(四分位间距)等为统计量,sort,order,rank与排序有关,其它还有ave,fivenum,mad,quantile,stem等。
【数据处理】
#具体说明见文档1
#转成时间序列类型
x
= rnorm(2)
charvec =
c(“2010-01-01”,”2010-02-01”)
zoo(x,as.Date(charvec)) #包zoo
xts(x,
as.Date(charvec)) #包xts
timeSeries(x,as.Date(charvec))
#包timeSeries
#规则的时间序列,数据在规定的时间间隔内出现
tm = ts(x,start = c(2010,1),
frequency=12 ) #12为按月份,4为按季度,1为按年度
zm = zooreg(x,start = c(2010,1),
frequency=12 ) #包zoo
xm = as.xts(tm) #包xts
sm = as.timeSeries(tm)
#包timeSeries
#判断是否为规则时间序列
is.regular(x)
#排序
zoo()和xts()会强制变换为正序(按照时间名称)
timeSeries不会强制排序;其结果可以根据sort函数排序,也可以采用rev()函数进行逆序;参数recordIDs,可以给每个元素(行)标记一个ID,从而可以找回原来的顺序
#预设的时间有重复的时间点时
zoo会报错
xts按照升序排列
timeSeries把重复部分放置在尾部;
#行合并和列合并
#都是按照列名进行合并,列名不同的部分用NA代替
cbind()
rbind()
merge()
列合并
#取子集
xts()默认将向量做成了矩阵;其他与常规向量或者矩阵没有差别
#缺失值处理
na.omit(x)
x[is.na(x)] = 0
x[is.na(x)] = mean(x,na.rm=TRUE)
x[is.na(x)] =
median(x,na.rm=TRUE)
na.approx(x) #对缺失值进行线性插值
na.spline(x)
#对缺失值进行样条插值
na.locf(x) #末次观测值结转法
na.trim(x, sides=”left” )
#去掉最后一个缺失值
#对timeSreies数据
na.omit(x, “ir” ) #去掉首末位置的缺失值
na.omit(x,
“iz” ) #用替换首末位置的缺失值
na.omit(x, “ie” ) #对首末位置的缺失值进行插值
na.omit(x,
method=“ie”, interp= c(“before”,”linear”,”after”) )
#可以选择插值方法,before末次观测值法,after下次观测结转法
as.contiguous(x)
#返回x中最长的连续无缺失值的序列片段,如果有两个等长的序列片段,则返回第一个。
#时间序列数据的显示
#zoo和xts都只能按照原来的格式显示,timeSeries可以设置显示格式
print(x,
format= “%m/%d/%y %H:%M”)
#%m表示月,%d表示天,%y表示年,%H表示时,%M表示分钟,%A表示星期,%j表示天的序号
#timeSeries也可以按照ts的格式显示
print(x,
style=”ts”)
print(x, style=”ts”,
by=”quarter”)
【图形展示】
plot.zoo(x)
plot.xts(x)
plot.zoo(x,
plot.type=”single”) #支持多个时间序列数据在一个图中展示
plot(x, plot.type=”single”)
#支持多个时间序列数据在一个图中展示ÿ