Построение броуновского моста от 0 до T - PullRequest
1 голос
/ 07 апреля 2019

Я пытаюсь смоделировать броуновский мост из процесса Винера, но борюсь с кодом.

Вот что я пытаюсь сделать в математической форме:

B(t) = W (t) − tW (1)

Этоважно, что W (T) = 0, так что процесс закрепляется в начале координат как при t = 0, так и при t = T (должен начинаться и заканчиваться B (t) = B (T) = 0

Здесь я определяю процесс Винера:

n <- 1000 
T <- 1 
delta <- T/n 
t <- seq(0,T, delta) 
set.seed(17) 
W1 <- cumsum(c(0,rnorm(n, 0, 1) * sqrt(delta))) 
plot(t, W1 ,type = 'l',
     xlab = 't', ylab = 'W(t)', xlim = c(0, T + delta))

Здесь я пытаюсь построить броуновский мост, но получаю неправильный результат:

B <- W1 - t * W1[T]   # The Brownian bridge from (0,0) to (1,target)
plot(times, B, type="l")

Я ожидаю, что B[1] == B[1001]быть [ИСТИНА] и равно 0, но в моем случае B [1001] не равно 0.

Есть предложения?

1 Ответ

1 голос
/ 07 апреля 2019

Есть только одна проблема - в определении B. Вместо этого вы хотите

B <- W1 - t * W1[n + 1]

, поскольку индексирование n + 1 (то есть выбор последнего элемента, соответствующего t = 1) ссылается на W1 как вектор, а не как процесс. Тогда действительно

B[1]
# [1] 0
B[1001]
# [1] 0

как и ожидалось. Также обратите внимание, что использование t и T в качестве имен переменных нежелательно, поскольку они оба уже выполняют важные роли; см ?t и ?T.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...