我正在尝试使用动态回归模型从预测中复制模型,但无法使用TSA库中的arimax函数将R中的输出进行匹配。我可以使用SAS接近结果,但是我想使用R,希望有人知道如何编码arimax函数来实现这一目标。我发现该函数具有正常收敛的问题(通常源于arima和optim),但是在这种情况下返回了模型,但是参数相去甚远。
数据是来自Box和Jenkins的销售沙铅系列的前140个观测值astsa。
这是书中的片段,显示了它们的结果(同样,我可以更接近SAS)和R所使用的代码(以及结果)。我注意到的一件事是在arimax()的帮助文件中,建议“均值删除”传递函数协变量。我不确定这意味着什么,也不确定这是否是问题的一部分。
从书中:
在此处输入图片说明
这是R代码:
library(TSA) library(Hmisc) library(astsa) sales_140<-window(sales,end=140) lead_140<-window(lead,end=140) mod<-arimax(window(sales_140,start=4),order=c(0,1,1), xtransf = window(Lag(lead_140,3),start=4),transfer = list(c(1,0)), xreg=data.frame(seq(1:137)),method="ML") mod
#Series: window(sales_140, start = 4)#ARIMA(0,1,1)
#Series: window(sales_140, start = 4)
#ARIMA(0,1,1)
#Coefficients:`` # ma1 seq.1.137. T1-AR1 T1-MA0 # 0.5974 0.3322 0.0613 2.8910 #s.e. 0.0593 0.1111 0.0275 0.1541`
#Coefficients:``
#sigma^2 estimated as 0.6503: log likelihood=-163.94#AIC=335.87 AICc=336.34 BIC=350.44这是SAS代码:
#sigma^2 estimated as 0.6503: log likelihood=-163.94
#AIC=335.87 AICc=336.34 BIC=350.44
proc arima data=BL; identify var=sales(1) crosscorr=lead(1); estimate q=1 input=( 3 $ ( 0 ) / ( 1) lead) method=ml; forecast out = out1 lead = 0; run;