R 中带和不带 NA(ARIMA 和 Forecast 包)的时间序列预测
Time series prediction with and without NAs (ARIMA and Forecast package) in R
这是我关于堆栈溢出的第一个问题。
情况:我有 2 个时间序列。两个系列具有相同的值,但第二个系列在开始时有 5 个 NA。因此,第一个系列有 105 个观察值,第二个系列有 110 个观察值。我已经使用 Arima 函数分别为两个系列安装了 ARIMA(0,1,0)。然后我使用 forecast 包来预测未来的 10 步。
问题:尽管两个系列的 ARIMA 系数相同,但投影(10 步)似乎不同。我不确定为什么会这样。有没有人遇到过这个?非常感谢任何指导。
尝试过:我尝试设置种子,手动创建索引,并使用 auto.ARIMA 进行模型拟合。但是,none 的步骤帮助我消除了差异。
我添加了一张图片来向您展示我所看到的。请注意,我隐藏了系列的中间部分,以便您可以看到系列的开头和结尾。黄色突出显示的单元格是 'Forecast' 包的投影输出。从 R 中提取结果后,我手动添加了索引。
Time series projected and base in excel
Rates <- read.csv("Rates_for_ARIMA.csv")
set.seed(123)
#ARIMA with NA
Simple_Arima <- Arima(
ts(Rates$Rates1),
order = c(0,1,0),
include.drift = TRUE)
fcasted_Arima <- forecast(Simple_Arima, h = 10)
fcasted_Arima$mean
#ARIMA Without NA
Rates2 <- as.data.frame(Rates$Rates2)
##Remove the final spaces from the CSV
Rates2 <- Rates2[-c(106,107,108,109,110),]
Simple_Arima2 <- Arima(
ts(Rates2),
order = c(0,1,0),
include.drift = TRUE)
fcasted_Arima2 <- forecast(Simple_Arima2, h = 10)
fcasted_Arima2$mean
您能否分享您的数据和代码,以便其他人可以查看它是否存在任何问题?
我试着想出一个例子,两个系列的结果都一样,一个包含 NA,一个不包含。
library(forecast)
library(xts)
set.seed(123)
ts1 <- arima.sim(model = list(0, 1, 0), n = 105)
ts2 <- ts(c(rep(NA, 5), ts1), start = 1)
fit1 <- forecast::Arima(ts1, order = c(0, 1, 0))
fit2 <- forecast::Arima(ts2, order = c(0, 1, 0))
pred1 <- forecast::forecast(fit1, 10)
pred2 <- forecast::forecast(fit2, 10)
forecast::autoplot(pred1)
forecast::autoplot(pred2)
> all.equal(as.numeric(pred1$mean), as.numeric(pred2$mean))
[1] TRUE
这是我关于堆栈溢出的第一个问题。
情况:我有 2 个时间序列。两个系列具有相同的值,但第二个系列在开始时有 5 个 NA。因此,第一个系列有 105 个观察值,第二个系列有 110 个观察值。我已经使用 Arima 函数分别为两个系列安装了 ARIMA(0,1,0)。然后我使用 forecast 包来预测未来的 10 步。
问题:尽管两个系列的 ARIMA 系数相同,但投影(10 步)似乎不同。我不确定为什么会这样。有没有人遇到过这个?非常感谢任何指导。
尝试过:我尝试设置种子,手动创建索引,并使用 auto.ARIMA 进行模型拟合。但是,none 的步骤帮助我消除了差异。
我添加了一张图片来向您展示我所看到的。请注意,我隐藏了系列的中间部分,以便您可以看到系列的开头和结尾。黄色突出显示的单元格是 'Forecast' 包的投影输出。从 R 中提取结果后,我手动添加了索引。
Time series projected and base in excel
Rates <- read.csv("Rates_for_ARIMA.csv")
set.seed(123)
#ARIMA with NA
Simple_Arima <- Arima(
ts(Rates$Rates1),
order = c(0,1,0),
include.drift = TRUE)
fcasted_Arima <- forecast(Simple_Arima, h = 10)
fcasted_Arima$mean
#ARIMA Without NA
Rates2 <- as.data.frame(Rates$Rates2)
##Remove the final spaces from the CSV
Rates2 <- Rates2[-c(106,107,108,109,110),]
Simple_Arima2 <- Arima(
ts(Rates2),
order = c(0,1,0),
include.drift = TRUE)
fcasted_Arima2 <- forecast(Simple_Arima2, h = 10)
fcasted_Arima2$mean
您能否分享您的数据和代码,以便其他人可以查看它是否存在任何问题?
我试着想出一个例子,两个系列的结果都一样,一个包含 NA,一个不包含。
library(forecast)
library(xts)
set.seed(123)
ts1 <- arima.sim(model = list(0, 1, 0), n = 105)
ts2 <- ts(c(rep(NA, 5), ts1), start = 1)
fit1 <- forecast::Arima(ts1, order = c(0, 1, 0))
fit2 <- forecast::Arima(ts2, order = c(0, 1, 0))
pred1 <- forecast::forecast(fit1, 10)
pred2 <- forecast::forecast(fit2, 10)
forecast::autoplot(pred1)
forecast::autoplot(pred2)
> all.equal(as.numeric(pred1$mean), as.numeric(pred2$mean))
[1] TRUE