不幸的是,您在这里几乎没有技术错误。
您不能使用库(预测)函数 auto.arima 制作 ARIMAX 模型。Xreg 参数使它成为带有 ARMA 错误的回归模型。这是我必须通过想知道结果来努力学习的东西...... :)
并且您必须为预测函数中的 xreg 参数提供 FUTURE 值。将您的数据分成两部分:1)一个适合模型 2)外生变量的未来值。Auto.arima 不会通过 ARIMA 模型预测 xreg 变量的未来值。
如果您想尝试 ARIMAX 模型,请尝试使用 arimax-function 的 library(TSA),它的语法当然与 auto.arima - function 不同... :)
编辑:
这是使用带有 xreg 参数的 auto.arima 的示例,其中数据集具有用于模型参数估计的第一个数据,然后用于预测。
library(forecast);
apu=read.table("demo_1.csv",sep=";",dec=",",header=TRUE);
apux=read.table("demo_2.csv",sep=";",dec=",",header=TRUE);
apuxx=read.table("demo_3_xreg.csv",sep=";",dec=",",header=TRUE);
apu2=ts(data=apu[2],start=c(2011,1),deltat=1/365);
apu3=ts(data=apu[3],start=c(2011,1),deltat=1/365);
apu4=ts(data=apux[1],start=c(2011,1),deltat=1/365);
Acf(apu2);
Pacf(apu2);
apu5=ts.intersect(apu3,apu4);
apu6=ts(data=apuxx[3],start=c(2013,263),deltat=1/365);
apu7=ts(data=apuxx[2],start=c(2013,263),deltat=1/365);
apu8=ts.intersect(apu6,apu7);
sarimax=auto.arima(apu2, d=NA, D=NA, max.p=5, max.q=5,
max.P=365, max.Q=365, max.order=5, start.p=2, start.q=2,
start.P=1, start.Q=1, stationary=FALSE, seasonal=TRUE,
ic=c("aicc","aic", "bic"), stepwise=TRUE, trace=FALSE,
approximation=(length(apu2)>100 | frequency(apu2)>12), xreg=apu5,
test=c("kpss","adf","pp"), seasonal.test=c("ocsb","ch"),
allowdrift=TRUE, lambda=0, parallel=FALSE, num.cores=NULL);
print(sarimax$arma);
print(accuracy(sarimax));
print(sarimax$coef);
plot(sarimax$residuals);
print(Box.test(sarimax$residuals,lag=30,type=c("Ljung-Box")));
sarimaxpredicts=forecast(sarimax, h=7,level=c(75,80,90,95), fan=FALSE, xreg=apu8, lambda=sarimax$lambda,bootstrap=FALSE, npaths=5000);
plot(sarimaxpredicts);