Как мне моделировать 10 данных временных рядов ARIMA по указанным ордерам, используя R - PullRequest
1 голос
/ 20 октября 2019

Я хочу смоделировать данные временного ряда 10 ARIMA, которые будут иметь следующий порядок (1,0,1), (1,1,1) and (2,2,2). так что если я протестирую каждую серию с функцией auto.arima из пакета forecast, это даст мне то, что я указал.

Я попробовал эти

set.seed(123)
n <- 10

# white noise:
wn <- ts(rnorm(n))

# initialise the first two values:
arma11 <- arma22 <- wn[1:2]

# loop through and create the 3:1000th values:
for(i in 3:n){
  arma11[i]   <- arma11[i - 1] * 0.8 + wn[i - 1] * 0.3 + wn[i] 
 arma22[i]   <- arma22[i - 1] * 0.862537 + arma22[i - 2]  * (-0.3) + 0.8 * wn[i-1] - 
0.3 * wn[i-2] + wn[i]
}

# turn them into time series, and for the last two, "integrate" them via cumulative sum

arma11 <- ts(arma11)
arima111 <- ts(cumsum(arma11))
arima222 <- ts(cumsum(cumsum(arma22)))

Тест для заказа ARIMA

auto.arima(arma11, ic=c("bic"), approximation = F, allowdrift =F)
auto.arima(arima111, ic=c("bic"), approximation = F, allowdrift =F)
auto.arima(arima222, ic=c("bic"), approximation = F, allowdrift =F)

Ни один из arma11, arima111 или arima222 не дает мне указанный мной порядок, может ли кто-нибудь мне помочь?

1 Ответ

1 голос
/ 20 октября 2019

На стороне программирования вы можете использовать arima.sim().

sim <- arima.sim(n=100, list(order = c(1, 0, 1), ar=0.7, ma=-0.3), sd=sqrt(0.5))

auto.arima(sim, allowmean=FALSE, allowdrift=FALSE, trace=TRUE)

Вы должны понимать, что оценка модели ARIMA не является чистым процессом. Первое, что бросается в глаза, это то, что n=10 может быть слишком маленьким для надежной оценки. С trace=TRUE вы можете видеть, насколько близки могут быть модели-кандидаты. auto.arima() проходит довольно много шагов, если вы не укажете параметры точно.

...