【发布时间】:2020-12-12 14:14:34
【问题描述】:
大多数时候运行arima.sim() 函数来模拟arima mosel 的特定顺序,但是当通过auto.arima() 函数检查此类模拟时间序列数据时,它通常不会与 ARIMA 的期望和指定顺序相同在arima.sim()。
我想知道在获得所需模型的真实顺序之前,可能需要对其参数的不同组合(样本大小、标准偏差和模型系数)运行 arima.sim() 函数多少次,我希望这个R 脚本在count 运行arima.sim() 多少时间之后才能获得ARIMA-order 函数中指定的ARIMA-order。
**Here is my trial**
library(forecast)
N <- c(10, 20, 30)
SD <- c(1, 2, 3, 4, 5) ^ 2
phi <- c(0.2, 0.4, 0.6)
## generate all combos
all_combos <- expand.grid(N = N, SD = SD, phi = phi)
## create function
set.seed(123)
res2 <- by(all_combos, all_combos["N"], function(DF){
res <- mapply(function(N, SD, phi){
cnt <- 0
repeat {
x <- arima.sim(n=N, model = list(ar=phi, order = c(1, 0, 0)), sd = SD)
if(all(arimaorder(auto.arima(x), ic = "aicc"))) != c(1, 0, 0) cnt <- cnt + 1){
}
{else(all(arimaorder(auto.arima(x), ic = "aicc"))) == c(1, 0, 0) cnt <- cnt + 1)}
break
}
cnt
}, DF[["N"]], DF[["SD"]], DF[["phi"]])
names(res) <- paste("SD", DF[["SD"]], "phi", DF[["phi"]], sep = "-")
res
})
res2
我很想知道在获得第一个 ARIMA(1, 0, 0) 之前要对 arima.sim() 进行多少次试验。
【问题讨论】:
-
算法是(1)将每个组合的计数设置为零。 (2) 计算在所有combo第一次成功获得
(1, 0, 0)之前模型订单不是(1, 0, 0)的次数。 (3)所有combo获得订单(1, 0, 0)时停止,不计入计数。 -
在这种情况下,我的解决方案不会给您想要的结果?如果您运行它足够多次,它会在您获得
c(1, 0, 0)组合时为您提供数字。 -
我不能为以下任何一项投票,因为自从我提出赏金以来,已经添加了没有价值的正确答案。
标签: r if-statement repeat arima