首页 > 编程知识 正文

简述时间序列的平稳性(时间序列分析模型实例)

时间:2023-05-04 21:10:31 阅读:88978 作者:1790

本文从一位数据科学家的书中翻页,希望探讨作为数据科学界建模过程的一部分而实施的重要壁垒——定义独立于模型性能的模型的稳定性。

随着大数据的兴起,可用于对特定问题建模的变量数量呈指数级增长。 例如,用于识别歌曲和电影的模型不再只使用以前看过的电影和喜欢的歌曲等公共变量。 一天的时间、天气、历史、潜在的感情、喜欢却不爱听的歌曲等,现在可以包含一系列让用户轮廓更加动态的指标。 这个名单可能会永久增加,甚至增加。 每天我们拥有的数据量最少,但我们拥有的数据量前所未有。 每天都可以看到更多的关联性。 既有因果关系,也有非因果关系。

如何知道使用哪个变量,忽略哪个变量? 如果某个变量对预测一个用户的行为很重要,但对另一个用户的行为影响不大,该怎么办?

幸运的是,数据科学提出了定义模型稳定性的想法。 这是定义模型性能的另一种方法,但并不完全依赖于预测精度。 “稳定性”是一个流动的术语,其含义更一般地说是衡量模型如何学习(稳定性),而不是根据手头的模型学习什么(正确性)。 为了控制精度,选择更“稳定”的模型——,可以适用于许多用户,希望一致地识别相关的变量集,维持变量相关性的有序性。

总之,我想在两个非常准确的模型之间选择一个更普遍适用的模型,一个即使稍微改变事情也不会失控的模型。

例如,证券价格高度波动可能会导致复杂、准确、实用的高频交易算法失控。 因为这么多,纳斯达克为了停止交易不得不实施断路器。 如果发生了这样的事件,那就已经是了。 最近的爆炸发生在2020年3月9日。 虽然断路器由于许多因素而被激活,但事实上,在达到一定的阈值后,模型无法做出准确或稳定的决策。 因此,当数据科学意识到要分离稳定性和准确性时,我们想知道在考虑准确性和稳定性的同时,计量经济学是否应该积极构建模型。 如果那样的话,该怎么定义稳定呢?

一旦开始定义稳定性,它就会变得越来越精细。 许多机器学习模型使用k-fold或n-fold交集验证来测量稳定性或选定的变量。 这些方法可以很容易地应用于计量经济学建模。 但是,由于计量经济学主要在“频率”领域工作,即用于训练模型的数据具有时间关系,因此有必要更仔细地研究如何在这个新的变量空间中定义稳定性。

首先,与k/n折交叉验证不同,不能在不失去时间关系的情况下随机对数据进行子集化。 我们用于预测的模型通常依赖于时间t的值可能与其延迟{t-1,t-2,…,t-n}有因果关系的假设。 另外,通过确定对这些时间关系进行建模的方法,用不同的时间序列结构表示了——ARIMAX、指数状态空间、cmdfbx表达、放射状基底表达等。 各自的利用时间关系略有不同。 这意味着学习机制(稳定性)无法用通用的交叉验证技术来衡量。

为了本论文的目的,想关注时间表示——AR结构和r语言中函数“auto.arima”中隐含的算法的稳定性。 此函数是forecast软件包的一部分。 希望读者思考一下如何最好地定义我提到的其他结构的稳定性。

ARMA过程可以表示如下:

x和Epsilon的各迟滞系数可以使用信息标准(AIC )进行校正,该标准本质上减少错误(提高准确性)。 但是,AIC中没有结构稳定性的信息,只评价模型在保持训练数据信息方面的效率。

如果AIC是系数值和滞后的选择标准,也许可以研究ARMA模型的稳定性。

1 .分配给各滞后系数值——的正确稳定的模型应该能够计算出正确的系数。 之后,每次添加另一个数据点进行培训时都这样做。

2 .我们对数据进行随机扰动时的模型反应——通过加入来自与我们训练数据不同群体的数据,tric k模型是稳定的模型,理想的是即使牺牲正确性也不会轻易被欺骗; 相反,不要试图预测冲击。

稳定性测量的另一个重要特征是所有测量都必须在同一样本数据的子集上进行。 考虑到我们数据的时间性质,我们必须稍微改变这些技术以保留我们模型的时间信息。 一个解决方案是使用滚动验证。 通常用它来测量样本外预测的正确性,但在这里也可以使用同样的机制; 只是机器在工作中测量不同的指标。

我们可以很容易地模拟AR过程。 事先知道滞后系数是什么。 然后,使用滚动验证方法训练auto.arima算法,确认auto.arima算法获取正确滞后和系数的速度和频率。 如果将AR过程可视化,则如下所示。

上述过程有4个滞后现象,系数向量分别为{0.7、-0.2、

0.5,-0.8},长度为 1,000 个周期。滚动验证/训练从 n=20 开始,以下是每次迭代计算的系数的表示。至少对于这个模拟数据集,auto.arima 算法需要大约 400 个数据点来接近数值稳定且准确的系数解(图 1)。但请注意,即使模型非常不稳定的前 200 个数据点,校准模型的样本外精度也与后面的数据点相当(图 2);唯一的区别是,后来校准的模型对于为算法进行训练而添加的每个新数据点都更加稳健。

为了进一步强调准确性与稳定性——时间序列预测中的另一个常见问题是训练数据包含随机不连续性,这些不连续性不一定遵循与时间序列本身相同的潜在动态。通常,如果我们能够准确识别这些冲击,我们会寻求从训练数据中完全删除数据点或选择平滑它们以减少其对模型的偏差。

但是,如果我们能够衡量我们的方法/算法的稳健性,我们就可以在对原始数据进行建模之前对应该修改原始数据或对其进行工程设计的程度做出更明智的选择。这并不是说特征工程是一种无效的建模方法,而是必须停下来反思它是帮助我们改进模型还是只是使模型复杂化。在我看来,不应该用简约来换取复杂的声音模型,这些模型对我们从中得出的见解几乎没有改进。

为了测试 auto.arima 的稳定性,我们希望通过添加与我们希望预测的数据来自不同分布的随机冲击来稍微扰乱数据。我们知道,对于这个数据集,auto.arima 在大约 400 个数据点上达到了稳定性;我们可以在同一时间序列的扰动版本上运行滚动验证,看看它与未扰动的对等系列相比如何。请参阅下面的相同时间序列,有随机不连续性:

下面是 auto.arima 的准确性与我们数据的先前未受干扰版本的比较(黄线显示添加不连续性的位置):

很容易看出,当我们随机冲击训练数据时,预测算法实际上变得相对不准确。人们往往忘记的是,虽然稳定性可能与准确性无关,但它直接影响准确性。为这个新数据集计算的系数见下文:

图例显示了我们知道模型在未受干扰的数据中准确收敛的真实系数值。但是,当随机冲击相同的数据时,它会完全将系数值从红线中明显地剔除。对数据的一些不相关冲击完全改变了估计的模型表示。一个稳定的算法不应受到未经证实的数据冲击的太大影响。

有趣的是,该算法不稳定,因此在计算系数方面都不准确——AR1、AR2、AR3 和 AR4 值与原始数据集以及计算的系数数量非常不同——原始数据没有有 MA1 或 MA2 项,算法错误地为我们的扰动数据集分配了非零值。如果 auto.arima 选择了错误的模型表示(系数),那么与具有未受干扰数据的模型相比,通过构建使用这些系数产生的预测将进一步偏离实际值。

我希望读者停下来想一想上面的结果——zgdxh完成一个前进行练习,软件会输出结果,你认为你的算法向你展示了哪些值——黑线还是红线?由于我们只看到最终值而不是它如何收敛到它,稳定性的细微差别就消失了。您的回答将决定您需要采取哪些特征工程步骤,以确保您对计量经济学过程进行了负责任的建模。

在这种情况下,auto.arima 牺牲了稳定性和准确性。不幸的是,根据我的经验,从准确性中打破稳定性并不是传统计量经济学工作流程的一部分。如果我们将准确性和稳定性作为原始数据和处理过的数据的两个不同指标来衡量,那么我们就能够就是否应该对原始数据进行工程设计做出更明智的决定。有许多设计方法可以减少单个测量的偏差,甚至还有更多算法可供选择以进行预测;我们必须有一个一致且严格的框架来帮助我们选择每个框架。

请记住,本文只是触及了衡量计量经济学稳定性的皮毛,但我们已经能够为许多通常基于“受过教育的”猜测或更糟的预感的建模决策提供足够且务实的支持。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。