在R

时间:2019-06-20 07:04:28

标签: r predict arima

我正在尝试使用自变量(ARIMAX)将R中的Arima模型拟合。 模型拟合数据包含正数和负数。问题在于,拟合模型后,预测函数会抛出甚至与用于拟合模型的数据都不接近的数字。

# Sample Data
y <- c( -0.05628948,  0.01907727,  0.00000000, -0.01907727,  0.00000000, -0.01940678,
0.05724351, -0.01875946, -0.03848405,  0.05724351)
x <- c(0.000000000,-0.071700531 ,-0.023863364,  0.013701646,  0.000000000,  0.085009788,
  -0.028666940, -0.046181130, -0.027316528,  0.006895152)

#Fit the model
model <- arima(y, order=c(2,0,1),fixed = c(NA,NA,NA,NA,NA),xreg=x)

#Use the predict function with x again as the input
fore <- predict(model,newxreg = x)[1]

########################Output########################################
Model - 
Call:
arima(y, order = c(2, 0, 1), xreg = x, fixed = c(NA, NA, NA, NA, NA))

Coefficients:
         ar1      ar2      ma1  intercept       x
      -0.7935  -0.5747  -0.2986    -0.0010  0.0569
s.e.   0.4327   0.4399   0.6892     0.0026  0.1245

sigma^2 estimated as 0.0005055:  log likelihood = 22.91,  aic = -33.83

Predict - 

> fore
$`pred`
Time Series:
Start = 11 
End = 20 
Frequency = 1 
[1] -0.03206240 -0.03614031 -0.03341961 -0.03128313 -0.03206240 -0.02722754
[7] -0.03369281 -0.03468892 -0.03361601 -0.03167025

不知道为什么所有来自预报的值都只是负数(而原始y既有正值又有负值),而与原始y值相差甚远。请指教。谢谢!

x and y

2 个答案:

答案 0 :(得分:0)

这里发生了一些事情。一种是您正在使用predict,而没有n.ahead参数。这是在预测下一个值(在本示例中为时间11),然后仅使用x参数在接下来的9个值上稍微更改该预测(n.ahead = 1是predict.Arima的默认值)。要获得时间序列的实际预测,请使用forecastpredictn.ahead = 10

另一件事是,即使x值相同,您也不应该期望接下来10个时间段的预测数等于前10个观测值。 ar和ma系数将在一个方向上发送预测。关于ma变量等的短存储在这里有很多内容,但是要点是,即使x变量相同,对未来的预测也不会与过去相同。此示例)。

我认为您的主要担忧在第一段中得到了解决。以下是使用n.ahead = 10或使用forecast函数的预测。

fore <- predict(model,newxreg = x, n.ahead = 10)[1]
fore

$pred
Time Series:
Start = 11 
End = 20 
Frequency = 1 
 [1] -0.032062405 -0.013745753  0.022305060 -0.014876850 -0.003612005
 [6]  0.014262754 -0.009471801 -0.004258822  0.001812099 -0.003776596

forecast(model, xreg = x)
   Point Forecast       Lo 80       Hi 80       Lo 95      Hi 95
11   -0.032062405 -0.06087474 -0.00325007 -0.07612707 0.01200226
12   -0.013745753 -0.05641143  0.02891993 -0.07899728 0.05150577
13    0.022305060 -0.02118176  0.06579188 -0.04420229 0.08881241
14   -0.014876850 -0.05983585  0.03008215 -0.08363571 0.05388201
15   -0.003612005 -0.05066734  0.04344333 -0.07557693 0.06835292
16    0.014262754 -0.03300372  0.06152923 -0.05802508 0.08655059
17   -0.009471801 -0.05694644  0.03800283 -0.08207799 0.06313439
18   -0.004258822 -0.05212230  0.04360466 -0.07745970 0.06894205
19    0.001812099 -0.04610561  0.04972981 -0.07147172 0.07509592
20   -0.003776596 -0.05172413  0.04417094 -0.07710602 0.06955283

答案 1 :(得分:0)

在auto.arima / arima中添加lambda = 0以获得正数预测。