前向滤波后向采样 (FFBS) 和前瞻偏差

机器算法验证 时间序列 贝叶斯 蒙特卡洛 状态空间模型 线性动力系统
2022-03-21 12:50:18

假设/背景:假设我有可以建模为动态线性模型的数据。为了估计参数(例如,状态/系统方程的协方差矩阵),我使用吉布斯采样或其他马尔可夫链蒙特卡罗程序。

问题:问题在于,为了使用 Gibbs 采样器,我使用了 FFBS 算法,该算法使用了数据系列的整个历史。因此,如果我想测试我的模型过去预测的准确性,我将使用一个装有未来数据的模型。因此,我可能计算的性能度量存在前瞻偏差(例如,残差的均方误差)。

我最初的虽然肯定是劣等的想法:假设我有“时间点”数据(例如,我知道数据过去何时可供建模者使用),“蛮力”方法是使用估计模型的参数从周期的数据并预测观察变量并对所有重复此过程。因此,如果我有一个包含 80 个观察值的单变量时间序列,我将需要重复此过程 79 次(第一次用于周期的数据,第二次用于周期的数据,第三次用于周期1t1yttTt=1t=1:2t=1:3, 等等)。对于这个时间序列,我将有 79 个不同的模型。然后,我将的预测的残差来计算一些性能度量(例如, Theil's U ) 。yt

问题: 1)我对 FFBS 算法产生的前瞻偏差是否不正确?2)有人知道使用贝叶斯技术有效估计状态空间时间序列模型的方法吗?

2个回答

这个问题有点老了,但也许它仍然相关。据我了解您的问题,如果您有数据,并且正在尝试预测未来的观察结果,那么如果您使用整个数据来“预测”事实上,你在那里做的是平滑,而不是预测。与其他 ML 任务一样,选择给定数量的训练观察,然后预测(根据需要在未来尽可能远)并评估性能。在我看来,你的设置是这样做的:通过滑动你'Tytt<TTlearn<TyTlearn+kTlearn

因此,我不认为 FFBS 具有内在的“前瞻性偏差”。这仅取决于您如何使用它。我认为带有 Gibbs 抽样的 MCMC 应该可以很好地估计你的模型。

如果您估计的参数不随时间变化,您可以将观察到的时间序列分成两个系列,上应用 MCMC ,以便从参数的后验分布中进行采样。之后,您可以将参数固定在后验的某个估计值上,例如后验均值或最大值,并评估上的预测。y1:Ty1:kyk+1:Ty1:kyk+1:T