如何在 R 中重复 1000 次随机游走模拟?

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

我正在模拟一个一维和对称的随机游走过程:

$$y_t=y_{t-1}+\varepsilon_t$$

其中白噪声在时间段 $t$ 中用 $\varepsilon_t \sim N(0,1)$ 表示。此过程中没有漂移。

另外,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_{it}$ series (i=1,...,1000;t=1,...,1000)。 (之后我会检查在$t=3$, $t=5$ and $t=10$.

回到原点($y_1=0$)的概率

哪个函数允许我用 $y_t$ 随机游走时间序列进行这种重复?

尝试以下操作:

length_of_time_series <- 1000
num_replications <- 1000

errors <- matrix(rnorm(length_of_time_series*num_replications),ncol=num_replications)
rw <- apply(errors, 2, cumsum)

这会同时创建 1000 个随机游走,首先定义一个矩阵,其中填充了从标准正态分布中提取的白噪声误差项,在第二步中,我计算累积和,这应该对应于你的随机游走,假设y_0=0.

请注意,我忽略了您的错误是 -1 或 1,因为我不确定这是您的意图。话虽如此,您可以使用以下行轻松调整上述代码以创建 1 或 -1 的错误:

 errors2 <- ifelse(errors > 0, 1, -1)

如果你真的想重复做而不是同时做,你可以定义一个returns随机游走的函数,然后使用replicate。请注意,您不应在函数内对种子进行硬编码,以避免一直重复相同的随机游走。