这似乎是一个必须使用的相当常见的测试,但我找不到matlab中的任何内置工具来帮助我找出给定的时间序列是否是静止的。到目前为止我发现的所有东西都在Econometrics工具包中,我没有。如果内置任何东西,有人可以推荐我自己写的最佳/最简单的稳定性测试吗? 谢谢, 保罗
编辑 我能够使用以下代码执行cumsum测试:
len = length(array);
arraySquared = array.*array
kVector = cumsum(arraySquared);
nSquared = sum(arraySquared);
DScore = max(abs(kVector./nSquared - kVector/len))`
但我仍然不确定如何解释这个统计数据。在文献中它只是说拒绝零假设,即当D统计量为“高”时系列是静止的,但是它没有给出我用来测量置信度的D的标准cdf,比如Z得分正常分布。在我的大部分时间序列中,我得到的值从3到18不等(这是基于S& P500数据的不稳定时期)。
答案 0 :(得分:0)
时间序列的平稳性的经典统计检验以CUSUM的名义
http://en.wikipedia.org/wiki/CUSUM
(非常古老,但仍然是实际的材料)
一种相对较新但更难实现的技术被称为ICI(置信区间的交集),我在一年多前的学校里使用它。您可以通过此谷歌搜索找到相关论文:
最简单的算法在于获取您的时间序列片段(例如前100个样本),估计均值和方差,以便能够以已知置信度修复上限阈值和下限阈值。然后,如果它位于您的边界之间,您可以说时间序列是静止的。显然,这种技术引入了假阴性的概率(当变化的实体太小而位于边界之间时)
CUSUM基于对时间序列值进行“运行平均”的想法,但具有缩短检测延迟的额外优势(处理运行平均值和滑动窗口时的另一个已知问题)