全文下载链接:http://tecdat.cn/?p=24057
本文的指标是应用K-最近邻(K近邻),ARIMA和神经网络模型剖析Google股票数据集预测Google的将来股价,而后剖析各种模型 ( 点击文末“浏览原文”获取残缺代码数据 ) 。
K-最近邻(K近邻)是一种用于回归和分类的监督学习算法。K近邻 试图通过计算测试数据与所有训练点之间的间隔来预测测试数据的正确类别。而后抉择最靠近测试数据的K个点。K近邻算法计算测试数据属于'K'个训练数据的类的概率,并且抉择概率最高的类。在回归的状况下,该值是“K”个选定训练点的平均值。
让咱们看看上面的例子,以便更好地了解
为什么咱们须要 K近邻 算法?
假如有两个类别,A 和B,并且咱们有一个新的数据点x1,那么这个数据点将位于这些类别中的哪一个。为了解决这类问题,咱们须要一个K近邻算法。借助K近邻,咱们能够轻松辨认特定数据集的类别。思考下图:
K近邻 是如何工作的?
K近邻 的工作原理能够依据以下算法进行解释:
- 步骤1:抉择街坊的数量K
- 步骤2:计算K个街坊的欧几里得间隔
- 步骤3:依据计算出的欧几里得间隔取K个最近邻。
- 步骤4:在这k个街坊中,统计每个类别的数据点个数。
- 步骤 5:将新数据点调配给街坊数量最大的类别。
- 步骤6:咱们的模型筹备好了。
假如咱们有一个新的数据点,咱们须要把它放在所需的类别中。
首先,咱们将抉择街坊的数量,因而咱们将抉择 k=5。
接下来,咱们将计算数据点之间的欧几里得间隔。欧几里得间隔是两点之间的间隔,咱们曾经在几何学中钻研过。能够计算为:
通过计算欧几里得间隔,咱们失去了最近邻,即 A 类中的2个最近邻和 B 类中的3个最近邻。
正如咱们所见,3 个最近的街坊来自类别B,因而这个新数据点必须属于类别B。
如何抉择 K 值?
Kvalue 示意最近邻的计数。咱们必须计算测试点和训练过的标签点之间的间隔。每次迭代更新间隔度量的计算成本很高,这就是为什么 K近邻 是一种惰性学习算法。
那么如何抉择最优的K值呢?
- 没有事后定义的统计办法来找到最无利的 K 值。
- 初始化一个随机的 K 值并开始计算。
- 抉择较小的 K 值会导致决策边界不稳固。
- 较大的 K 值更适宜分类,因为它能够平滑决策边界。
- 得出错误率和 K 之间的图,示意定义范畴内的值。而后抉择K值作为具备最小错误率。
当初您将理解通过施行模型来抉择最佳 K 值。
计算间隔:
第一步是计算新点和每个训练点之间的间隔。计算该间隔有多种办法,其中最常见的办法是欧几里得、曼哈顿(用于间断)和汉明间隔(用于分类)。
欧几里得间隔:欧几里得间隔计算为新点 (x) 和现有点 (y) 之间的平方差之和的平方根。
曼哈顿间隔:这是理论向量之间的间隔,应用它们的相对差之和。
**
**
联合新冠疫情COVID-19对股票价格预测:ARIMA,KNN和神经网络工夫序列剖析
1.概要
本文的指标是应用各种预测模型剖析Google股票数据集 ( 查看文末理解数据获取形式 ) 预测Google的将来股价,而后剖析各种模型。
2.简介
预测算法是一种试图依据过来和当初的数据预测将来值的过程。提取并筹备此历史数据点,来尝试预测数据集所选变量的将来值。在市场历史期间,始终有一种继续的趣味试图剖析其趋势,行为和随机反馈。一直关注在理论产生之前先理解产生了什么,这促使咱们持续进行这项钻研。咱们还将尝试并理解 COVID-19对股票价格的影响。
3.所需包
library(quantmod) R的定量金融建模和交易框架library(forecast) 预测工夫序列和工夫序列模型library(tseries) 工夫序列剖析和计算金融。library(timeseries) 'S4'类和金融工夫序列的各种工具。library(readxl) readxl包使你可能轻松地将数据从Excel中取出并输出R中。library(kableExtra) 显示表格library(data.table) 大数据的疾速聚合library(DT) 以更好的形式显示数据library(tsfknn) 进行KNN回归预测
4.数据筹备
4.1导入数据
咱们应用Quantmod软件包获取了Google股票价格2015年1月1日到2020年4月24日的数据,用于咱们的剖析。为了剖析COVID-19对Google股票价格的影响,咱们从quantmod数据包中获取了两组数据。
- 首先将其命名为data\_before\_covid,其中蕴含截至2020年2月28日的数据。
- 第二个名为data\_after\_covid,其中蕴含截至2020年4月24日的数据。
所有剖析和模型都将在两个数据集上进行,以剖析COVID-19的影响(如果有)。
getSymbols("GOG" fro= "2015-01-01", to = "2019-02-28")before_covid <-dafae(GOOG)getSymbols("GOG" , frm = "2015-01-01")after_covid <- as.tae(GOOG)
4.2数据的图形示意
par(mfrow = c(1,2))plot.ts(fore_c)
4.3数据集预览
最终数据集能够在上面的交互式表格中找到。
table(before_covid)
4.4变量汇总
变量 | 形容 |
---|---|
Open | 当日股票开盘价 |
High | 当日股票最高价 |
Low | 当日股价最低 |
Close | 当日股票收盘价 |
Volumn | 总交易量 |
Adjusted | 调整后的股票价格,包含危险或策略 |
5. ARIMA模型
咱们首先剖析两个数据集的ACF和PACF图。
par(mfrow = c(2,2))acft(bfoe_covid)pacf(bfre_covid)
而后,咱们进行 ADF(Dickey-Fuller) 测验和 KPSS(Kwiatkowski-Phillips-Schmidt-Shin) 测验,测验两个数据集收盘价的工夫序列数据的平稳性。
print(adf.test)
print(adfes(sata_after_covid))
通过以上ADF测验,咱们能够得出以下论断:
- 对于COVID-19之前的数据集,ADF测试给出的p值为 0.2093,该值大于0.05,因而阐明工夫序列数据 不是安稳的。
- 对于COVID-19之后的数据集,ADF测试给出的p值为0.01974,该值 小于0.05,这阐明工夫序列数据是 安稳的。
print(kpss.s(t_before_covid))
print(kpss.est(Dafter_covid))
通过以上KPSS测试,咱们能够得出以下论断:
- 对于COVID-19之前的数据集,KPSS测试得出的p值为 0.01,该值小于0.05,因而阐明工夫序列数据 不是安稳的。
- 对于COVID-19之后的数据集,KPSS测试给出的p值为 0.01,该值小于0.05,这阐明工夫序列数据 不是安稳的。
因而,咱们能够从以上两个测试得出结论,工夫序列数据 不是安稳的。
而后,咱们应用 auto 函数来确定每个数据集的工夫序列模型。
auto.ar(befor_covid, lamd = "auto")
auto.arma(after_covid)
从auto函数中,咱们得出两个数据集的以下模型:
- 在COVID-19之前:ARIMA(2,1,0)
- 在COVID-19之后:ARIMA(1,1,1)
取得模型后,咱们将对每个拟合模型执行残差诊断。
par(mfrow = c(2,3))plot(before_covidresiduals)plot(mfter_covidresiduals)
从残差图中,咱们能够确认残差的平均值为0,并且方差也为常数。对于滞后> 0,ACF为0,而PACF也为0。
因而,咱们能够说残差体现得像白噪声,并得出结论:ARIMA(2,1,0)和ARIMA(1,1,1)模型很好地拟合了数据。或者,咱们也能够应用Box-Ljung测验在0.05的显着性程度上进行测验残差是合乎白噪声。
Box.test(moderesiduals)
Box.tst(moeit_fter_covidreia, type = "Ljung-Box")
在此,两个模型的p值均大于0.05。因而,在显着性程度为0.05的状况下,咱们无奈回绝原假如,而得出的论断是残差遵循白噪声。这意味着该模型很好地拟合了数据。
一旦为每个数据集确定了模型,就能够预测将来几天的股票价格。
点击题目查阅往期内容
自然语言解决NLP:主题LDA、情感剖析疫情下的新闻文本数据
左右滑动查看更多
01
02
03
04
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 <- kn(bfrvdGO.Clse, k = 32)knn_after_covid <- kn(ber_oiGOG.lose ,k = 36)plot(knn_before_covid )plot(knn_after_covid )
而后,咱们针对预测工夫序列评估KNN模型。
before_cvid <- ll_ig(pdn_befr_vid)afer_vd<- rog_ogn(redkn_afer_vd)
7.前馈神经网络建模
咱们将尝试实现的下一个模型是带有神经网络的预测模型。在此模型中,咱们应用单个暗藏层模式,其中只有一层输出节点将加权输出发送到接管节点的下一层。预测函数将单个暗藏层神经网络模型拟合到工夫序列。函数模型办法是将工夫序列的滞后值用作输出数据,以达到非线性自回归模型。
第一步是确定神经网络的暗藏层数。只管没有用于计算暗藏层数的特定办法,但工夫序列预测遵循的最常见办法是通过计算应用以下公式:
其中Ns:训练样本数Ni:输出神经元数No:输入神经元数a:1.5 ^ -10
#暗藏层的创立hn_before_covid <- length(before.Close)/(alpha*(lengthGOOG.Close + 61)hn_after_covid <- length(after_covidClose)/(alpha*(lengthafter_ovdClose+65))#拟合nnnn(before_covid$GOOG.Close, size = hn_beoe_cid, # 应用nnetar进行预测。 forecast(befe_cvid, h 61, I =UE)forecast(aftr_coid, h = 5, I = RE)
plot(nn_fcst_afte_cvid)
而后,咱们应用以下参数剖析神经网络模型的性能:
accuracy
accuracy
8.所有模型的比拟
当初,咱们应用参数诸如RMSE(均方根误差),MAE(均值绝对误差)和MAPE(均值相对百分比误差)对所有三个模型进行剖析 。
sumary_le_efore_oid <- data.frame(RMSE = nuerc(), MAE = uer(), MAPE = numric(), snsAsacrs = FALSE)summ_tabe_fter_ovd <- data.fame(RMSE = umeri(), MAE = nmei(), MAPE = numeic())kable(smary_abe_eor_oid )
模型 | RMSE | MAE | MAPE |
---|---|---|---|
ARIMA | 13.0 | 8.8 | 1.0 |
KNN | 44.0 | 33.7 | 3.1 |
神经网络 | 13.0 | 8.7 | 1.0 |
kable(sumary_tbl_aft_cifulith = F, fixdtead = T )
模型 | RMSE | MAE | MAPE |
---|---|---|---|
ARIMA | 16.6 | 10.4 | 1.0 |
KNN | 45.9 | 35.7 | 3.3 |
神经网络 | 14.7 | 9.8 | 1.0 |
因而,从以上模型性能参数的总结中,咱们能够看到神经网络模型在两个数据集上的性能均优于ARIMA和KNN模型。因而,咱们将应用神经网络模型来预测将来两个月的股价。
9.最终模型:COVID-19之前
当初,咱们应用直到2月的数据来预测3月和4月的值,而后将预测价格与理论价格进行比拟,以查看是否因为COVID-19能够归因于任何重大影响。
foestdungcvid<- datafame("De "Actua Values" = datatable(foestdungcvid, ilte= 'to')
从表中咱们能够看到,3月和4月期间,Google股票的理论价值通常比预测值要高一些。因而,能够说,只管产生了这种全球性大风行,但Google股票的体现依然相当不错。
10.最终模型:COVID-19之后
当初,咱们应用直到4月的数据预测5月和6月的值,以理解Google的将来股价。
foreataov <- data.frae(dn_reataeimean )table(foreataov )
从表中能够得出结论,在5月和6月的接下来的几个月中,Google股票的价格将持续上涨并体现良好。
数据获取
在上面公众号后盾回复“股票数据”,可获取残缺数据。
本文摘选 《 R语言联合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络工夫序列剖析 》 ,点击“浏览原文”获取全文残缺材料。
点击题目查阅往期内容
Fama French (FF) 三因子模型和CAPM模型剖析股票市场投资组合危险/收益可视化
配对交易策略统计套利量化交易剖析股票市场
Copula 算法建模相依性剖析股票收益率工夫序列案例
用COPULA模型进行蒙特卡洛(MONTE CARLO)模仿和拟合股票收益数据分析
R应用LASSO回归预测股票收益
金融工夫序列模型ARIMA 和GARCH 在股票市场预测利用
工夫序列分析模型:ARIMA-ARCH / GARCH模型剖析股票价格
自然语言解决NLP:主题LDA、情感剖析疫情下的新闻文本数据
在R语言中应用航空公司简单网络对疫情进行建模
matlab用高斯曲线拟合模型剖析疫情数据
R语言ARIMA-GARCH稳定率模型预测股票市场苹果公司日收益率工夫序列
R语言中的工夫序列分析模型:ARIMA-ARCH / GARCH模型剖析股票价格
R语言用综合信息准则比拟随机稳定率(SV)模型对股票价格工夫序列建模
R语言回测交易:依据历史信号/交易创立股票收益曲线
Python中TensorFlow的长短期记忆神经网络(LSTM)、指数挪动平均法预测股票市场和可视化
R语言k-Shape工夫序列聚类办法对股票价格工夫序列聚类
R语言逻辑回归Logistic回归剖析预测股票涨跌
R语言时变稳定率和ARCH,GARCH,GARCH-in-mean模型剖析股市收益率工夫序列
R语言中的copula GARCH模型拟合工夫序列并模仿剖析
R语言多元Copula GARCH 模型工夫序列预测
R语言ARMA-GARCH-COPULA模型和金融工夫序列案例R语言多元CopulaGARCH模型工夫序列预测R语言乘法GARCH模型对高频交易数据进行波动性预测
R语言GARCH-DCC模型和DCC(MVT)建模预计
Python应用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模仿进行股价预测
R语言工夫序列GARCH模型剖析股市稳定率
R语言ARMA-EGARCH模型、集成预测算法对SPX理论稳定率进行预测
matlab实现MCMC的马尔可夫转换ARMA - GARCH模型预计
Python应用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模仿进行股价预测
应用R语言对S&P500股票指数进行ARIMA + GARCH交易策略
R语言用多元ARMA,GARCH ,EWMA, ETS,随机稳定率SV模型对金融工夫序列数据建模
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性剖析
R语言多元Copula GARCH 模型工夫序列预测
R语言应用多元AR-GARCH模型掂量市场危险
R语言中的工夫序列分析模型:ARIMA-ARCH / GARCH模型剖析股票价格
R语言用Garch模型和回归模型对股票价格剖析
GARCH(1,1),MA以及历史模拟法的VaR比拟
matlab预计arma garch 条件均值和方差模型
R语言ARMA-GARCH-COPULA模型和金融工夫序列案例