使用R进行时间序列分解

R语言时间序列分析:非季节性和季节性分解
本文介绍了如何使用R语言对非季节性和季节性时间序列进行分解。针对非季节性数据,通过平滑法(SMA)计算移动平均值揭示趋势变化,分别展示了跨度为3和8的平滑结果。对于季节性时间序列,分析了分解季节性、趋势和随机噪声的过程。

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

数据

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的时间序列中可以看到其趋势是先下降后上升。

季节性时间序列分解

数据

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()

结果

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值