今天分享的是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")
#方法&#