Это проблема, над которой я пытаюсь работать.
Вот что я попробовал.
Сначала смоделируйте данные:
library(forecast)
library(ggplot2)
set.seed(123)
n <- 1000
random_data <- rnorm(n, mean = 0, sd = 1)
random_ts <- ts(random_data, frequency = 12)
Далее я подгоняю модель
fit <- auto.arima(random_ts)
Series: random_ts
ARIMA(0,0,0)(0,0,1)[12] with zero mean
Coefficients:
sma1
-0.0792
s.e. 0.0305
sigma^2 = 0.9771: log likelihood = -1406.89
AIC=2817.79 AICc=2817.8 BIC=2827.6
Вот где я застрял: как мне смоделировать 100 траекторий из этой модели и записать среднее значение? Нужен ли мне для этого arima.sim()?
Я подумал, что это можно сделать так же, как прогнозирование?
Спасибо!
Вы можете использовать forecast::simulate
для моделирования желаемых траекторий. Каждая траектория представляет собой временной ряд. Затем replicate
100 раз вычислите средние значения строки и приведите ее к классу "ts"
.
library(forecast)
#> Registered S3 method overwritten by 'quantmod':
#> method from
#> as.zoo.data.frame zoo
set.seed(123)
n <- 1000L
random_data <- rnorm(n, mean = 0, sd = 1)
random_ts <- ts(random_data, frequency = 12)
fit <- auto.arima(random_ts)
fit
#> Series: random_ts
#> ARIMA(0,0,0)(0,0,1)[12] with zero mean
#>
#> Coefficients:
#> sma1
#> -0.0792
#> s.e. 0.0305
#>
#> sigma^2 = 0.9771: log likelihood = -1406.89
#> AIC=2817.79 AICc=2817.8 BIC=2827.6
R <- 100L
traj <- replicate(R, simulate(fit, nsim = n))
str(traj)
#> num [1:1000, 1:100] -0.8955 -1.1597 -0.0684 -0.0456 -2.5704 ...
mean_traj <- rowMeans(traj) |> ts(frequency = 12L)
plot(mean_traj)
Created on 2024-09-06 with reprex v2.1.0
Вопрос в заголовке совершенно отличается от вопросов в теле.