拓端数据部落:Google股票数据集是使用R中的Quantmod软件包

原文链接:

原文来源:拓段数据部落公众号

1.总结

本文的目标是使用各种预测模型预测谷歌未来的股价,然后分析各种模型。谷歌股票数据集是使用 R 中的 Quantmod 包从 Yahoo Finance 获得的。

2.简介

预测算法是一个尝试根据过去和现在的数据预测未来值的过程。提取并准备此历史数据点,以尝试预测数据集中所选变量的未来值。在市场的历史中,人们一直有兴趣尝试分析其趋势、行为和随机反应。不断关注了解实际发生之前发生的事情促使我们继续这项研究。我们还将尝试了解 COVID-19 对股价的影响。

3.必需包库(quantmod) R 库(forecast) 预测时间序列和时间序列模型库(tseries) 时间序列分析和计算金融的定量金融建模和交易框架。library(timeseries) ‘S4’ 类和金融时间序列的各种工具。library(readxl) readxl 包使您可以轻松地将数据从 Excel 中获取到 R. library(kableExtra) 显示表 library(data.table) 快速聚合大数据库 (DT) 以更好的方式显示数据 library(tsfknn ) 做KNN回归预测4.数据准备

4.1导入数据

我们使用 Quantmod 包获取了 2015 年 1 月 1 日至 2020 年 4 月 24 日期间谷歌股票价格的数据,以供我们分析。为了分析 COVID-19 对谷歌股价的影响,我们从 quantmod 数据包中获得了两组数据。

所有分析和模型都将在两个数据集上执行,以分析 COVID-19 的影响(如果有)。

getSymbols(“GOG” 来自 = “2015-01-01”, to = “2019-02-28”) before_covid getSymbols(“GOG” , frm = “2015-01-01”) after_covid

4.2 数据的图形表示

par(mfrow = c(1,2)) plot.ts(fore_c)

4.3 数据集预览

最终数据集可以在下面的交互式表格中找到。

表(before_covid)

4.4 变量汇总

变量 描述 Open 股票当日开盘价 High 股票当日最高价 Low 股票当日最低价 Close 股票当日收盘价

5. ARIMA 模型

我们首先分析两个数据集的 ACF 和 PACF 图。

par(mfrow = c(2,2)) acft(bfoe_covid) pacf(bfre_covid)

然后,我们执行 ADF (Dickey-Fuller) 检验和 KPSS (Kwiatkowski-Phillips-Schmidt-Shin) 检验来检验两个数据集收盘价时间序列数据的平稳性。

打印(adf.test)

打印(adfes(sata_after_covid))

通过以上ADF测试,我们可以得出以下结论:

打印(kpss.s(t_before_covid))

打印(kpss.est(Dafter_covid))

通过以上KPSS测试,我们可以得出以下结论:

因此,我们可以从上述两个测试中得出结论,时间序列数据不是平稳的。

然后,我们使用 auto 函数来确定每个数据集的时间序列模型。

auto.ar(befor_covid, lamd = “auto”)

auto.arma(after_covid)

从 auto 函数中,我们为两个数据集派生了以下模型:

获得模型后,我们将对每个拟合模型进行残差诊断。

par(mfrow = c(2,3)) 图(before_covidresiduals) 图(mfter_covidresiduals)

从残差图中,我们可以确认残差的均值为 0,方差也为常数。对于滞后 > 0,ACF 为 0,PACF 也是如此。

因此,我们可以说残差表现得像白噪声,并得出结论 ARIMA(2,1,0) 和 ARIMA(1,1,1) 模型很好地拟合了数据。或者,我们也可以使用 Box-Ljung 检验来检验残差是否与显着性水平为 0.05 的白噪声一致。

Box.test(moderesiduals)

Box.tst(moeit_fter_covidreia, type = “Ljung-Box”)

图片[1]-拓端数据部落:Google股票数据集是使用R中的Quantmod软件包-老王博客

这里神经网络预测r程序,两个模型的p值都大于0.05。因此,对于 0.05 的显着性水平,我们不能拒绝原假设并得出残差遵循白噪声的结论。这意味着模型很好地拟合了数据。

一旦为每个数据集确定了模型,就可以预测接下来几天的股票价格。

6. KNN 回归时间序列预测模型

KNN 模型可用于分类和回归问题。最流行的应用是将其用于分类问题。现在,使用 r 包,KNN 可以应用于任何回归任务。本研究的目的是说明不同的预测工具,比较它们并分析预测的行为。根据我们的 KNN 研究,我们建议它可以用于分类和回归问题。为了预测新数据点的值,该模型使用“特征相似性”,它根据新点与训练集上的点的相似程度将新点分配给值。

第一个任务是在我们的 KNN 模型中确定 k 的值。选择 k 值的一般经验法则是取样本中数据点数的平方根。因此,对于 COVID-19 之前的数据集,我们取 k = 32;对于 COVID-19 后的数据集,我们取 k = 36。

par(mfrow = c(2,1)) knn_before_covid knn_after_covid 图(knn_before_covid ) 图(knn_after_covid )

然后,我们根据预测时间序列评估 KNN 模型。

before_cvid afer_vd

7.前馈神经网络建模

我们将尝试实现的下一个模型是带有神经网络的预测模型。在这个模型中神经网络预测r程序,我们使用单隐藏层形式,其中只有一层输入节点将加权输入发送到下一层接收节点。预测函数将单个隐藏层神经网络模型拟合到时间序列。函数模型方法使用时间序列的滞后值作为输入数据来实现非线性自回归模型。

第一步是确定神经网络的隐藏层数。虽然没有具体的计算隐藏层数的方法,但时间序列预测最常用的方法是使用以下公式计算:

其中 Ns:训练样本数 Ni:输入神经元数 No:输出神经元数 a:1.5^-10

#隐藏层的创建 hn_before_covid hn_after_covid #Fit nn nn(before_covid$GOOG.Close, size = hn_beoe_cid, # 使用nnetar进行预测。预测(befe_cvid, h 61, I =UE) forecast(aftr_coid, h = 5, I = RE )

情节(nn_fcst_after_cvid)

然后,我们使用以下参数分析神经网络模型的性能:

准确性

准确性

8.所有模型的比较

我们现在使用 RMSE(均方根误差)、MAE(平均绝对误差)和 MAPE(平均绝对百分比误差)等参数分析所有三个模型。

sumary_le_efore_oid MAPE = numric(), snsAsacrs = FALSE) summ_tabe_fter_ovd MAPE = numeic()) kable(smary_abe_eor_oid)

COVID-19 之前的数据模型摘要模型 RMSEMAPEARIMA13.08.81.0KNN44.033.73.1神经网络13.08.71.0

kable(sumary_tbl_aft_ci fulith = F, fixdtead = T)

数据模型汇总模型 RMSEMAEMAPEARIMA16.610.41.0KNN45.935.73.3神经网络14.79.81.0

因此,从上面对模型性能参数的总结中,我们可以看到神经网络模型在两个数据集上都优于 ARIMA 和 KNN 模型。因此,我们将使用神经网络模型来预测未来两个月的股价。

9.最终模型:COVID-19 之前

我们现在使用截至 2 月的数据来预测 3 月和 4 月的值,然后将预测价格与实际价格进行比较,以检查是否有任何重大影响可归因于 COVID-19。

foestdungcvid“实际值”=数据表(foestdungcvid,ilte=’to’)

从表格中我们可以看出,在 3 月和 4 月期间,谷歌股票的实际价值通常比预期的要高一些。因此,可以公平地说,尽管发生了全球大流行,但谷歌的股票仍然表现不错。

10.最终模型:COVID-19 后

现在,我们使用截至 4 月的数据来预测 5 月和 6 月的价值,以了解谷歌未来的股价。

预测表(foreataov)

从表中可以得出结论,谷歌股票的价格将在接下来的 5 月和 6 月继续上涨并表现良好。

最受欢迎的见解

1.在python中使用lstm和pytorch进行时间序列预测

2.在python中使用长短期记忆模型lstm进行时间序列预测分析

3.使用r语言进行时间序列(arima,指数平滑)分析

4.r语言多元copula-garch-model时间序列预测

5.r语言copulas和金融时间序列案例

6.使用r语言随机波动模型sv处理时间序列的随机波动

7.r语言时间序列tar阈值自回归模型

8.r语言k形时间序列聚类方法对股价时间序列进行聚类

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论