How to repeat 1000 times this random walk simulation in R?

﹥>﹥吖頭↗ 提交于 2021-02-05 05:19:25

问题


I'm simulating a one-dimensional and symmetric random walk procedure:

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

where white noise is denoted by epsilon[t] ~ N(0,1) in time period t. There is no drift in this procedure.

Also, RW is symmetric, because Pr(y[i] = +1) = Pr(y[i] = -1) = 0.5.

Here's my code in 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)

I would like to simulate 1000 different y[i,t] series (i=1,...,1000; t=1,...,1000). (After that, I will check the probability of getting back to the origin (y[1]=0) at t=3, t=5 and t=10.)

Which function would allow me to do this kind of repetition with y[t] random walk time-series?


回答1:


Since y[t] = y[0] + sum epsilon[i], where the sum is taken from i=1 to i=t, the sequence y[t] can be computed at once, using for instance R cumsum function. Repeating the series T=10³ times is then straightforward:

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

since each row of y is then a simulated random walk series.



来源:https://stackoverflow.com/questions/35537779/how-to-repeat-1000-times-this-random-walk-simulation-in-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!