我正在模拟一维对称的随机游走过程:
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]
随机游走时间序列进行这种重复?
答案 0 :(得分:6)
从y[t] = y[0] + sum epsilon[i]
开始,sum
从i=1
到i=t
的位置,可以一次计算序列y[t]
,例如使用R { {1}}功能。然后重复T =10³次的系列是直截了当的:
cumsum
因为N=T=1e3
y=t(apply(matrix(sample(c(-1,1),N*T,rep=TRUE),ncol=T),1,cumsum))
的每一行都是模拟的随机游走系列。