如果想知道一个序列是否对预测另一个序列有用,可以用Granger causality test(格兰杰因果检验)。
如果使用时间序列X和Y的历史值来预测Y的当前值,比仅通过Y的历史值来预测Y的当前值得到的误差更小,并且通过了F检验,卡方检验,则X对Y的预测是有一定帮助的。 了解了Granger causality test的思想之后会发现,其实Granger causality test最多能推断出X对Y的预测是有一定帮助的,至于是否能说X和Y是因果关系,则不一定。 进一步了解可以去这里:https://www.zhihu.com/question/34787362
python的statsmodel包的grangercausalitytests函数中提供了很好的实现。
from statsmodels.tsa.stattools import grangercausalitytests
df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/a10.csv', parse_dates=['date'])
df['month'] = df.date.dt.month
grangercausalitytests(df[['value', 'month']], maxlag=2)
每个检验的p值都小于5%,所以可以说月份对澳大利亚药物销售的预测有用,或者说药物的销售可能存在季节性。
ok,本篇就这么多内容啦~,下一篇将介绍时间序列预测常用的模型ARIMA,感谢阅读O(∩_∩)O。