Имитация модели временных рядов в R - PullRequest
0 голосов
/ 10 марта 2020

Я хочу ответить на следующий вопрос, я знаю, что могу использовать функцию arima.sim, но я не уверен, как имитировать запрашиваемую модель:

Я хочу смоделировать следующее:

yt = α + βt + φyt − 1 + εt, εt ∼IIDN (0,1)

когда: альфа = 1, бета = 0 и тета = 0,8

перед каждым моделированием мы должны установить семя на 100 000. Примите начальное значение y0 = 0 и получите 500 наблюдений. Я пробовал следующее, но это не сработало:

set.seed(seed = 100000)
e <- rnorm(500)
m1 <- arima.sim(model = list(c(ma=0.8,alpha=1,beta=0)),n=500)

Мне нужно смоделировать 4 разные модели для 4 разных значений бета, тета и альфа. Есть предложения?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Так как вы использовали arima.sim в своей попытке, вот опция arima.sim:

set.seed(100000)
t <- 1:500
alpha <- 1
beta <- 0
theta <- 0.8
ts <- alpha + beta * t + arima.sim(list(ma = theta), n = length(t))

Поскольку beta = 0, нет определяемого c тренда, зависящего от времени, и процесс соответствует процессу MA (1) с ненулевым средним значением alpha.

Это разложение на детерминированный c и стохастический c термин соответствует переписыванию уравнения как

enter image description here

с процессом MA (1)

enter image description here

, где ϵ - iid N (0, 1) остатки.

Мы можем визуализировать данные

library(forecast)
autoplot(ts)

enter image description here

0 голосов
/ 10 марта 2020

1. (α, β, φ) = (1,0,0,8)

set.seed(seed = 1232020)
e <- rnorm(500,mean=0,sd=1)

alpha <- 1
beta <- 0
theta <- 0.8
m_1 <- 0
for(i in 2:length(e)){
  m_1[i] <- alpha+beta*i+theta*m_1[i-1]+e[i]
}

Думаю, это должно сработать:)

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