2016-02-21 18 views
5

Tôi đang mô phỏng một thủ tục bước đi ngẫu nhiên một chiều và đối xứng:Làm thế nào để lặp lại 1000 lần mô phỏng đi bộ ngẫu nhiên này trong R?

y[t] = y[t-1] + epsilon[t] 

nơi tiếng ồn trắng được ký hiệu bởi epsilon[t] ~ N(0,1) trong khoảng thời gian t. Không có sự trôi dạt trong quy trình này.

Ngoài ra, RW là đối xứng, vì Pr(y[i] = +1) = Pr(y[i] = -1) = 0.5.

Dưới đây là mã của tôi trong 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) 

Tôi muốn để mô phỏng 1000 khác nhau y[i,t] loạt (i=1,...,1000; t=1,...,1000). (Sau đó, tôi sẽ kiểm tra khả năng nhận được trở lại nguồn gốc (y[1]=0) tại t=3, t=5t=10.)

Những chức năng sẽ cho phép tôi làm như thế này lặp lại với y[t] ngẫu nhiên đi bộ chuỗi thời gian?

+1

Tôi đồng ý với @Tim - nhưng tôi nghĩ đó là một câu hỏi hay để hỏi về tràn ngăn xếp. Chúng ta có thể chuyển câu hỏi đến đó không? –

Trả lời

6

Kể từ y[t] = y[0] + sum epsilon[i], nơi sum được lấy i=1-i=t, trình tự y[t] có thể được tính cùng một lúc, sử dụng ví dụ R cumsum chức năng. Lặp đi lặp lại hàng loạt T = 10³ lần là sau đó đơn giản:

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

vì mỗi dãy y là sau đó một loạt bước đi ngẫu nhiên mô phỏng.

Các vấn đề liên quan