2016-02-21 16 views
5

は私が一次元および対称ランダムウォーク過程をシミュレートしています:Rでこのランダムウォークシミュレーションを1000回繰り返す方法は?

ホワイトノイズが期間 tepsilon[t] ~ N(0,1)で示される
y[t] = y[t-1] + epsilon[t] 

。この手順ではドリフトはありません。

また、Pr(y[i] = +1) = Pr(y[i] = -1) = 0.5があるため、RWは対称です。ここで

は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)をシミュレートしたいと思います。 (その後、私はt=3t=5t=10を原点(y[1]=0)に戻って得る確率をチェックします。)

どの機能私はy[t]ランダムウォークの時系列を繰り返し、この種の操作を行うことができますか?

+1

私は@Timに同意しますが、スタックオーバーフローについては質問するのが良い質問だと思います。質問をそこに送れますか? –

答えて

6

sumi=1からi=tに取られるy[t] = y[0] + sum epsilon[i]、ので、配列y[t]インスタンスR cumsum機能のために使用して、一度に計算することができます。シリーズT = 10 3回繰り返すこと次に簡単である:

N=T=1e3 
y=t(apply(matrix(sample(c(-1,1),N*T,rep=TRUE),ncol=T),1,cumsum)) 

yの各行は、次に、シミュレートランダムウォークシリーズからです。

関連する問題