(本文首发于个人公众号“数据与平行世界”,欢迎关注!)
从这一篇开始,我们讨论时间序列的建模和预测。
之前,我们从数据探索的角度所讨论的时间序列,是按时间顺序排列的一个观测序列。从模型的角度,一个时间序列
可以视为来自某个随机过程
的一个样本,而随机过程是一个随机变量的序列。随机过程与时间序列的关系就像数理统计中所说的总体与样本的关系,在具体的观察之前,时间序列可以就可以看作一个随机过程(此时,
就可以看作随机变量
,具有这个随机变量的分布和各种统计性质)。对时间序列进行建模,就是要建立一个包含这一系列随机变量的概率模型,并对模型的参数进行统计推断。
1、平稳性
对时间序列模型进行统计推断的基础是平稳性(stationary)。
我们对一个时间序列进行观察,观测值或许具有随机性,但是从一个时间周期到下一个时间周期,有些序列的观测会表现出相同的随机模式。比如,观察上证指数2010-2019年这10年间的每日收盘价格和日对数收益率序列(图-的上方和下方),我们会发现每一年价格序列的均值随时间剧烈波动,对数收益率序列的均值却几乎不变:
library(tsibble)
library(tidyverse)
library(feasts)
library(tsibbledata)
library(lubridate)
library(cowplot)
library(pedquant)
szzs<-md_stock("000001.ss",source="163",from='2010-01-01',to='2019-12-31')
szzs_tbl<-as_tibble(szzs[[1]])%>%
mutate(return=c(0,diff(close)/close[-nrow(szzs[[1]])]),
logreturn=c(0,diff(log(close))))
p1<-szzs_tbl%>%
ggplot(aes(x=date,y=close))+
geom_line(color='blue')+
theme_bw()
p2<-szzs_tbl%>%
ggplot(aes(x=date,y=logreturn))+
geom_line(color='blue')+
theme_bw()
plot_grid(p1,p2,nrow=2,align="v",rel_heights=c(1,1))