R语言时间序列分析(初步)
ts
ts数据类型,通过起止、频率描述时间
Time Series:
Start = 1871
End = 1970
Frequency = 1
[1] 1120 1160 963 1210
ts常用函数
# View the start and end dates of AirPassengers
start(AirPassengers)
end(AirPassengers)
# Use time(), deltat(), frequency(), and cycle() with AirPassengers
time(AirPassengers)
deltat(AirPassengers)
frequency(AirPassengers)
cycle(AirPassengers)
趋势
主要趋势类型:线性变化、周期性、季节周期性
log变换
当ts呈现指数形态增长时,可以使用log函数稳定趋势。
变换后
通过差分(difference)移除线性趋势
通过指定差分的lag,移除季节周期性
White Noise(白噪声)模型
WN是最简单的平稳过程(stationary process)。它是ARIMA(0,0,0)。
假设时间序列Y1、Y2 ... 为WN,需满足条件为
- E(Yt) = \mu ,对任何时段t内
- Var(Yt) = \sigma^{2} ,在任意时段t内
- Cov(Yt, Ys) = 0 ,t、s不是相同时段
如果序列是i.i.d.(独立同分布)的随机变量,那么WN是严格的(strict)。
并且变量是正态分布,那么这种WN被称为高斯WN。
如果是WN,说明无法通过过去值预测未来。
r模拟WN序列
white_noise_2 <- arima.sim(model = list(order=c(0,0,0)), n = 100, mean = 100, sd = 10)
用WN拟合序列获得估计参数,intercept是估计的mean,sigma^2是方差。
arima(y)
Coefficients:
intercept
97.5428
s.e. 0.9697
sigma^2 estimated as 94.03: log likelihood = -369.08, aic = 742.15
WN样例
RW(random walk)模型
RW模型意味着Yt+1 - Yt是mean为0的WN。它是ARIMA(0,1,0)。
模拟RW,并显示其差分序列
# Generate a RW model using arima.sim
random_walk <- arima.sim(model = list(order=c(0,1,0)), n = 100)
# Plot random_walk
ts.plot(random_walk)
# Calculate the first difference series
random_walk_diff <- diff(random_walk)
# Plot random_walk_diff
ts.plot(random_walk_diff)
RW序列
差分序列
带drift的RW模型
差分序列加上一个intercept。
rw_drift <- arima.sim(model = list(order = c(0, 1, 0)), n = 100, mean = 1)
Stationarity(平稳性)
严平稳:任意等长时段的统计参数不变。
弱平稳:mean、var不变、cov是与时段间隔lag(t-s)相关的函数
有线性趋势的、周期性的、不向中心回归的都是非平稳序列。
RW始终是非平稳的。
Autocorrelation(自相关)
计算序列的自相关性cor(Yt,Yt-1),lag.max指定最大时延。
acf(x, lag.max = 1, plot = FALSE)
下面三种时间序列与其对应的自相关图
很明显,第三种序列的ac很弱,本身很可能是WN。
AR(auto regressive process)自回归过程
自回归过程模型
Y_{t} - \mu = \phi ( Y_{t-1} - \mu ) + \varepsilon_{t}
这是1阶自回归过程,Yt和前值与噪声相关。
Corr(Y t ,Y t−h ) = ρ(h) = φ |h|
当 µ = 0 and φ = 1,模型就退变为了RW。
用代码构造ar,model内ar参数就是slope(-1,1)。
x <- arima.sim(model = list(ar=0.9), n = 100)
下图是模拟构造出的序列x的自相关图。
如果是0.5构造的相关性如下。
可以看出ar越大,序列的自相关性越强。
RW模型的acf表现出很强的序列持续性(persistence),说明较远的值也在产生影响,自相关性很强。
AR是ARIMA(1,0,0)。R拟合方法如下,residuals可获取模型的残差。
AR <- arima(AirPassengers,order=c(1,0,0))
AR_fitted <- AirPassengers - residuals(AR)
Coefficients: