【视频】K近邻KNN算法原理与R语言结合新冠疫情对股票价格预测|数据分享(下)

简介: 【视频】K近邻KNN算法原理与R语言结合新冠疫情对股票价格预测|数据分享

【视频】K近邻KNN算法原理与R语言结合新冠疫情对股票价格预测|数据分享(上):https://developer.aliyun.com/article/1491727


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))
#拟合nn
nn(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 )

COVID-19之前的数据模型汇总

模型 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_ci

fulith = F, fixdtead = T )

COVID-19之后的数据模型汇总

模型 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股票的价格将继续上涨并表现良好。

相关文章
|
4天前
|
移动开发 算法 数据可视化
【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享(上)
【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享
16 1
|
2天前
|
机器学习/深度学习 自然语言处理 算法
机器学习算法原理与应用:深入探索与实战
【5月更文挑战第2天】本文深入探讨机器学习算法原理,包括监督学习(如线性回归、SVM、神经网络)、非监督学习(聚类、PCA)和强化学习。通过案例展示了机器学习在图像识别(CNN)、自然语言处理(RNN/LSTM)和推荐系统(协同过滤)的应用。随着技术发展,机器学习正广泛影响各领域,但也带来隐私和算法偏见问题,需关注解决。
|
4天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】层次聚类算法的原理与应用
【4月更文挑战第30天】层次聚类是数据挖掘中的聚类技术,无需预设簇数量,能生成数据的层次结构。分为凝聚(自下而上)和分裂(自上而下)两类,常用凝聚层次聚类有最短/最长距离、群集平均和Ward方法。优点是自动确定簇数、提供层次结构,适合小到中型数据集;缺点是计算成本高、过程不可逆且对异常值敏感。在Python中可使用`scipy.cluster.hierarchy`进行实现。尽管有局限,层次聚类仍是各领域强大的分析工具。
|
4天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。
|
4天前
|
算法
【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享(下)
【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享
11 0
|
4天前
|
算法 数据可视化 数据挖掘
R语言平滑算法LOESS局部加权回归、三次样条、变化点检测拟合电视节目《白宫风云》在线收视率
R语言平滑算法LOESS局部加权回归、三次样条、变化点检测拟合电视节目《白宫风云》在线收视率
11 0
|
4天前
|
机器学习/深度学习 算法 数据挖掘
【视频】决策树模型原理和R语言预测心脏病实例|数据分享(下)
【视频】决策树模型原理和R语言预测心脏病实例|数据分享
13 0
|
4天前
|
机器学习/深度学习 算法 搜索推荐
【视频】决策树模型原理和R语言预测心脏病实例|数据分享(上)
【视频】决策树模型原理和R语言预测心脏病实例|数据分享
14 1
|
5天前
|
机器学习/深度学习 数据采集 SQL
R语言K-Means(K均值聚类)和层次聚类算法对微博用户特征数据研究
R语言K-Means(K均值聚类)和层次聚类算法对微博用户特征数据研究
11 0
|
5天前
|
机器学习/深度学习 Python
【视频】ARIMA时间序列模型原理和R语言ARIMAX预测实现案例
【视频】ARIMA时间序列模型原理和R语言ARIMAX预测实现案例
14 1