比较噪声数据序列以估计它们由相同马尔可夫过程的不同实例产生的可能性

机器算法验证 时间序列 马尔科夫过程 拟合优度
2022-03-25 18:19:12

(在某种程度上受到 Shane 和 Srikant 已经给出的答案的启发,我重写了这篇文章以试图澄清我的意思,即使只是对我自己而言。)

假设我们有几个类似的系统,每个系统的行为都近似于连续时间马尔可夫过程。也就是说,系统可能处于一定数量的离散状态,以及在任何时刻从一种状态转换到另一种状态的相关概率,这完全取决于当前状态。现在,考虑过程是平稳的,即转移概率不随时间变化,并且不受季节性或其他外部因素的影响。

不幸的是,我们不能直接测量任何系统的状态,而是必须测量一个代理量,它随状态而变化,但不是离散的,并且会受到各种噪声和误差源的影响。

主要问题是这样的:

Q1:给定两个这样的系统独立产生的两个数据序列,我们如何确定底层马尔可夫过程是否相同?

现在,解决这个问题的最佳方法可能是两个单独的问题:

  1. 将不完美的代理序列转换为(分类)状态的理想化时间序列
  2. 判断状态序列是否对应

另一方面,这种分离可能涉及从步骤 1 中的数据中丢弃一些在步骤 2 中有用的信息(例如,关于其可变性)。这会导致:

Q2:这样分解问题有意义还是直接比较代理数据更好?

如果这样的分解确实有意义,那么就会引发另一个关于如何进行理想化的问题,但这绝对是另一天的问题。

Shane 在下面提到了拟合优度和分布测试,例如 Anderson-Darling,这似乎是一种很有前途的方法。但我想检查一下我是否正确理解了这个想法。

给定序列中有足够的样本,我们预计在每个状态中花费的时间比例趋于平稳分布。因此,可以测试两个序列中的占用分布的相似性。(我有一种模糊的感觉,两个样本的 Kolmogorov-Smirnov 可能适合这个,但请让我正确看待这一点。)

问题是,我不确定这作为证据有多好。如果分布非常不同,这似乎是对底层流程相同的合理打击,但如果它们非常相似怎么办?我们可以在这个方向上得出结论吗?

Q3:良好的入住分布是否能告诉我们任何有用的信息?

似乎可能有无数个进程趋向于相同的平稳分布。认为这在实践中不太可能发生,而且不同的系统往往会有明显不同的行为,但仍然值得考虑。

最后,我们通常会有一个我们正在寻找的底层过程的模型,尽管它可能并不完美。所以我们可以将每个序列与模型的预期行为进行比较,而不是相互比较。我们也可能有两个以上的序列要测试。

Q4:将多个序列与单个模型(甚至是近似模型)进行比较更好,还是直接比较数据更好?

2个回答

您也许可以使用隐马尔可夫模型(HMM)。我知道有一个 R 包可以估计 HMM,但现在不记得它的名字了。

一些想法:

  1. 你不能只使用拟合优度检验吗?选择一个分布并比较两个样本。或者使用qqplot。您可能希望使用返回(即更改)而不是原始系列来执行此操作,因为这通常更容易建模。还有相对的分布函数(例如,参见reldist 包)。
  2. 您可以查看这两个系列是否是协整的(使用 Johansen 检验)。这在urca 包(和相关书籍)中可用。
  3. 有许多多元时间序列模型(例如VAR )可用于对依赖项进行建模(请参阅vars 包)。
  4. 您可以尝试使用copula,它用于依赖建模,在copula 包中可用。

如果噪声是严重问题,则在分析数据之前尝试对数据使用过滤器。