最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

拓端tecdat|R語言結(jié)合新冠疫情COVID-19對股票價格預(yù)測:ARIMA,KNN和神經(jīng)網(wǎng)絡(luò)時間序列

2021-10-27 22:00 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=24057

原文出處:拓端數(shù)據(jù)部落公眾號

1.概要

本文的目標是使用各種預(yù)測模型預(yù)測Google的未來股價,然后分析各種模型。Google股票數(shù)據(jù)集是使用R中的Quantmod軟件包從Yahoo Finance獲得的。

2.簡介

預(yù)測算法是一種試圖根據(jù)過去和現(xiàn)在的數(shù)據(jù)預(yù)測未來值的過程。提取并準備此歷史數(shù)據(jù)點,來嘗試預(yù)測數(shù)據(jù)集所選變量的未來值。在市場歷史期間,一直有一種持續(xù)的興趣試圖分析其趨勢,行為和隨機反應(yīng)。不斷關(guān)注在實際發(fā)生之前先了解發(fā)生了什么,這促使我們繼續(xù)進行這項研究。我們還將嘗試并了解?COVID-19對股票價格的影響。

3.所需包

  1. library(quantmod) R的定量金融建模和交易框架

  2. library(forecast) 預(yù)測時間序列和時間序列模型

  3. library(tseries) 時間序列分析和計算金融。

  4. library(timeseries) 'S4'類和金融時間序列的各種工具。

  5. library(readxl) readxl包使你能夠輕松地將數(shù)據(jù)從Excel中取出并輸入R中。

  6. library(kableExtra) 顯示表格

  7. library(data.table) 大數(shù)據(jù)的快速聚合

  8. library(DT) 以更好的方式顯示數(shù)據(jù)

  9. library(tsfknn) 進行KNN回歸預(yù)測?

4.數(shù)據(jù)準備

4.1導(dǎo)入數(shù)據(jù)

我們使用Quantmod軟件包獲取了Google股票價格2015年1月1日到2020年4月24日的數(shù)據(jù),用于我們的分析。為了分析COVID-19對Google股票價格的影響,我們從quantmod數(shù)據(jù)包中獲取了兩組數(shù)據(jù)。

  • 首先將其命名為data_before_covid,其中包含截至2020年2月28日的數(shù)據(jù)。

  • 第二個名為data_after_covid,其中包含截至2020年4月24日的數(shù)據(jù)。

所有分析和模型都將在兩個數(shù)據(jù)集上進行,以分析COVID-19的影響(如果有)。

  1. getSymbols("GOG" fro= "2015-01-01", to = "2019-02-28")

  2. before_covid <-dafae(GOOG)


  3. getSymbols("GOG" , frm = "2015-01-01")

  4. after_covid <- as.tae(GOOG)


4.2數(shù)據(jù)的圖形表示

  1. par(mfrow = c(1,2))

  2. plot.ts(fore_c)


4.3數(shù)據(jù)集預(yù)覽

最終數(shù)據(jù)集可以在下面的交互式表格中找到。

table(before_covid)

?

4.4變量匯總

變量描述Open當(dāng)日股票開盤價High當(dāng)日股票最高價Low當(dāng)日股價最低Close當(dāng)日股票收盤價Volumn總交易量Adjusted調(diào)整后的股票價格,包括風(fēng)險或策略

5. ARIMA模型

我們首先分析兩個數(shù)據(jù)集的ACF和PACF圖。

  1. par(mfrow = c(2,2))

  2. acft(bfoe_covid)

  3. pacf(bfre_covid)


然后,我們進行?ADF(Dickey-Fuller)?檢驗和?KPSS(Kwiatkowski-Phillips-Schmidt-Shin)?檢驗,檢驗兩個數(shù)據(jù)集收盤價的時間序列數(shù)據(jù)的平穩(wěn)性。

print(adf.test)

print(adfes(sata_after_covid))

通過以上ADF檢驗,我們可以得出以下結(jié)論:

  • 對于COVID-19之前的數(shù)據(jù)集,ADF檢驗給出的p值為?0.2093,該值大于0.05,因此說明時間序列數(shù)據(jù)?不是平穩(wěn)的

  • 對于COVID-19之后的數(shù)據(jù)集,ADF檢驗給出的p值為0.01974,該值?小于0.05,這說明時間序列數(shù)據(jù)是?平穩(wěn)的。

print(kpss.s(t_before_covid))

print(kpss.est(Dafter_covid))

通過以上KPSS檢驗,我們可以得出以下結(jié)論:

  • 對于COVID-19之前的數(shù)據(jù)集,KPSS檢驗得出的p值為?0.01,該值小于0.05,因此說明時間序列數(shù)據(jù)?不是平穩(wěn)的。

  • 對于COVID-19之后的數(shù)據(jù)集,KPSS檢驗給出的p值為?0.01,該值小于0.05,這說明時間序列數(shù)據(jù)?不是平穩(wěn)的。

因此,我們可以從以上兩個檢驗得出結(jié)論,時間序列數(shù)據(jù)?不是平穩(wěn)的。

然后,我們使用?auto?函數(shù)來確定每個數(shù)據(jù)集的時間序列模型。

auto.ar(befor_covid, lamd = "auto")

auto.arma(after_covid)

從auto函數(shù)中,我們得出兩個數(shù)據(jù)集的以下模型:

  • 在COVID-19之前:ARIMA(2,1,0)

  • 在COVID-19之后:ARIMA(1,1,1)

獲得模型后,我們將對每個擬合模型執(zhí)行殘差診斷。

  1. par(mfrow = c(2,3))


  2. plot(before_covidresiduals)



  3. plot(mfter_covidresiduals)


從殘差圖中,我們可以確認殘差的平均值為0,并且方差也為常數(shù)。對于滯后> 0,ACF為0,而PACF也為0。

因此,我們可以說殘差表現(xiàn)得像白噪聲,并得出結(jié)論:ARIMA(2,1,0)和ARIMA(1,1,1)模型很好地擬合了數(shù)據(jù)?;蛘撸覀円部梢允褂肂ox-Ljung檢驗在0.05的顯著性水平上進行檢驗殘差是符合白噪聲。

Box.test(moderesiduals)

Box.tst(moeit_fter_covidreia, type = "Ljung-Box")

在此,兩個模型的p值均大于0.05。因此,在顯著性水平為0.05的情況下,我們無法拒絕原假設(shè),而得出的結(jié)論是殘差遵循白噪聲。這意味著該模型很好地擬合了數(shù)據(jù)。

一旦為每個數(shù)據(jù)集確定了模型,就可以預(yù)測未來幾天的股票價格。

6. KNN回歸時間序列預(yù)測模型

KNN模型可用于分類和回歸問題。最受歡迎的應(yīng)用是將其用于分類問題?,F(xiàn)在,使用r軟件包,可以在任何回歸任務(wù)應(yīng)用KNN。這項研究的目的是說明不同的預(yù)測工具,對其進行比較并分析預(yù)測的行為。在我們的KNN研究之后,我們提出可以將其用于分類和回歸問題。為了預(yù)測新數(shù)據(jù)點的值,模型使用“特征相似度”,根據(jù)新點與訓(xùn)練集上點的相似程度為值分配新點。

第一項任務(wù)是確定我們的KNN模型中的k值。選擇k值的一般經(jīng)驗法則是取樣本中數(shù)據(jù)點數(shù)的平方根。因此,對于COVID-19之前的數(shù)據(jù)集,我們?nèi) = 32;對于COVID-19之后的數(shù)據(jù)集,我們?nèi) = 36。

  1. par(mfrow = c(2,1))

  2. knn_before_covid <- kn(bfrvdGO.Clse, ?k = 32)

  3. knn_after_covid <- kn(ber_oiGOG.lose ,k = 36)


  4. plot(knn_before_covid )

  5. plot(knn_after_covid )

然后,我們針對預(yù)測時間序列評估KNN模型。

  1. before_cvid <- ll_ig(pdn_befr_vid)

  2. afer_vd<- rog_ogn(redkn_afer_vd)

7.前饋神經(jīng)網(wǎng)絡(luò)建模

我們將嘗試實現(xiàn)的下一個模型是帶有神經(jīng)網(wǎng)絡(luò)的預(yù)測模型。在此模型中,我們使用單個隱藏層形式,其中只有一層輸入節(jié)點將加權(quán)輸入發(fā)送到接收節(jié)點的下一層。預(yù)測函數(shù)將單個隱藏層神經(jīng)網(wǎng)絡(luò)模型擬合到時間序列。函數(shù)模型方法是將時間序列的滯后值用作輸入數(shù)據(jù),以達到非線性自回歸模型。

第一步是確定神經(jīng)網(wǎng)絡(luò)的隱藏層數(shù)。盡管沒有用于計算隱藏層數(shù)的特定方法,但時間序列預(yù)測遵循的最常見方法是通過計算使用以下公式:

其中Ns:訓(xùn)練樣本數(shù)Ni:輸入神經(jīng)元數(shù)No:輸出神經(jīng)元數(shù)a:1.5 ^ -10

  1. #隱藏層的創(chuàng)建

  2. hn_before_covid <- length(before.Close)/(alpha*(lengthGOOG.Close + 61)

  3. hn_after_covid <- length(after_covidClose)/(alpha*(lengthafter_ovdClose+65))


  4. #擬合nn


  5. nn(before_covid$GOOG.Close, size = hn_beoe_cid,


  6. # 使用nnetar進行預(yù)測。

  7. forecast(befe_cvid, h 61, I =UE)

  8. forecast(aftr_coid, h = 5, I = RE)


plot(nn_fcst_afte_cvid)

然后,我們使用以下參數(shù)分析神經(jīng)網(wǎng)絡(luò)模型的性能:

accuracy

accuracy

8.所有模型的比較

現(xiàn)在,我們使用參數(shù)諸如RMSE(均方根誤差),MAE(均值絕對誤差)和MAPE(均值絕對百分比誤差)對所有三個模型進行分析?。

  1. sumary_le_efore_oid <- data.frame(RMSE = nuerc(), MAE = uer(),

  2. MAPE = numric(), snsAsacrs = FALSE)


  3. summ_tabe_fter_ovd <- data.fame(RMSE = umeri(), MAE = nmei(),

  4. MAPE = numeic())



  5. kable(smary_abe_eor_oid )

COVID-19之前的數(shù)據(jù)模型匯總模型RMSEMAEMAPEARIMA13.08.81.0KNN44.033.73.1神經(jīng)網(wǎng)絡(luò)13.08.71.0

  1. kable(sumary_tbl_aft_ci

  2. fulith = F, fixdtead = T )

COVID-19之后的數(shù)據(jù)模型匯總模型RMSEMAEMAPEARIMA16.610.41.0KNN45.935.73.3神經(jīng)網(wǎng)絡(luò)14.79.81.0

因此,從以上模型性能參數(shù)的總結(jié)中,我們可以看到神經(jīng)網(wǎng)絡(luò)模型在兩個數(shù)據(jù)集上的性能均優(yōu)于ARIMA和KNN模型。因此,我們將使用神經(jīng)網(wǎng)絡(luò)模型來預(yù)測未來兩個月的股價。

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

現(xiàn)在,我們使用直到2月的數(shù)據(jù)來預(yù)測3月和4月的值,然后將預(yù)測價格與實際價格進行比較,以檢查是否由于COVID-19可以歸因于任何重大影響。

  1. foestdungcvid<- datafame("De

  2. "Actua Values" =


  3. datatable(foestdungcvid, ilte= 'to')

從表中我們可以看到,3月和4月期間,Google股票的實際價值通常比預(yù)測值要高一些。因此,可以說,盡管發(fā)生了這種全球性大流行,但Google股票的表現(xiàn)仍然相當(dāng)不錯。

10.最終模型:COVID-19之后

現(xiàn)在,我們使用直到4月的數(shù)據(jù)預(yù)測5月和6月的值,以了解Google的未來股價。

  1. foreataov <- data.frae(dn_reataeimean )


  2. table(foreataov )

從表中可以得出結(jié)論,在5月和6月的接下來的幾個月中,Google股票的價格將繼續(xù)上漲并表現(xiàn)良好。

最受歡迎的見解

1.在python中使用lstm和pytorch進行時間序列預(yù)測

2.python中利用長短期記憶模型lstm進行時間序列預(yù)測分析

3.使用r語言進行時間序列(arima,指數(shù)平滑)分析

4.r語言多元copula-garch-模型時間序列預(yù)測

5.r語言copulas和金融時間序列案例

6.使用r語言隨機波動模型sv處理時間序列中的隨機波動

7.r語言時間序列tar閾值自回歸模型

8.r語言k-shape時間序列聚類方法對股票價格時間序列聚類

9.python3用arima模型進行時間序列預(yù)測


拓端tecdat|R語言結(jié)合新冠疫情COVID-19對股票價格預(yù)測:ARIMA,KNN和神經(jīng)網(wǎng)絡(luò)時間序列的評論 (共 條)

分享到微博請遵守國家法律
淳化县| 中牟县| 四子王旗| 房产| 江口县| 宁国市| 桃源县| 鄄城县| 分宜县| 渝北区| 潼南县| 陵水| 剑阁县| 广灵县| 张家港市| 留坝县| 信丰县| 刚察县| 双牌县| 论坛| 富平县| 鲁甸县| 丹凤县| 积石山| 青铜峡市| 吐鲁番市| 礼泉县| 长治市| 靖江市| 南城县| 曲阜市| 昭苏县| 大方县| 新疆| 河南省| 张北县| 广汉市| 杨浦区| 湾仔区| 定西市| 信宜市|