R: моделировать данные временного ряда, которые следуют за AR (1) 1000 испытаний - PullRequest
0 голосов
/ 27 февраля 2020

Я хочу, чтобы я мог смоделировать данные временного ряда, которые следуют авторегрессионной модели AR первого порядка не только один раз, но 1000 раз, так что он будет выводить в среднем 1000 попыток, чтобы сформировать окончательный результат как просто набор. Следующие MWE демонстрируют только одну пробную версию:

n <- 15
a <- 0.5
e <- rnorm(n+100)
x <- double(n+100)
x[1] <- rnorm(1)
for(i in 2:(n+100)) {
  x[i] <- a * x[i-1] + e[i]
}
x <- ts(x[-(1:100)])

Почему я хочу, чтобы при небольшой выборке временного ряда он не соответствовал указанному параметру. Я думаю о нескольких повторных испытаниях до 1000 раз; таким образом, что первая выборка из всех 1000 испытаний усредняется и делается в качестве первой выборки серии, как и вторая до 1000-й выборки.

С учетом вышеизложенного я знаю окончательный временной ряд данные, которые будут 15, будут сходиться к AR (1) с a=0.5. но я не знаю, как это сделать 1000 раз и усреднить их в R.

1 Ответ

1 голос
/ 27 февраля 2020

Я рекомендую использовать arima.sim для имитации данных из модели ARIMA. Затем мы можем обернуть arima.sim в replicate l oop и усреднить данные, используя rowMeans; Вот воспроизводимый пример, где мы генерируем 1000 временных рядов (каждый из которых состоит из 100 временных точек) из модели AR (1).

set.seed(2020)
n <- 100
mat <- replicate(1000, arima.sim(n = n, model = list(ar = 0.5)))

Это вернет матрицу 100x1000. Теперь мы можем вычислить среднее значение по строке и сохранить полученный объект как ts объект временных рядов.

ts <- as.ts(rowMeans(mat))

library(forecast)
autoplot(ts)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...