我正在尝试使用自变量(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值相差甚远。请指教。谢谢!
答案 0 :(得分:0)
这里发生了一些事情。一种是您正在使用predict
,而没有n.ahead
参数。这是在预测下一个值(在本示例中为时间11),然后仅使用x参数在接下来的9个值上稍微更改该预测(n.ahead = 1
是predict.Arima的默认值)。要获得时间序列的实际预测,请使用forecast
或predict
和n.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以获得正数预测。