Xn可以取值-1或1,概率为0.5.并且Sn = Sn-1 + Xn如何计算在Sn = X1 + X2 + ::: + Xn给出的时刻n观察到的部分和.我想在这里模拟随机游走.我做了以下但我不确定它是对的:
rw <- function(n){
x=numeric(n)
xdir=c(TRUE, FALSE)
step=c(1,-1)
for (i in 2:n)
if (sample(xdir,1)) {
x[i]=x[i-1]+sample(step,1)
} else {
x[i]=x[i-1]
}
list(x=x)
}
Run Code Online (Sandbox Code Playgroud)
请帮忙!
Jak*_*ead 43
你也可以真正简洁有效地完成这项工作 cumsum
set.seed(1)
n <- 1000
x <- cumsum(sample(c(-1, 1), n, TRUE))
Run Code Online (Sandbox Code Playgroud)
这个答案只是为了解释为什么你的代码不起作用。@jake-burkhead 给出了您实际编写代码的方式。
在此代码中,您只需执行一半的时间。这是因为您正在抽样来xdir
决定是否搬家。相反,我会在循环中推荐以下内容:
for(i in 2:n){
x[i] <- x[i - 1] + sample(step, 1)
}
Run Code Online (Sandbox Code Playgroud)
该sample(step, 1)
调用决定步行是否移动1
或-1
。
要计算部分和,您可以cumsum()
在生成 后使用x
。结果将是步行中给定点的部分和的向量。