Reference book: R in Action
For further study, the following books are recommended:

生成时序对象

sales=c(18, 33, 41, 7, 34, 35, 24, 25, 24, 21, 25, 20, 
        22, 31, 40, 29, 25, 21, 22, 54, 31, 25, 26, 35)
tsales=ts(sales, start=c(2003, 1), frequency=12)
plot(tsales, type="o", pch=19)

start(tsales)
## [1] 2003    1
end(tsales)
## [1] 2004   12
frequency(tsales)
## [1] 12

对对象取子集

tsales.subset=window(tsales, start=c(2003, 5), end=c(2004, 6))
tsales.subset
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2003                  34  35  24  25  24  21  25  20
## 2004  22  31  40  29  25  21

通过 ma() function from forecast package 简单移动平均进行平滑处理

library(forecast)
opar=par(no.readonly = TRUE)
par(mfrow=c(2,2))
ylim=c(min(Nile), max(Nile))
plot(Nile, main="Raw time series")
plot(ma(Nile, 3), main="Simple Moving Averages (k=3)", ylim=ylim)
plot(ma(Nile, 7), main="Simple Moving Averages (k=7)", ylim=ylim)
plot(ma(Nile, 15), main="Simple Moving Averages (k=15)", ylim=ylim)

par(opar)

通过 stl() function 进行季节性分解

An example: AirPassengers

序列的波动随着整体水平的增长而增长, 相乘模型更适合
stl() 只能处理相加模型, 因而通过对数变换转换成相加模型

plot(AirPassengers)

lAirPassengers=log(AirPassengers)
plot(lAirPassengers, ylab="log(AirPassengers)")

fit=stl(lAirPassengers, s.window = "period")
plot(fit, main="季节性分解图, 灰色长条表示量级")

下列code给出观测值中趋势, 季节以及随机项的具体组成, 及其原始尺度

fit$time.series
exp(fit$time.series)

季节分解可视化

monthplot(AirPassengers, xlab="", ylab="")

seasonplot(AirPassengers, year.labels = "TRUE", main="")