时间序列数据的输入
少量数据:使用函数ts
ts(1:10, frequency = 4,start = c(1959, 2))
a<-ts(1:10, frequency = 4, start = c(1959, 2))
plot(a)
大量数据:通过txt格式或者csv格式将外部数据文件读入R
file.choose(),弹出对话框,可以让我们选择文件的位置。
方法一:
read.table(“sha.txt”,header=T)
注意:在“read.table”指令中,header默认为FALSE,也即认为第一行就是数据;所以如果第一行不是数据而是标题,要改写为header=T/TURE;
方法二:
read.csv((“sha.csv”,header=T)
注意:和“read.table”指令不同,在“read.csv”指令中默认header = TRUE,也就是第一行是标签,不是数据。
一旦你将时间序列数据读入到R,下一步就是将数据存储到R中的一个时间序列对象里,以便你能使用R的很多函数分析时间序列数据。在R中我们使用ts()函数将数据存储到一个时间序列对象中去。
Scan指令:一次只能读一个时间序列,按行读取,且只能读取数据不能读取字符,只适用与txt文档;
如要读sha.txt
scan("c:/users/w/documents/sha.txt",skip=1)
#首先告诉R文件路径,其次由于该文件第一行为标题行,无法读取,所以运用“skip=1”过滤掉第一行。
1.绘制一组数据的时序图
例题: 绘制1964—1999年中国纱产量序列时序图。
file.choose()
R运行结果:
"C:\\Users\\Administrator\\Desktop\\sha.txt" #首先找到所要分析的文件路径
d=read.table("C:\\Users\\Administrator\\Desktop\\sha.txt ",header=T)
d=ts(d,freq=1,start=1964,end=1999) #通过ts()函数将“年份”数据和“纱”数据存储为时间序列。
ts()函数的基本格式:ts(data,freq,start,end), 其中,data是向量或矩阵名字,本例中指定文件d中的两列数据“年份”数据和“纱”;freq选型指定序列每年读入的数据频率,如果是年度数据则freq=1; 半年度数据则freq=2; 季度数据则freq=4; 月度数据则freq=12; 周度数据则freq=52; 日度数据则freq=365;start选型指定序列的起始读入时间;end选项指定序列的结束读入时间。
plot(d)
注意:结果发现出现两个时序图!如果该文件中有两列数据分别为年份和各年份纱产量,则画图时会对这两列数据分别画图。因此要剔除掉年份数据或者在文件中不输年份数据。如要剔除,则d[,2]指令或者d[,-1]指令只选择第二列数据或剔除第一列数据,保留纱产量数据。
所以正确的处理方式:
file.choose()
R运行结果:
"C:\\Users\\Administrator\\Desktop\\sha.txt" #首先找到所要分析的文件路径
d=read.table("C:\\Users\\Administrator\\Desktop\\sha.txt ",header=T)
d=d[,2] #或采用d[,-1]指令只选择纱产量这一列数据。
sha=ts(d,start=1964,freq=1)
plot.ts(sha) #绘制时序图。得到纱产量的时序图。
由该时序图看出,序列具有连续向上的趋势,所以不是平稳时间序列。
d=read.table("C:\\Users\\Administrator\\Desktop\\sha1.txt",header=T)
sha=ts(d,start=1964,freq=1)
plot.ts(sha) #绘制时序图
acf(sha,lag=22) #或acf(sha,22),绘制自相关图,滞后期数22。
R中使用acf函数绘制自行关图,该函数的命令格式为:acf(x,lag=),式中:x:序列名;lag:延迟阶数,若用户不特殊指定,系统会根据序列长度自动指定延迟阶数。
由该自相关图看出,一直到第22期,自相关系数依然显著非0,不满足平稳时间序列的短期相关特性。所以,由自相关图判断,纱产量序列不是平稳时间序列。
acf(sha,plot=FALSE)[5] #计算出延迟5阶的自相关系数,R的计算结果为0.609。
pacf(sha,22) #绘制偏自相关图,滞后期数22。
pacf(sha,plot=FALSE)[5] #计算出延迟5阶的偏自相关系数,R的计算结果为-0.129。
纱产量序列的偏自相关函数图
3.产生服从正态分布的随机观察值
例题2.4 随机产生1000白噪声序列观察值
d=rnorm(1000,0,1) #个数1000 ,来自均值0, 方差1的标准正态分布
d=ts(d)
plot(d)
4.纯随机性检验
例题2.4续
Box.test(d, type=“Ljung-Box”,lag=6)
R的计算结果为:
Box-Ljung test
data: d
X-squared = 4.8867, df = 6, p-value = 0.5584
滞后6期的纯随机性检验的结果表明,QLB检验统计量的值为4.8867,对应的P值为0.5584大于0.05,不拒绝原假设,所以为白噪声序列。
Box.test(d, type=“Ljung-Box”,lag=12) #进一步的,对该序列滞后12期的相关性进行判断。
R的结果:
Box-Ljung test
data: d
X-squared = 6.4421, df = 12, p-value = 0.8922
滞后12期的纯随机性检验的结果表明,QLB检验统计量的值为6.4421,对应的P值为0.8922大于0.05,不拒绝原假设,所以为白噪声序列。综合6期和12期的检验结果,表明该序列为白噪声序列。