나는 시계열의 학습 데이터 값이 100이고 auto.arima를 사용하여 모델 순서와 계수를 찾는다 .한 번에 한 단계 앞당겨 예측에서 한 번에 하나의 값만 수신 R
센서에서 스트리밍 값을 한 번에 하나씩 수신합니다. 하나의 값을 받으면 auto.arima에서 얻은 모델 객체로부터 다음 값 (one-step ahead/single value only)을 예측/예측해야합니다. 특정 사건에 따라 모델 계수를 업데이트하지만, 지금은 언급 할 필요가 없습니다. 센서가 작동 할 때까지 미리 진행되는 예측이 수행됩니다. https://drive.google.com/open?id=0B3UpwQBKryLleXdtMkQyOXVDcW8
이 내 코드입니다 :
이
내 샘플 교육 및 테스트 데이터입니다. 그에 따라 설정되는 모델에는 특정 제약 조건이 있습니다. 샘플의 한 단계가 전방 예측 (적색 플롯)에서 수동으로 생성 된 데이터뿐만 아니라, (녹색 줄거리)에 끼워 (MDL)을 사용하기 위해data<-read.csv('stackoverflow_data.csv',header=TRUE, sep=",");
data1<-data[[1]]; # first 100 points of data - training data
mdl<-auto.arima(data1,max.p=3, max.q=3,max.d=1, stepwise=FALSE, approximation = FALSE,allowdrift=TRUE, allowmean=TRUE);
summary(mdl);
Series: data1
ARIMA(1,0,1) with non-zero mean
Coefficients:
ar1 ma1 intercept
0.7456 0.2775 767.7463
s.e. 0.0804 0.1197 0.1072
sigma^2 estimated as 0.04944: log likelihood=9.34
AIC=-10.69 AICc=-10.27 BIC=-0.27
Training set error measures:
ME RMSE MAE MPE MAPE
Training set -0.004354719 0.2189945 0.1706344 -0.0005753987 0.02222701
MASE ACF1
Training set 0.9063639 -0.01022176
. 다음은 원본 훈련 데이터 (검은 색 플롯)와 결합 된 플롯입니다.
이 코드는 수동 한 걸음 예상 예측 코드입니다.
(1) (I 인해 평판 점수에 이미지를 게시 할 수 없기 때문에 나는 위의 이미지 링크를 공유) 플롯을 관찰함으로써, :
one step ahead forecast : in-sample data plot
이
res_1 = 0;
res_2 = 0;
constant_1 = mdl$coef [["intercept"]] * (1 - mdl$coef [["ar1"]]);
fc = 0;
for (i in 1:length(data1)){
fc[i] <-constant_1 +(mdl$coef [["ar1"]]*(data1[i])) + (mdl$coef [["ma1"]]*(res_1)); # one-step ahead forecast for in-sample data
res_2[i] = data1[i] - fc[i];
res_1 = data1[i] - fc[i];
}
내 질문 있습니다 적합 (mdl) 예측이 한 시간 단위로 해제 된 것으로 보입니다. 어떻게 수정 될 수 있습니까?
(2) 공유 링크의 테스트 데이터는 한 단계 앞당치 예보가 수행 될 미래 데이터입니다. 이 데이터는 한 번에 하나의 값으로 순차적으로옵니다. 시간 알고리즘이 값을 계속 가져올 때까지 그 시점에받은 단일 값에서 단일 다음 값을 예측할 수있는 방법은 무엇입니까?
한발 앞서 수행이 적절한 방법이다 예측 DATA2 = 데이터 [2] ]; fit2 <- Arima (c (data1, data2 [1]), model = mdl) = (forecast (fit2, h = 1) $ fitted [101]) –
또는 다음을 고려해야합니다. data2 = data [[2 ]]; fit2 <- Arima (c (data1, data2 [1]), model = mdl) a = (예측치 (fit2, h = 1) $ mean [1]) –