为什么ARIMA不能预测未来的时间序列收盘价?
我真的希望有人能解释一下,当使用ARIMA进行时间序列预测时,什么是什么!
当我使用ARIMA和这个设置时:
请见图片。
我使用了一个巨大的窗口大小,这样我就可以看到在过去的几个月里发生了什么。没有放大图表吗?
一开始我以为我是在训练数据的窗口大小,然后测试看不见的数据(我有20年的道琼斯开盘价/高点/低点/收盘加上2000 - 2020年的技术指标)。原因是,当我设置一个非常高的窗口大小,比如4500天(大约18年的数据),我只能看到从2018年到现在2年的图表结果(我假设这是测试数据),而如果我的窗口大小只有60天,我可以看到2000年到2020年的整个图表。
但是…所有的相对误差数字都很小,比如1或2%,这太好了,不可能是真的,对吧?我假设这是因为我在一个子集的数据上训练和测试相同的数据(因为它滚动使用我的窗口大小和步长值设置)?
我的问题是:
1)如何在两个不同的数据集上进行ARIMA测试?一个见过,一个没见过,没受过训练?使用交叉验证操作符?如果这是我需要的操作员,我如何确保ARIMA训练特定的日期范围,以便我可以使它包括平静、低波动期和高度波动期,如covid - 19期间?
2)对未经训练的数据进行ARIMA检验?
3)我希望培训期是不固定的,覆盖前75%的数据集(2000年至2015年)?
最后,
4)我如何让ARIMA提前2天(或5天或10天)预测未来我在Excel中的最后一个日期或一行数据那将是8月3日,明天晚上我将用雅虎财务数据更新我的Excel。也就是说,ARIMA将预测8月4日和5日及以后的收盘价?
我已经尝试过许多窗口大小组合,但相对误差低一定是因为我提出的一点,即没有在未看到的数据上进行测试。
即使使用只有10天窗口大小的ARIMA,它也不能对未来做出预测。
我希望那些对金融时间序列预测感兴趣的人能理解这些问题!
非常感谢,
答案
德国多特蒙德
我仍然不确定与ARIMA有关的测试、培训和验证(后者我甚至不知道我在做),我仍然不明白Qu的1、2和3的答案是什么?
“整个验证”——我的过程的哪一部分是“验证”?我以为我只是在整个数据集上训练和测试这就是为什么我得到了惊人的低相对误差统计数据吗?
“如果你想进行预测,你需要在新的数据集上对ARIMA进行‘再训练’。”请问我该怎么做?
非常感谢任何建议,因为我认为这将是一个更简单的,但说实话,我发现在RM(在右边)的帮助对初学者来说很难理解,尽管有4年的算法交易经验!这就像是Help在和那些已经了解一切的人交谈。
欢呼,
最好的
天空交易员
在训练集上训练数据集,在看不见的测试集上测试模型,这通常称为验证。这对于“普通”机器学习应用和时间序列问题都是正确的。leyu体育是真的吗有一些区别,一个重要的区别是训练集和测试集是如何设置的。在一个“正常”的机器学习用例leyu体育是真的吗中,你使用交叉验证的大部分时间,对于一个时间序列问题,你想使用滑动窗口验证。之后由预测验证操作员实现。
因此,您的初始设置对于验证(在不可见的数据上测试模型的性能)已经是正确的。关于你的问题:
1)预测验证操作符直接在“训练”子流程(内部流程的左侧)中训练预测模型(在您的例子中是ARIMA)。然后,这个预测模型用于预测“测试”子流程中的测试窗口,并计算一个性能度量(在您的案例中是由performance操作员)。Forecast Validation操作符的重要输出是模型和最终模型的评估性能,该模型是根据整个输入数据进行训练的。
2)参见1),预测验证操作符自动执行此操作
3)设置窗口大小为输入数据的75%。目前,窗口大小只能在若干示例中配置
4)使用预测验证操作的最终模型(顶部输出端口),并将其连接到预测验证操作之外的应用预测操作。请注意,在你的第二篇文章的截图中,你显然没有连接Apply Forecast操作符。操作符只是放在线路的顶端,线路本身是不连接的
希望这有助于
最好的问候,
费边
PS:我建议浏览产品内部教程(点击欢迎面板中的“学习”选项卡),以熟悉RapidMiner和数据科学的概念。乐鱼体育官方app虽然它不是精确地指向时间序列,但它有助于熟悉产品
pp。:当你试图弄清楚操作员是如何工作的时候,你也可以在操作员帮助的最后查看教程过程
再次感谢您使用ARIMA提供的帮助。我对日期和结果有几个问题。(它看起来很多,但我刚刚添加了很多图片来帮助)。
我的道琼斯指数数据和指标涵盖2000年至2020年7月29日。我有一个预测验证设置为窗口大小= 250,步骤= 20天,地平线= 5天。
我想知道为什么预测验证结果总是在最上面的行中包含2020年5天的测试日期,然后从那里开始给出2000年的结果?请见图片(s)。
我的数据开始于2000年1月,但作为一个实验(因为步长与月值更好),当我设置窗口大小= 5000(我有5177行/日期),步骤= 1天和地平线= 2,在示例设置的第一个日期“应用预测”是2000年9月11日。为什么它从2000年9月开始,而不是在第一个日期(2000年1月3日)之后的一天,2000年1月4日(步长为1)?
我的Window 250、Step =1和Horizon = 20的“预测验证”结果显示了截至2020年8月28日的测试结果:
但我的“应用预测”图表只显示了截至2020年7月10日的数据:
在我的“应用预测”图表中,我希望在2020年8月28日之前看到一条绿色的未来预测线。
所以,最后,我该如何绘制2020年8月的未来值(你可以在这个图表的最后看到一个小的绿色预测7月9日/ 10日),为什么它只是一条绿色的平线,没有显示单个日期-我期待一个锯齿状的图,像我的蓝色结束线?
我实际上决定检查为什么上述发生和运行窗口250和步骤=1,但现在有一个大的50天地平线而不是20天-现在我得到(正确的)反向事情发生,因为我现在有一个正确的“应用预测”数据表和图表(尽管是平滑的平绿线),显示2020年10月15日的未来值和我的“预测验证”结束于2020年7月4日。
所以我不确定为什么我的“应用预测”在前一种情况下,地平线= 20,没有显示任何东西后7月20日?我还有一个很厚的“应用预测”图表?
玩弄不同的ARIMA窗口大小等,我也注意到我的预测现在非常相似?
非常感谢,任何帮助不胜感激!
欢呼,
我试着简短地回答这些问题:
预测验证通常是并行执行的,因此测试结果的顺序取决于首先执行哪个窗口(这是内部处理)。您可以禁用并行执行,也可以在并行执行之后添加Sort操作符
-应用预测操作符的结果示例集开始于用于训练预测模型的输入时间序列数据的开始(如果您启用了相应的参数),或者它只保存预测值。所以在你的案例中,提供给应用预测操作员的模型是根据九月份开始的数据训练的。您可以在操作符之前和之后插入断点(右键单击操作符),以详细了解它可能与您预期的行为不同的地方
-我已经在另一篇关于间隙的帖子上添加了一个答案
-当你使用Apply Forecast时,它显然没有对训练数据的预测(缺失值),它也没有对预测值(未来)的真实值。当您使用Forecast Validation时,测试窗口包含预测值和测试窗口的真实值,但是这与使用Apply Forecast来预测未来未知的值是不同的情况
-大多数屏幕截图显示了应用预测操作的结果。该操作符所预测的值的数量是由Apply Forecast操作符的相应参数定义的
-预测模型试图根据过去的数值预测未来。最好的预测可能只是一条平线,因为数据中没有适当的模式,而输入数据中的“之字形”只是无法预测的噪声。
您可以尝试进行优化,为ARIMA模型找到最佳参数设置,以获得“最佳”预测(根据您在验证中使用的性能度量)
最好的问候,
费边
我的地平线已经固定在20(尝试和复制第一个ARIMA应用预测连续每天的结果在8月)。步长为1。
在预测验证中,关闭并行执行仍然会先提到2020年的数据,然后是2005年的数据。我使用了5200行数据(2000到2020年)的75%,也就是3900行——窗口大小和步长为1。为什么预测验证会从2005年开始产生结果(在它仍然是先复制2020年数据的顶部行),当然我是在2000年到2015年(75%的数据),预测验证应该从2015年开始?
我很困惑,为什么使用我的窗口和步长大小的许多标准组合(但地平线总是在20),我不能让它像我上周第一次开始使用ARIMA时那样连续地重现应用预测结果,并且产生的结果没有每3天跳过,即使我已经测试了它,并在相同的数据集上运行ARIMA模型(最后日期2020年7月29日)?
将Step从1更改为100,然后我尝试使用Sort操作符,这并没有解决首先在预测验证结果顶部看到2020数据的问题,所以我删除了Sort返回到Step Size 1,并再次运行它,现在它显示从2015年开始的预测验证(尽管2020结果仍然在顶部),而不是2005年,所以……我想知道为什么改变步骤从1到100和回到1,它现在产生正确的结果从2015年起?
"Apply Forecast操作符的结果示例集从输入时间序列数据的开始处开始(如果您启用了相应的参数)用来训练预测模型,"
请问是哪个参数?
" 使用“预测验证”时,测试窗口包含测试窗口的预测值和真实值,但这与使用应用预测来预测未来的未知值是不同的。”
我对使用应用预测得到那些未来的预测很感兴趣,为什么窗口在3900,步骤在1和地平线在20(试图复制第一个ARIMA应用预测连续每天的结果在8月)我永远不能得到应用预测超过7月20日?我要20天内的结果从2020年7月29日起。Step 1应该能适应它,不是吗?我遗漏了什么?
"您看到的大多数屏幕截图都显示了Apply Forecast操作符的结果。这个操作符的预测值的数量是由应用预测操作符的相应参数定义的
综上所述,我已经将应用预测设定为20,我仍然不清楚为什么它没有给出从我的数据结束(2020年7月29日)到2020年8月的这些值?我希望我写下窗口和步长,当我得到它给出一个完美的每日预测,从8月的上周开始连续的天…
我查看了美国消费数据上的样本/时间序列/模板/自动化arima中的自动arima。
我添加了一个优化网格操作符,但不明白为什么操作符参数字段是无响应或如何使用向导?请见图片:
再次感谢您的参与。
最好的
天空交易员。
当您正确配置Sort操作符(通过在相应的Date属性之后排序)时,不会出现2020数据出现在顶部的情况,因此必须由您自己进行错误配置。
正如我已经说过的,窗口总是基于示例的数量。你可以自己数。也许你可以自己画一个例子,以便更好地理解窗口的工作方式。如果您对窗口有更好的理解,您就会发现窗口是如何处理您的数据的,以及窗口大小和步长的哪种组合会产生什么效果。
(断点有助于理解具体步骤,因为您可以直接看到步骤前后的数据)
老实说,应用预测中有3个参数。一种控制预测长度,另一种称为“原始时间序列相加”和“合并时间序列相加”。它们甚至在帮助文本中被描述。
正如我所说的,预测验证的配置对未来的预测值没有影响。它只是用来评估预测模型的性能。
应用预测操作符使用的预测模型使用整个输入数据作为训练数据(如帮助文本中描述的那样)。所以预测值之间的时间差是基于输入时间序列中最后两个值的时间差。预测示例的数量基于预测长度参数。
你在优化参数操作符里面放了什么东西吗?请查看操作符的帮助文本和教程过程。
一般来说,我建议浏览产品教程(在RapidMiner开始的欢迎对话框中的“学习”选项卡)
请详细研究操作符的帮助文本和教程过程。
最好的问候,
费边
干杯,是的,我知道应用预测中的参数和它们的作用。我更喜欢只勾选第一个框(添加orig时间序列),并离开第二个未勾选为一个更干净的结果表。
我熟悉的窗口,我通常使用每周,每月或季度的步长,基于交易公司如对冲基金和EFT的将如何改变他们的股票投资组合,如在季度业绩衡量后。
“预测地平线”似乎不言自明。我在我的算法交易中多次使用Walk Forward优化,它使用了类似的概念,并允许锚定(最佳)或非锚定的数据优化。
“应用预测操作员使用的预测模型,使用整个输入数据作为训练数据(就像帮助文本中描述的那样)。”
“使用整个输入数据”:
但是窗口大小不就是将数据集分为训练和测试大小的原因吗?
(拥有至少一半的数据似乎是明智的,而且最好能够涵盖不同的市场机制(波动期、非波动期、趋势期、非趋势期)。这些季度的时间描述和步长与周末“错过”的日期有多准确,我仍在研究)。
“所以预测值之间的时间差只是基于输入时间序列中最后两个值的时间差。"
对,这是两个输入之间有3天的问题,因此最终跳过了日期预测,如2020年8月1日、4日、7日等。
也许我在这里再次错过了一点,但是(取决于Step的大小,所以最好有一个像1或5这样的值),如果数据结束于7月29日,应用预测地平线是20天,Step是小的,然后在8月进行未来的预测。
这就是为什么上周我以为我已经把ARIMA模型的所有东西都整理好了,直到我回到它,并不能复制那些未来连续8月份的预测使用无数的窗口和步长值(请参阅我的另一篇文章)。
好的,我会再看一看断点,但我仍然觉得有些东西工作不正确(我的设置),这是让我如此困惑的原因,因为正如你所说,ARIMA没有很多参数需要修改。
"你在优化参数操作符里面放了什么东西吗?"
我还没有做到那一步,因为正如上面提到的,我不知道如何让向导工作。
最好的问候,
天空交易员。