Как повторить 1000 раз это моделирование случайного блуждания в R?

Я моделирую одномерную и симметричную процедуру случайного блуждания:

y[t] = y[t-1] + epsilon[t]

где белый шум обозначается epsilon[t] ~ N(0,1) в период времени t, В этой процедуре нет дрейфа.

Кроме того, RW является симметричным, потому что Pr(y[i] = +1) = Pr(y[i] = -1) = 0.5,

Вот мой код в R:

set.seed(1)
t=1000
epsilon=sample(c(-1,1), t, replace = 1)

y<-c()
y[1]<-0
for (i in 2:t) {
  y[i]<-y[i-1]+epsilon[i]
}
par(mfrow=c(1,2))
plot(1:t, y, type="l", main="Random walk")
outcomes <- sapply(1:1000, function(i) cumsum(y[i]))
hist(outcomes)

Я хотел бы имитировать 1000 разных y[i,t] серии (i=1,...,1000; t=1,...,1000). (После этого я проверю вероятность возврата к исходной точке (y[1]=0) в t=3, t=5 а также t=10.)

Какая функция позволила бы мне делать такое повторение с y[t] временные ряды случайной прогулки?

1 ответ

Решение

Поскольку y[t] = y[0] + sum epsilon[i], где sum взят из i=1 в i=t, последовательность y[t] можно вычислить сразу, используя, например, R cumsum функция. Повторить серию T=10³ раз, тогда просто:

N=T=1e3
y=t(apply(matrix(sample(c(-1,1),N*T,rep=TRUE),ncol=T),1,cumsum))

так как каждый ряд y затем моделируется случайный ряд ходьбы.

Другие вопросы по тегам