原文链接: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进行差分,可以使非平稳数据平稳。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 order = 2和MA order = 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(适合$ 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模型进行时间序列预测

r语言 python 股票_R语言使用ARIMA模型预测股票收益相关推荐

  1. R语言使用ARIMA模型预测股票收益时间序列

    "预测非常困难,特别是关于未来".丹麦物理学家尼尔斯·波尔(Neils Bohr),最近我们被要求撰写关于arima的研究报告,包括一些图形和统计输出. 很多人都会看到这句名言.预 ...

  2. R语言与数据分析练习:使用ARIMA模型预测网站访问量

    R语言与数据分析练习:使用ARIMA模型预测网站访问量 使用ARIMA模型预测网站访问量 一.实验背景: 随着流量的增大,某网站的数据信息量也在以一定的幅度增长 基于该网站2016年9月~2017年2 ...

  3. r语言没有forecast这个函数_R语言学习日记——时间序列分析之ARIMA模型预测

    指数平滑法对于预测来说是非常有帮助的,而且它对时间序列上面连续的值之间相关性没有要求.但是,如果你想使用指数平滑法计算出预测区间,那么预测误差必须是不相关的, 而且必须是服从零均值. 方差不变的正态分 ...

  4. python应用(3)svm模型预测股票涨跌

    最近接了一个私活,指导学妹完成毕业设计.核心思想就是利用SVM模型来预测股票涨跌,并完成策略构建,自动化选择最优秀的股票进行资产配置. 在做这个项目的过程中,我体会到想成为一个合格的数据分析或者数据挖 ...

  5. R时间序列分析|SP500股指的ARIMA模型预测与残差ARCH效应分析

    R时间序列分析|S&P500股指的ARIMA模型预测与残差ARCH效应分析 前言 一.数据及分析目的 二.数据探索 三.ARIMA模型构建 四.残差分析 五.模型预测 前言 由于R语言对新手并 ...

  6. R语言时间序列(time series)分析实战:使用ARIMA模型预测时间序列

    R语言时间序列(time series)分析实战:使用ARIMA模型预测时间序列 目录

  7. R语言时间序列分析之ARIMA模型预测

    R语言时间序列分析之ARIMA模型预测 今天学习ARIMA预测时间序列. 指数平滑法对于预测来说是非常有帮助的,而且它对时间序列上面连续的值之间相关性没有要求.但是,如果你想使用指数平滑法计算出预测区 ...

  8. R语言拟合ARIMA模型并使用拟合模型进行预测推理、使用autoplot函数可视化ARIMA模型预测结果、可视化包含置信区间的预测结果

    R语言拟合ARIMA模型并使用拟合模型进行预测推理.使用autoplot函数可视化ARIMA模型预测结果.可视化包含置信区间的预测结果 目录

  9. R语言编写自定义函数、评估回归模型预测变量的相对重要性(Relative importance)、通过在所有可能的子模型中添加一个预测变量而获得的R方的平均增加、评估预测变量的重要度、并通过点图可视化

    R语言编写自定义函数.评估回归模型预测变量的相对重要性(Relative importance).通过在所有可能的子模型中添加一个预测变量而获得的R方的平均增加.来评估预测变量的重要程度.并通过点图可 ...

最新文章

  1. Spring Security 之集群Session配置
  2. Redis、MongoDB、Memcache的比较
  3. datagenerator解决训练时候内存不足问题
  4. windows下一个,OracleServiceXXX和Oracle 关系实例
  5. mysql 非等值条件 索引_mysql 索引学习--多条件等值查询,顺序不同也能应用联合索引啦...
  6. 官方文档:Office VBA 参考
  7. linux环境变量配置的方法,Linux环境变量配置方法
  8. 敏捷开发的角色和职责阐述
  9. 51单片机学习笔记(郭天祥版)(9)——IIC、EEPROM
  10. 将森林转换为对应的二叉树,若在二叉树中,结点u时结点v的父结点的父结点,则在原来的森林中,u和v可能具有的关系是( )
  11. 列名无效如何解决_XSKY ClickHouse如何实现存算分离
  12. Android背景色渐变效果(shape,gradient) (转)
  13. java学习(36):数组排序
  14. 2013计算机二级试题,2013年3月全国计算机二级VFP真题
  15. dev 命令行参数调用_在Linux系统上使用简单命令行创建高强度的预共享密钥
  16. STC芯片在Keil中的添加与使用
  17. C#读取TIFF文件
  18. Web服务器和http请求
  19. jsp页面引入调色板、颜色表
  20. c语言绝对值题目,绝对值测试题大全

热门文章

  1. linux 内核进程 kondemand,CPU省电进程kondemand介绍
  2. 无水印保存图片_图片怎么去水印
  3. 表格 列与列之间的间距
  4. 动规练习Plus【2】
  5. 基8266实现天气预报
  6. 即时通信-环信API方法
  7. 企业微信hook接口,网络获取外部联系人
  8. 新颖交互形式的H5案例浅析(技术分析)
  9. 自定义view实现未读消息提示(小红点)
  10. ubuntu18.04LTS每次重启后蓝牙鼠标都要重新连接解决办法