我模拟了一维对称的随机游走过程:
$$y_t=y_{t-1}+\varepsilon_t$$
其中白噪声在时间段$\varepsilon_t \sim 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_{it}$ series (i=1,...,1000;t=1,...,1000)
。 (在此之后,我会检查($y_1=0$)
$t=3$, $t=5$ and $t=10$.
的可能性
哪个函数允许我用$y_t$
随机游走时间序列进行这种重复?
答案 0 :(得分:1)
尝试以下方法:
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个随机行走,并且在第二步中我计算累积总和,其应该对应于随机行走,假设{{{ 1}}。
请注意,我忽略了您的错误是-1或1,因为我不确定这是您的意图。话虽如此,您可以使用以下行轻松调整上述代码,以创建1或-1的错误:
y_0=0
如果您真的想要反复进行而不是同时进行,可以定义一个返回随机游走的函数,然后使用 errors2 <- ifelse(errors > 0, 1, -1)
。请注意,您不应该对函数内部的种子进行硬编码,以避免始终复制相同的随机游走。