碎碎念:刚上完Time Series的课,但一直没看参考书,所以趁放假整理一波。其实选这节课之前对这课有没有用抱有怀疑,因为现在主流是机器学习,时间序列就金融用得比较多,后来是觉得为了学习的完整性,所以选了。上了以后发现比想象的有用,原来觉得这门课是孤立的,现在觉得其实还写那些东西还挺有趣,包括和Generated Additive Model,和马尔科夫链,随机游走, 甚至是波的分析都有很深的关系。
-------------------------------------下面是正文--------------------------------------------
什么是时间序列?时间序列是一组按照时间发生先后顺序进行排列的数据点序列,比如气温随时间的变化,股价变化等等。一般我们会觉得因变量是连续的,比如气温,但实际上离散的点也可以看做因变量。在这个分析中,重要的不是因变量份类型,而是自变量跟时间有关,或者说,跟顺序有关。
我们做时间序列分析的目的主要是依据之前的数据来进行预测。那他和普通的回归有什么区别呢?个人认为:
- 对于线性回归来说,我们假设残差是正态分布的,但在时间序列中,残差与时间t有关,所以一般会把整个模型看成一个semi-parametric的模型
- 时间序列分析的另一个目的是模式识别,比如发现序列是不是有趋势,有周期性,在每个周期中是什么样的状态,是不是有明显的异常行为,这些事普通的回归做不到的
时间序列的模型长成这样:
,是trend,是sasonality,是noise,我们希望是stationary的,stationary的定义之后讲。
建模的步骤主要如下:
S1: 画图,从图上看有没有trend, seasonality
S2: Transform Y 目的是让每个波的波动幅度看起来相近,这样的话seasonality就不随着时间变化。一般常用的就是Log,这种,然后如果要去对数的话,可以现对整体的Y加一个常数,让所有的Y变成正数。
S3: 如果有trend, seasonality的话,找一种方法先把这两个因素remove掉,只看residual 。一般常用的方法是令
S4: 选模型来拟合
S5: 之后就可以预测了
stationarity的定义:
严格的stationarity是指和有同样的联合分布
弱定义是指cov和E不随着t而改变。