Tôi đang cố gắng giải bài tập 3.9.10 trên p. 66 trong "Tính toán chuyển động Brownian" của Ubbo F. Wiersema (John Wiley & Sons, 2008) , yêu cầu mô phỏng tích phân ngẫu nhiên
Tôi đã viết một mô phỏng trong R, như hình dưới đây. Tuy nhiên, phương sai dẫn đến từ mô phỏng này là
> v_sim
8 9 10 11
0.4771895 0.4304475 0.5260542 0.4664552
không xuất hiện để hội tụ đến giá trị dự đoán . Hiện tượng tương tự được quan sát thấy khi thay đổi hạt giống thành và cũng như khi số lượng các khoảng phụ được tăng lên thành . Tôi đang làm gì sai?
NSIMS <- 1000L # number of simulations of the integral for every "level"
LEVELS <- 8L:11L # level n corresponds to 2^n sample points between 0 and 1
SEED <- 1
set.seed(SEED)
sims <- data.frame(simid = 1L:NSIMS) # sims contains one colum per every level.
# The column simid is a dummy column
# intended to avoid an error message
# when columns are added to sims
# on the fly inside the following loop.
# This column is deleted after the loop
# ends.
for (n in LEVELS)
{
nticks <- 2^n # nticks is the number of sample points between 0 and 1
delta <- 1/nticks
ticks <- seq(from = 0, to = 1, by = delta)
std <- sqrt(delta)
sim <- vector(mode = "numeric", length = NSIMS)
for (j in 1L:NSIMS)
{
b <- cumsum(c(0, rnorm(nticks, sd = std))) # b is a simulated
# Brownian motion path
# sampled at the tick
# marks.
integral <- 0
for (i in 1L:(length(b) - 1L))
{
integral <- integral + b[i]*(b[i + 1] - b[i])
}
sim[j] <- integral
}
sims[, as.character(n)] <- sim
}
sims$simid <- NULL
m_sim <- sapply(sims, mean)
v_sim <- sapply(sims, var)
cumsum
thay cho i
vòng lặp. Ma trận / áp dụng cũng có thể được ưa thích ở đây cho khung dữ liệu / sapply, v.v ... Đây là một bài tập rất tốt. Gợi ý: nêu rõ những gì bạn mong muốn tìm và tại sao, tìm phân phối chung của biến tổng hợp nói .