使用R进行时间序列分解

非季节性数据的时间序列分解

数据

http://robjhyndman.com/tsdldata/misc/kings.dat

分析

非季节性的数据包含两个组成成分,分别为随机噪声和趋势。为了能使用加性模型(Additive Model)描述非季节性数据的趋势成分,我们使用平滑法(SMA)来计算一个时间序列的移动平均。在使用SMA计算时间序列的移动平均值时,需设定跨度n。

R代码

library("TTR")
kings <- scan("kings.dat", skip = 3)
kings.ts <- ts(kings)
kings.ts.sma3 <- SMA(kings.ts, n=3)
kings.ts.sma8 <- SMA(kings.ts, n=8)

svg("kings.ts.sma.svg", width = 8, pointsize = 12)
par(mfrow=c(3,1))
plot.ts(kings.ts)
plot.ts(kings.ts.sma3)
plot.ts(kings.ts.sma8)
graphics.off()

结果

从上之下分别是原时间序列,跨度为3的平滑后的时间序列,以及跨度为8的平滑后的时间序列。从跨度为8的时间序列中可以看到其趋势是先下降后上升。

使用R进行时间序列分解_第1张图片

季节性时间序列分解

数据

http://robjhyndman.com/tsdldata/data/nybirths.dat

分析

季节性时间序列,正如其名,在非季节性时间序列的基础上增加了季节性成分,因此,分析一个季节性时间序列,需分解出他的季节性成分,趋势成分以及随机噪声成分。

R代码

##seasonal time series
births <- scan("nybirths.dat")
births.ts <- ts(births, frequency=12, start=c(1946,1))
births.ts.com <- decompose(births.ts)
png("births.ts.decompose.png")
plot(births.ts.com)
graphics.off()

结果

使用R进行时间序列分解_第2张图片

你可能感兴趣的:(R,时间序列分析,数据挖掘,R与数据挖掘,R,时间序列分析)