R语言-时间序列的创建及时间序列模型

来源:互联网 发布:世强软件万能五笔 编辑:程序博客网 时间:2024/05/22 06:11
R语言中时间序列的内容主要有:时间序列的创建,ARMA模型的建立与自相关和偏自相关函数。
一、  时间序列的创建
时间序列的创建函数为:ts().函数的参数列表如下:
ts(data = NA, start = 1, end = numeric(),frequency = 1,
  deltat = 1, ts.eps = getOption("ts.eps"), class = , names = )
参数说明:data:这个必须是一个矩阵,或者向量,再或者数据框frame
          Frequency:这个是时间观测频率数,也就是每个时间单位的数据数目
          Start:时间序列开始值,允许第一个个时间单位出现数据缺失
举例:ts(matrix(c(NA,NA,NA,1:31,NA),byrow=T,5,7),frequency=7,names=c("Sun","Mon ","Tue", "Wen" ,"Thu","Fri"," Sat"))
运行上面的代码就可以得到一个日历:
Sun  Mon Tue Wen Thu  Fri  Sat
  NA   NA  NA   1  2    3    4
   5    6   7   8  9   10   11
  12   13  14  15 16   17   18
  19   20  21  22 23   24   25
  26    27 28  29  30   31   NA
在R语言中本身也有不少数据集,比如统计包中的sunspots,你可以通过函数data(sunspots)来调用它们。
二、       一些时间序列模型
这里主要介绍AR,MA,随机游走,余弦曲线趋势,季节趋势等
首先介绍一下AR模型:AR模型,即自回归(AutoRegressive,AR)模型,数学表达式为:  AR :y(t)=a1y(t-1)+...any(t-n)+e(t)
其中,e(t)为均值为0,方差为某值的白噪声信号。
那么产生AR模型的数据,我们就有两种方法:1、调用R中的函数filter(线性滤波器)去产生AR模型;2、根据AR模型的定义自己编写函数
先说第一种方法:调用R中的函数filter(线性滤波器)去产生AR模型
介绍函数filter的用法如下:
filter(x, filter, method = c("convolution", "recursive"),
       sides = 2, circular = FALSE, init)
对于AR(2)模型x(t)=x(t-1)--0.9x(t-2)+e(t)
w<-rnorm(550)#我们假定白噪声的分布是正态的。
x<-filter(w,filter=c(1,-0.9),"recursive")
#方法:无论是“卷积”或“递归”(可以缩写)。如果使用移动平均选择“卷积”:如果“递归”便是选择了自回归。
再说第二种方法:依据定义自己编程产生AR模型,还是以AR(2)模型x(t)=x(t-1)--0.9x(t-2) +e(t)为例,可编写函数如下:
w<-rnorm(550)
AR<-function(w){
x<-w
x[2]=x[1]+w[1]
for(i in 3:550)
x[i]=x[i-1]-0.9*x[i-2]+w[i]
x
}
调用AR(W)即可得到。如果对相同的随机数,我们可以发现两个产生的时间序列是一致的。当然对于第二种方法产生的序列需要转换为时间序列格式,用as.ts()处理。
类似的,我们给出MA,随机游走的模拟:
MA模型:
w<-rnorm(500)
v<-filter(w,sides=2,rep(1,3)/3)
随机游走:
w<-rnorm(200)
x<-cumsum(w)#累计求和,seeexample:cumsum(1:!0)
wd<-w+0.2
xd<-cumsum(wd)
0 0
原创粉丝点击