2

我想知道测试时间序列模型的好方法是什么。假设我在时域 t1,t2,...tN 中有一个时间序列。我有输入,比如 zt1、zt2、...ztN 和输出 x1、x2...xN。

现在,如果这是一个经典的数据挖掘问题,我可以使用已知的方法,如交叉验证、留一法、70-30 或其他方法。

但是我应该如何解决用时间序列测试我的模型的问题呢?我应该在第一个 t1,t2,...t(Nk) 输入上构建模型并在最后 k 个输入上进行测试吗?但是,如果我们想要最大化提前 p 步而不是 k(其中 p < k)的预测怎么办。我正在寻找一个可以应用于我的具体案例的强大解决方案。

4

2 回答 2

3

听起来你可以选择

  1. 使用最初几年的数据创建模型,然后查看它对剩余年份的预测效果如何。

  2. 将所有年份的数据用于输入条件的某个子集,然后查看使用剩余输入条件的预测效果如何。

于 2011-01-24T17:10:30.380 回答
3

使用时间序列拟合,您需要注意在开发模型之前不要使用样本外数据。建模的主要问题是它很容易过拟合。

通常我们所做的是将 70% 用于样本内建模,30% 用于样本外测试/验证。当我们在生产中使用该模型时,我们每天收集的数据就变成了真实的样本外数据:您从未见过或使用过的数据。

现在,如果您有足够的数据点,我建议您尝试滚动窗口拟合方法。对于样本中的每个时间步,您回顾 N 个时间步以拟合您的模型,并查看模型中的参数如何随时间变化。例如,假设您的模型是 Y = B0 + B1*X1 + B2*X2 的线性回归。您将对样本进行回归 N - window_size 时间。通过这种方式,您可以了解您的 Beta 对时间等因素的敏感程度。

于 2011-01-24T19:45:08.087 回答