Tôi đã sử dụng các hàm ets () và auto.arima () từ gói dự báo để dự báo một số lượng lớn chuỗi thời gian đơn biến. Tôi đã sử dụng chức năng sau đây để chọn giữa hai phương pháp, nhưng tôi tự hỏi liệu CrossValidated có ý tưởng nào tốt hơn (hoặc ít ngây thơ hơn) để dự báo tự động hay không.
auto.ts <- function(x,ic="aic") {
XP=ets(x, ic=ic)
AR=auto.arima(x, ic=ic)
if (get(ic,AR)<get(ic,XP)) {
model<-AR
}
else {
model<-XP
}
model
}
/ chỉnh sửa: Điều gì về chức năng này?
auto.ts <- function(x,ic="aic",holdout=0) {
S<-start(x)[1]+(start(x)[2]-1)/frequency(x) #Convert YM vector to decimal year
E<-end(x)[1]+(end(x)[2]-1)/frequency(x)
holdout<-holdout/frequency(x) #Convert holdout in months to decimal year
fitperiod<-window(x,S,E-holdout) #Determine fit window
if (holdout==0) {
testperiod<-fitperiod
}
else {
testperiod<-window(x,E-holdout+1/frequency(x),E) #Determine test window
}
XP=ets(fitperiod, ic=ic)
AR=auto.arima(fitperiod, ic=ic)
if (holdout==0) {
AR_acc<-accuracy(AR)
XP_acc<-accuracy(XP)
}
else {
AR_acc<-accuracy(forecast(AR,holdout*frequency(x)),testperiod)
XP_acc<-accuracy(forecast(XP,holdout*frequency(x)),testperiod)
}
if (AR_acc[3]<XP_acc[3]) { #Use MAE
model<-AR
}
else {
model<-XP
}
model
}
"Nắm giữ" là số lượng thời gian bạn muốn sử dụng làm bài kiểm tra mẫu. Sau đó, hàm sẽ tính toán một cửa sổ phù hợp và một cửa sổ kiểm tra dựa trên tham số này. Sau đó, nó chạy các hàm auto.arima và ets trên cửa sổ vừa vặn và chọn một chức năng có MAE thấp nhất trong cửa sổ kiểm tra. Nếu tỷ lệ giữ bằng 0, nó sẽ kiểm tra sự phù hợp trong mẫu.
Có cách nào để tự động cập nhật mô hình đã chọn với bộ dữ liệu hoàn chỉnh không, khi nó đã được chọn?