您的訂閱是我製作影片的動力
訂閱點這裡~
若內容有誤,還請留言指正,謝謝您的指教
#影片程式碼
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/