笔记说明
在datacamp网站上学习“Time Series with R ”track
“Introduction to Time Series Analysis”课程 做的对应笔记。
学识有限,错误难免,还请不吝赐教。
本次笔记主要记录常见的趋势和几个简单的去趋势的方法。
补充阅读:
目录
- 常见的趋势(Trend)
- 用log变换去除方差随时间增长的趋势
- 用差分去除线性趋势
- 用季节差分去除季节性趋势
常见的趋势(Trend)
图来自于datacamp课程练习A图显示的是周期性趋势;B图显示的是线性趋势;C图显示的是随时间快速增长的趋势;D图显示的是方差随时间增长的趋势。
用log变换去除方差随时间增长的趋势
log()函数产生的log变换适用于数值为正的时间序列,它会缩小原数据。原数据越大,缩小的幅度越大。这个特性可用来将方差随时间增大的时间序列的方差变得更稳定。log变换也可以用来将随时间快速增长的趋势转变为线性趋势。
datacamp练习中给的数据rapid_growth具有随时间快速增长的趋势,方差也随时间增长:
log变换:
# Log rapid_growth
linear_growth <- log(rapid_growth)
# Plot linear_growth using ts.plot()
ts.plot(linear_growth)
log变换后变为线性趋势,方差也更平稳了
用差分去除线性趋势
时间序列的一阶差分就是相邻两个观测的差:
对时间序列进行差分可以去除线性趋势,R中diff()函数即计算时间序列的一阶差分。差分后的序列会比原始序列少一个观测。
下面对datacamp练习中给的时间序列z进行差分:
# Generate the first difference of z
dz <- diff(z)
# Plot dz
ts.plot(dz)
# View the length of z and dz, respectively
length(z)
length(dz)
代码中的length()函数用来查看差分前后序列的观测数。
差分后去除了线性趋势
用季节差分去除季节性趋势
可以用季节差分去除季节性趋势等周期性的趋势。
diff(..., lag = s)函数能够计算间隔为s的差分。对于按月记录或按季度记录的数据,合适的s值可能是12或4. diff()函数默认的lag值为1。季节差分后的序列会比原始序列少s个观测。
下面利用季节差分消除datacamp课程练习数据x的周期性趋势:
# Generate a diff of x with lag = 4. Save this to dx
dx <- diff(x, lag = 4)
# Plot dx
ts.plot(dx)
# View the length of x and dx, respectively
length(x)
length(dx)
季节差分后得到的序列
网友评论