R语言时间序列函数整理
(2013-09-17 10:12:09)分类: PYTHON |
摘要:
【资料】文档1:《R与金融时间序列分析常见问题集》【包】library(zoo) #时间格式预处理library(xts)
#同上library(timeSeires) #同上library(urca) #进行单位根检验library(tseries)
#arma模型library(fUnitRoots) ...
【资料】 文档1:《R与金融时间序列分析常见问题集》 【包】 library(zoo) library(xts) library(timeSeires) library(urca) library(tseries) library(fUnitRoots) library(FinTS) library(fGarch) library(nlme) 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)) xts(x, as.Date(charvec)) timeSeries(x,as.Date(charvec)) #规则的时间序列,数据在规定的时间间隔内出现 tm = ts(x,start = c(2010,1), frequency=12 ) zm = zooreg(x,start = c(2010,1), frequency=12 ) xm = as.xts(tm) 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) #时间序列数据的显示 #zoo和xts都只能按照原来的格式显示,timeSeries可以设置显示格式 print(x, format= “%m/%d/%y %H:%M”) #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”) #支持多个时间序列数据在一个图中展示,仅对xts不行 【基本统计运算】 1、自相关系数、偏自相关系数等 例题2.1 d=scan("sha.csv") sha=ts(d,start=1964,freq=1) plot.ts(sha) acf(sha,22) pacf(sha,22) corr=acf(sha,22) cov=acf(sha,22,type = "covariance") 2、同时绘制两组数据的时序图 d=read.csv("double.csv",header=F) double=ts(d,start=1964,freq=1) plot(double, plot.type = "multiple") plot(double, plot.type = "single") plot(double, plot.type = "single",col=c("red","green"),lty=c(1,2)) #设置每组数据图的颜色、曲线类型) 3、纯随机性检验 例题2.3续 d=scan("temp.csv") temp=ts(d,freq=1,start=c(1949)) Box.test(temp, type="Ljung-Box",lag=6) 4、差分运算和滞后运算 diff lag 5、模拟ARIMA模型的结果 arima.sim(n = 100, list(ar = 0.8)) plot.ts(arima.sim(n = 100, list(ar = 0.8))) plot.ts(arima.sim(n = 100, list(ar = -1.1))) plot.ts(arima.sim(n = 100, list(ar = c(1,-0.5)))) plot.ts(arima.sim(n = 100, list(ar = c(1,0.5)))) arima.sim(n = 1000, list(ar = 0.5, ma = -0.8)) acf(arima.sim(n = 1000, list(ar = 0.5, ma = -0.8)),20) pacf(arima.sim(n = 1000, list(ar = 0.5, ma = -0.8)),20) 【单位根检验】 #方法1 b=ts(read.csv("6_1.csv",header=T)) x=b[,1] y=b[,1] summary(ur.df(x,type="trend",selectlags="AIC")) #方法2:单位根检验更好的函数,加了画图的功能 library(fUnitRoots) urdfTest(x) #方法3:ADF检验的一个自编函数 library(urca) #... ur.df.01=function(x,lags=8){ } #... ur.df.01(x) 【一般的ARIMA模型】 d=scan("a1.5.txt") prop=ts(d,start=1950,freq=1) plot(prop) acf(prop,12) |