2014-10-05 65 views
0

我使用arima預測後,我得到了樣本結果。然後我手動計算,如coefficient(fit)%*% c(1,y(future value))進行預測。預測arima

但是,這兩個是不同的!我認爲這些價值應該是相同的。他們會怎樣?我錯過了這件事?

這是一個簡單的例子。

set.seed(1) 
zts <- ts(rnorm(240), start=c(1990,1), frequency=12) 
fit <- arima(window(zts, end=c(2000,12),frequency=12), order=c(1,0,0)) 
Call: 
arima(x = window(zts, end = c(2000, 12), frequency = 12), order = c(1, 0, 0)) 

Coefficients: 
     ar1 intercept 
     -0.0153  0.0954 
s.e. 0.0872  0.0732 

sigma^2 estimated as 0.7294: log likelihood = -166.47, aic = 338.94 

predict(fit, n.ahead=1) 
$pred 
     Jan 
2001 0.1059105 

$se 
     Jan 
2001 0.8540253 

我用了第二種方法!

t (c(0.0954, -0.0153))%*%c(1, 0.531496193) 
: 0.08726811 

===========> 0.08726811與0.1059105不同。

+0

0.08726811與s.e.類似。 0.0872(你的arima係數) – agstudy 2014-10-05 16:55:21

+0

最後一段代碼「0.531496193」的第二個括號中的第二個值是多少?它實際上應該是您的數據的最後一個值... – DatamineR 2014-10-05 17:02:25

+0

0.531496193是2001. Jan in zts(原始數據) – yoshi 2014-10-05 17:11:51

回答

0

在R arima首先貶低您的數據之前擬合模型。我可以重現predict結果:

coef(fit)%*%c(window(zts, end=c(2000,12),frequency=12)[132]-coef(fit)[2],1) 
0.1059105 
+0

window(zts,end = c(2000,12),frequency = 12)[132] --->得到-0.5888945這一個是2000,12:這是不同的價值:ZTS 2001年1月= 0.531496193。通常如果你想預測y [100],那麼coef(fit)%*%c(,y [100])不是y [99]? – yoshi 2014-10-05 17:13:49

+0

如果您正在生成一步提前預測,則應該使用時間序列數據中的最後一個值,對於您的情況是2000年12月,而不是2001年1月,這是您試圖預測的結果 – DatamineR 2014-10-05 17:16:46

+0

是否有幫助? – DatamineR 2014-10-06 17:31:07