我想构建一个能够分析任何时间序列并“自动”为分析的时间序列数据选择最佳传统/统计预测方法(及其参数)的算法。
有可能做这样的事情吗?如果是的话,你能给我一些关于如何解决这个问题的提示吗?
我想构建一个能够分析任何时间序列并“自动”为分析的时间序列数据选择最佳传统/统计预测方法(及其参数)的算法。
有可能做这样的事情吗?如果是的话,你能给我一些关于如何解决这个问题的提示吗?
首先,您需要注意,IrishStat 概述的方法特定于 ARIMA 模型,而不是任何通用模型集。
要回答您的主要问题“是否可以自动化时间序列预测?”:
是的。在我的需求预测领域,大多数商业预测包都是这样做的。几个开源包也这样做,最值得注意的是 Rob Hyndman 的 auto.arima()(自动 ARIMA 预测)和 ETS()(自动指数平滑预测)函数,来自 R 中的开源 Forecast 包,有关这两个函数的详细信息,请参见此处. 还有一个名为Pyramid的 auto.arima 的 Python 实现,尽管根据我的经验,它不如 R 包成熟。
我提到的商业产品和我提到的开源软件包都是基于使用信息标准来选择最佳预测的想法:你拟合一堆模型,然后选择 AIC、BIC、AICc 最低的模型,等等......(通常这是代替样本外验证)。
然而,有一个重要的警告:所有这些方法都在一个模型系列中工作。他们在一组 ARIMA 模型中选择最好的模型,或者在一组指数平滑模型中选择最好的模型。
如果您想从不同的模型系列中进行选择,这样做更具挑战性,例如,如果您想从 ARIMA、指数平滑和 Theta 方法中选择最佳模型。理论上,您可以像在单个模型系列中那样做,即使用信息标准。但是在实践中,您需要以完全相同的方式对所有考虑的模型计算 AIC 或 BIC,这是一个重大挑战。使用时间序列交叉验证或样本外验证而不是信息标准可能会更好,但这将更加计算密集(并且编码繁琐)。
Facebook 的 Prophet 软件包还可以根据通用加法模型自动生成预测,详情请参见此处。然而 Prophet 只适合一个模型,尽管它是一个非常灵活的模型,具有许多参数。Prophet 的隐含假设是 GAM 是“统治所有这些的唯一模型”,这在理论上可能不合理,但对于现实世界的场景非常实用和有用。
另一个适用于上述所有方法的警告:大概您想要进行自动时间序列预测,因为您想要预测多个时间序列,太多而无法手动分析。否则,您可以自己进行实验并自己找到最佳模型。您需要记住,自动预测方法永远不会为每个时间序列找到最佳模型 - 它会在所有时间序列上平均给出一个相当好的模型,但仍然有可能一些这些时间序列中的一些将具有比自动方法选择的模型更好的模型。看到这个帖子举个例子。简而言之,如果您要使用自动预测 - 您将不得不容忍“足够好”的预测,而不是每个时间序列的最佳预测。
我建议的方法包含比 ARIMA 更通用的模型,因为它们包括可能随时间变化的季节性虚拟变量、多个级别、多个趋势、可能随时间变化的参数,甚至可能随时间变化的误差方差。该系列更准确地称为 ARMAX 模型,但为了完全透明,确实排除了具有乘法结构的(罕见)变体。
您要求提供提示,我相信这可能是您入门的好方法。
我建议您编写代码来遵循/模拟此流程图/工作流程。通过评估您指定的标准可以找到“最佳模型”......它可以是拟合数据的 MSE/AIC,也可以是保留数据的 MAPE/SMAPE 或您选择的任何标准。
请注意,如果您不了解时间序列分析的某些特定要求/目标/约束,每个步骤的细节可能非常简单,但如果您有更深入的了解,它可能(应该!)更复杂/学习/欣赏全面时间序列分析中存在的复杂性/机会。
我被要求提供关于如何自动化时间序列建模(或一般建模)的进一步指导https://stats.stackexchange.com/search?q=peeling+an+onion包含我的一些指导“剥洋葱”和相关任务。
AUTOBOX 实际上详细并显示了中间步骤,因为它形成了一个有用的模型,并且可以成为这方面的有用老师。整个科学思想是“添加似乎需要的东西”和“删除似乎没有用的东西”。这是早期 Box 和 Bacon 提出的迭代过程。
模型需要足够复杂(足够花哨)但又不能太复杂(花哨)。假设简单的方法可以解决复杂的问题,这与罗杰培根和培根的大量追随者的科学方法不一致。正如罗杰·培根(Roger Bacon)曾经说过和我经常解释的那样:做科学就是寻找重复的模式。检测异常就是识别不遵循重复模式的值。因为谁知道自然的方式,谁就会更容易注意到她的偏差,另一方面,谁知道她的偏差,谁就会更准确地描述她的方式。人们通过观察当前规则何时失败来学习规则。在培根精神中,通过识别当前确定的“最佳模型/理论”何时不足,然后可以迭代到“更好的表示”
用我的话来说,“Tukey 提出了探索性数据分析 (EDA),它提出了基于数据建议的明显模型缺陷的模型改进方案”。这是 AUTOBOX 和科学的核心。EDA 用于查看数据可以告诉我们超出正式建模或假设检验任务的内容。
自动建模程序的试金石非常简单。它是否可以在没有过度拟合的情况下分离信号和噪声?经验证据表明,这可以而且已经做到了。预测准确性通常会产生误导,因为未来不代表过去,并且取决于您选择的来源,结果可能而且确实会有所不同。