iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 28
1
影片教學

R語言-預測方法大全系列 第 28

[Day-28] 預測操作--SARIMA&斷點 (break points in r)

您的訂閱是我製作影片的動力
訂閱點這裡~/images/emoticon/emoticon39.gif

若內容有誤,還請留言指正,謝謝您的指教/images/emoticon/emoticon07.gif

#影片程式碼
library(strucchange) #找斷點
library(forecast)
library(tseries)
library(dplyr)
data <- read.csv(file="D:\\1218股價.csv",header=TRUE,sep=",")
歷史資料 <- subset(data,data$年月<=201912)
對照組 <- subset(data,data$年月>=202001) 
時序格式 <- ts(歷史資料$加權股價, frequency=12, start=c(2010,01))
拆解 <- decompose(時序格式) 
plot(拆解)

#1.找斷點
(break_point <- breakpoints(時序格式 ~ 1))
summary(break_point) #找BIC最小

#2. to 穩定: 轉換法、差分&檢定
差分 <- diff(時序格式, differences = 1)
adf.test(差分)  #< 穩定

#3. 建模&診斷
fitted.ts <- fitted(break_point, breaks = 3)
auto.arima(時序格式,stepwise = F,d=1,trace = T,xreg = fitted.ts,
          stationary = T,ic=c("aic")) #小好
fit <- Arima(時序格式, order = c(1,1,3), xreg = fitted.ts, 
                 include.mean = F)
tsdisplay(residuals(fit), lag.max=50, main='殘差大全')
shapiro.test(fit$residuals) #殘差>a 常態
Box.test(fit$residuals, lag=10, type="Ljung-Box") 

#4.預測誤差與檢討空間
p<-forecast(fit,3,xreg = fitted.ts[1:3])
p
plot(p)
預測 <- as.data.frame(p)
評估 <- cbind(預測,對照組)
評估 <- 評估 %>% 
  mutate(mae=abs(加權股價-評估$`Point Forecast`)) %>% 
  mutate(mape=abs(加權股價-評估$`Point Forecast`)/加權股價)
mean(評估$mape)

檔案下載處:
https://drive.google.com/drive/u/1/folders/1QIRQIvqYF0C37gfGURHMoSElh_6BYUr6
資料來源:
https://www.twse.com.tw/zh/


上一篇
[Day-27] 預測操作--SARIMA模型預測 (SARIMA model in r)
下一篇
[Day-29] 預測觀念9-提升模型準確度(minimize predict error)
系列文
R語言-預測方法大全30

尚未有邦友留言

立即登入留言