如何在 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
。请注意,您不应在函数内对种子进行硬编码,以避免一直重复相同的随机游走。
我正在模拟一个一维和对称的随机游走过程:
$$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
。请注意,您不应在函数内对种子进行硬编码,以避免一直重复相同的随机游走。