原文链接:http://tecdat.cn/?p=2831

“预测十分艰难,特地是对于将来”。丹麦物理学家尼尔斯·波尔(Neils Bohr)

很多人都会看到这句名言。预测是这篇博文的主题。在这篇文章中,咱们将介绍风行的ARIMA预测模型,以预测股票的收益,并演示应用R编程的ARIMA建模的逐渐过程。

工夫序列中的预测模型是什么?

预测波及应用其历史数据点预测变量的值,或者还能够波及在给定另一个变量的值的变动的状况下预测一个变量的变动。预测办法次要分为定性预测和定量预测。工夫序列预测属于定量预测的领域,其中统计原理和概念利用于变量的给定历史数据以预测同一变量的将来值。应用的一些工夫序列预测技术包含:

  • 自回归模型(AR)
  • 挪动均匀模型(MA)
  • 节令回归模型
  • 散布滞后模型

什么是自回归挪动均匀模型(ARIMA)?

ARIMA代表Autoregressive Integrated Moving Average。ARIMA也被称为Box-Jenkins办法。Box和Jenkins宣称,通过对系列Y t进行差分,能够使非安稳数据安稳。

ARIMA模型联合了三种根本办法:

  • 自回归(AR) - 在自回归的一个给定的工夫序列数据在他们本人的滞后值,这是由在模型中的“P”值示意回归的值。
  • 差分(I-for Integrated) - 这波及对工夫序列数据进行差分以打消趋势并将非安稳工夫序列转换为安稳工夫序列。这由模型中的“d”值示意。如果d = 1,则查看两个工夫序列条目之间的差分,如果d = 2,则查看在d = 1处取得的差分的差分,等等。
  • 挪动平均线(MA) - 模型的挪动均匀性质由“q”值示意,“q”值是误差项的滞后值的数量。

该模型称为自回归整合挪动平均值或Y t的 ARIMA(p,d,q)。咱们将依照上面列举的步骤来构建咱们的模型。

第1步:测试和确保平稳性

要应用Box-Jenkins办法对工夫序列进行建模,该系列必须是安稳的。安稳工夫序列示意没有趋势的工夫序列,其中一个具备恒定的均值和随工夫的方差,这使得预测值变得容易。

测试平稳性 -咱们应用Augmented Dickey-Fuller单位根测试测试平稳性。对于安稳的工夫序列,由ADF测试失去的p值必须小于0.05或5%。如果p值大于0.05或5%,则能够得出结论:工夫序列具备单位根,这意味着它是一个非安稳过程。

差分 -为了将非安稳过程转换为安稳过程,咱们利用差分办法。辨别工夫序列意味着找出工夫序列数据的间断值之间的差分。差分值造成新的工夫序列数据集,能够对其进行测试以发现新的相关性或其余乏味的统计个性。

咱们能够间断屡次利用差分办法,产生“一阶差分”,“二阶差分”等。

在咱们进行下一步之前,咱们利用适当的差分阶数(d)使工夫序列安稳。

第2步:辨认p和q

在此步骤中,咱们通过应用自相干函数(ACF)和偏相关函数(PACF)来确定自回归(AR)和挪动均匀(MA)过程的适当阶数。

辨认AR模型的p阶

对于AR模型,ACF将以指数形式衰减,PACF将用于辨认AR模型的阶数(p)。如果咱们在PACF上的滞后1处有一个显着峰值,那么咱们有一个1阶AR模型,即AR(1)。如果咱们在PACF上有滞后1,2和3的显着峰值,那么咱们有一个3阶AR模型,即AR(3)。

辨认MA模型的q阶

对于MA模型,PACF将以指数形式衰减,ACF图将用于辨认MA过程的阶数。如果咱们在ACF上的滞后1处有一个显着的峰值,那么咱们有一个1阶的MA模型,即MA(1)。如果咱们在ACF上的滞后1,2和3处有显着的峰值,那么咱们有一个3阶的MA模型,即MA(3)。

第3步:估算和预测

一旦咱们确定了参数(p,d,q),咱们就能够估算ARIMA模型在训练数据集上的准确性,而后应用拟合模型应用预测函数预测测试数据集的值。最初,咱们穿插查看咱们的预测值是否与理论值统一。

应用R编程构建ARIMA模型

当初,让咱们依照解释的步骤在R中构建ARIMA模型。有许多软件包可用于工夫序列剖析和预测。咱们加载相干的R包进行工夫序列剖析,并从雅虎财经中提取股票数据。

#从雅虎财经中提取数据getSymbols('TECHM.NS',from ='2012-01-01',to =''2015-01-01')#抉择相干的收盘价序列stock_prices = TECHM.NS [,4]

在下一步中,咱们计算股票的对数收益,因为咱们心愿ARIMA模型预测对数收益而不是股票价格。咱们还应用绘图函数绘制了对数收益序列。

#计算股票 一阶差分stock = diff(log(stock_prices),lag = 1)plot(stock,type ='l',main ='log return plot')

接下来,咱们对收益序列数据调用ADF测试以查看平稳性。来自ADF测试的p值为0.01通知咱们该序列是安稳的。如果序列是非安稳的,咱们首先会对回归序列进行差分,使其序列安稳。

在下一步中,咱们将数据集拆分为两局部 - 训练和测试

acf.stock = acf(stock [c(1:breakpoint),],main ='ACF Plot',lag.max = 100) 

咱们能够察看这些图并得出自回归(AR)阶数和挪动均匀(MA)阶数。

咱们晓得,对于AR模型,ACF将呈指数衰减,PACF图将用于辨认AR模型的阶数(p)。对于MA模型,PACF将以指数形式衰减,ACF图将用于辨认MA模型的阶数(q)。从这些图中咱们抉择AR 阶数 = 2和MA 阶数 = 2.因而,咱们的ARIMA参数将是(2,0,2)。

咱们的指标是从断点开始预测整个收益序列。咱们将在R中应用For循环语句,在此循环中,咱们预测测试数据集中每个数据点的收益值。

在上面给出的代码中,咱们首先初始化一个序列,它将存储理论的收益,另一个系列来存储预测的收益。在For循环中,咱们首先依据动静宰割点划分训练数据集和测试数据集。

咱们在训练数据集上调用arima函数,其指定的阶数为(2,0,2)。咱们应用这个拟合模型通过应用forecast.Arima函数来预测下一个数据点。该性能设置为99%置信水平。能够应用置信度参数来加强模型。咱们将应用模型中的预测点估计。预测函数中的“h”参数示意咱们要预测的值的数量。

咱们能够应用摘要性能确认ARIMA模型的后果在可承受的范畴内。在最初一部分中,咱们将每个预测收益和理论收益别离附加到预测收益序列和理论收益序列。

 #初始化理论对数收益率的xts对象 Actual_series = xts(0,as.Date("2014-11-25","%Y-%m-%d")) #初始化预测收益序列的数据 fit = arima(stock_train,order = c(2,0,2),include.mean = FALSE) #绘制残差的acf图 acf(fit$ residuals,main ="Residuals plot") arima.forecast = forecast.Arima(fit,h = 1,level = 99) #绘制预测 #为预测期创立一系列预测收益 forecasted_series = rbind(forecasted_series,arima.forecast $ mean [1]) #为预测期创立一系列理论收益 Actual_series = c(Actual_series,xts(Actual_return)) RM(Actual_return) 

在咱们转到代码的最初局部之前,让咱们从测试数据集中查看ARIMA模型的后果以获取样本数据点。

从失去的系数,收益方程可写为:

Y t = 0.6072 Y (t-1) -0.8818 Y (t-2) -0.5447 (t-1)+0.8972 (t-2)

系数给出了标准误差,这须要在可承受的范畴内。Akaike信息规范(AIC)评分是ARIMA模型准确性的良好指标。模型更好地升高AIC得分。咱们还能够查看残差的ACF图; 良好的ARIMA模型的自相关性将低于阈值限度。预测的点收益为-0.001326978,在输入的最初一行中给出。

让咱们通过比拟预测回报与理论回报来查看ARIMA模型的准确性。代码的最初一部分计算此准确性信息。

#调整理论收益率序列的长度 Actual_series = Actual_series [-1] #创立预测序列的工夫序列对象 forecasted_series = xts(forecasted_series,index(Actual_series)) #创立两个回归系列的图 - 理论与预测 #创立一个表格,用于预测的准确性 comparsion = merge(Actual_series,forecasted_series) comparsion $ Accuracy = sign(comparsion $ Actual_series)== sign(comparsion $ Precasted) #计算准确度百分比指标 Accuracy_percentage = sum(comparsion $ Accuracy == 1)* 100 / length(comparsion $ Accuracy)

模型的准确率百分比达到55%左右。能够尝试运行模型以取得(p,d,q)的其余可能组合,或者应用auto.arima函数抉择最佳的最佳参数来运行模型。

论断

最初,在本文中,咱们介绍了ARIMA模型,并将其利用于应用R编程语言预测股票价格收益。咱们还通过理论收益查看了咱们的预测后果。


最受欢迎的见解

1.在python中应用lstm和pytorch进行工夫序列预测

2.python中利用长短期记忆模型lstm进行工夫序列预测剖析

3.应用r语言进行工夫序列(arima,指数平滑)剖析

4.r语言多元copula-garch-模型工夫序列预测

5.r语言copulas和金融工夫序列案例

6.应用r语言随机稳定模型sv解决工夫序列中的随机稳定

7.r语言工夫序列tar阈值自回归模型

8.r语言k-shape工夫序列聚类办法对股票价格工夫序列聚类

9.python3用arima模型进行工夫序列预测