时间序列 - 相关性和滞后时间

5 投票
1 回答
6436 浏览
提问于 2025-04-18 17:22

我正在研究一组输入变量和一个响应变量(价格)之间的关系。这些数据都是时间序列的。

1) 如果输入变量是周期性的(自回归),我是否有必要平滑曲线?如果需要的话,应该怎么做?

2) 一旦建立了相关性,我想准确量化输入变量是如何影响响应变量的。比如:“当X增加超过10%时,6个月后y会增加2%。”

我应该关注哪些Python库来实现这个目标,特别是为了找出两个相关事件之间的滞后时间

举个例子: enter image description here

我已经查看过了:statsmodels.tsa.ARMA,但它似乎只处理一个变量随时间的预测。在scipy中,协方差矩阵可以告诉我关于相关性的信息,但对找出滞后时间没有帮助。

1 个回答

5

这个问题有一部分是关于统计学的,但关于如何在Python中实现的部分在这里讨论比较合适。我看到你已经决定用R来做这个,从你在Cross Validated上的提问可以看出来,不过如果你决定再回到Python,或者对其他人有帮助的话,以下内容可能会有用:

我觉得你在查看statsmodels.tsa这个模块时是对的,但其实它的内容比ARMA包要丰富得多:

http://statsmodels.sourceforge.net/devel/tsa.html

特别是,可以看看statsmodels.tsa.vector_ar这个模块,它是用来建模多元时间序列的。相关的文档可以在这里找到:

http://statsmodels.sourceforge.net/devel/vector_ar.html


上面的页面说明它是用来处理平稳时间序列的——我想这意味着需要去掉趋势和任何季节性或周期性。以下链接主要是为了准备一个预测模型,但它讨论了Box-Jenkins方法来建立模型,包括如何使其平稳:

http://www.colorado.edu/geography/class_homepages/geog_4023_s11/Lecture16_TS3.pdf

你会注意到这个链接讨论了如何寻找自相关(ACF)和偏自相关(PACF),然后使用增强型Dickey-Fuller检验来测试序列是否现在是平稳的。关于这三种工具的内容可以在statsmodels.tsa.stattools中找到。同样,statsmodels.tsa.arma_process也有ACF和PACF的相关内容。

上面的链接还讨论了使用像AIC这样的指标来确定最佳模型;statsmodels.tsa.var_model和statsmodels.tsa.ar_model都包含AIC(以及其他一些指标)。在var_model中,似乎也使用相同的指标来计算滞后顺序,使用select_order。


此外,pandas库至少部分集成了statsmodels,并且本身也有很多时间序列和数据分析的功能,所以可能会对你有帮助。时间序列的文档在这里:

http://pandas.pydata.org/pandas-docs/stable/timeseries.html

撰写回答