如何测试时间序列模型?

发布于 2024-10-13 12:34:03 字数 304 浏览 9 评论 0原文

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

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

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

I am wondering what the good approach for testing time series model would be. Suppose I have a time series in a time domain t1,t2,...tN. I have inputs, say, zt1, zt2,...ztN and output x1,x2...xN.

Now, if that were a classical data mining problem, I could go with known approaches like cross-validation, leave-one-out, 70-30 or something else.

But how should I approach the problem of testing my model with time series? Should I build the model on the first t1,t2,...t(N-k) inputs and test it on the last k inputs? But what if we want to maximise the prediction for p steps ahead and not k (where p < k). I am looking for a robust solution which I can apply to my specific case.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半寸时光 2024-10-20 12:34:03

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

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

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

With timeseries fitting, you need to be careful about not using your Out-of-sample data until after you've developed your model. The main problem with modelling is that it's simply easy to overfit.

Typically what we do is to use 70% for in-sample modelling, 30% of out-of-sample testing/validation. And when we use the model in production, the data we collect day-to-day becomes true-out-of-sample data : the data you have never seen or used.

Now, if you have enough data points, I'd suggest trying rolling window fitting approach. For each time step in your in-sample, you look back N time steps to fit your model and see how the parameters in your model varies over time. For example, let's say your model is linear regression with Y = B0 + B1*X1 + B2*X2. You'd do regression N - window_size time over the sample. This way, you understand how sensitive your Betas are in relation to time, among other things.

知足的幸福 2024-10-20 12:34:03

听起来您可以选择

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

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

It sounds like you have a choice between

  1. Using the first few years of data to create the model, then seeing how well it predicts the remaining years.

  2. Using all the years of data for some subset of input conditions, then seeing how well it predicts using the remaining input conditions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文