Simulando uma excursão browniana usando uma ponte browniana?

11

Gostaria de simular um processo de excursão browniana (um movimento browniano condicionado sempre será positivo quando a em ). Como um processo de excursão browniana é uma ponte browniana condicionada a ser sempre positiva, eu esperava simular o movimento de uma excursão browniana usando uma ponte browniana.0 t = 10<t<10t=1

No R, estou usando o pacote 'e1017' para simular um processo de ponte browniana. Como posso usar esse processo de ponte browniana para criar uma excursão browniana?

RPz
fonte
4
Não basta simular o valor absoluto de uma ponte browniana?
Alex R.
1
@AlexR. no [padding]
P.Windridge 26/09
1
No entanto, vale a pena refazer, no entanto, que um movimento browniano condicionado a ser positivo pode ser realizado refletindo o BM em torno de seu máximo em execução, o que é resultado de Pitman. Outra maneira de realizar um BM condicionado a permanecer positivo é pelo valor absoluto de um BM 3d .
P.Windridge 26/09
1
@AlexR. - Atualizei minha resposta abaixo para mostrar que, mesmo para caminhadas aleatórias simples, os resultados positivos do condicionamento induzem comportamentos diferentes a simplesmente pegar o valor absoluto. Para pontes brownianas especificamente, intuitivamente para pequeno , o comportamento de é como (porque ) e BM satisfaz a lei do logaritmo iterado (portanto, o " " é irrelevante para pequeno o suficiente Assim, é como um BM refletido para pequeno . Isso tem um comportamento bem diferente de condicionado a permanecer positivo ...B B t | W t B B t = W t - t W 1 O p ( t ) t | B B t | t W ttBBt|WtBBt=WttW1Op(t)t|BBt|tWt
P.Windridge

Respostas:

7

Uma excursão browniana pode ser construída a partir de uma ponte usando a seguinte construção de Vervaat: https://projecteuclid.org/download/pdf_1/euclid.aop/1176995155

Uma aproximação rápida em R, usando o código BB @ whuber, é

n <- 1001
times <- seq(0, 1, length.out=n)

set.seed(17)
dW <- rnorm(n)/sqrt(n)
W <- cumsum(dW)

# plot(times,W,type="l") # original BM

B <- W - times * W[n]   # The Brownian bridge from (0,0) to (1,target)

# plot(times,B,type="l")

# Vervaat construction
Bmin <- min(B)
tmin <- which(B == Bmin)
newtimes <- (times[tmin] + times) %% 1
J<-floor(newtimes * n)
BE <- B[J] - Bmin
plot(1:length(BE)/n,BE,type="l")

insira a descrição da imagem aqui

Aqui está outro gráfico (de set.seed (21)). Uma observação importante em uma excursão é que o condicionamento realmente se manifesta como uma "repulsão" de 0, e é improvável que você veja uma excursão chegar perto de no interior de . ( 0 , 1 )0(0,1)insira a descrição da imagem aqui


Além: A distribuição do valor absoluto de uma ponte browniana e a excursão, condicionada a ser positiva , são não é o mesmo. Intuitivamente, a excursão é repelida a partir da origem, porque os caminhos brownianos que se aproximam demais da origem provavelmente serão negativos logo depois e, portanto, serão penalizados pelo condicionamento. ( B B t ) 0 t 1(|BBt|)0t1(BBt)0t1

Isso pode até ser ilustrado com uma ponte de caminhada aleatória simples e uma excursão em etapas, que é um análogo natural e discreto da BM (e converge para BM à medida que as etapas se tornam grandes e você redimensiona).6

Na verdade, use um SRW simétrico a partir de . Primeiro, vamos considerar o condicionamento da "ponte" e ver o que acontece se considerarmos o valor absoluto. Considere todos os caminhos simples de comprimento que começam e terminam em . O número desses caminhos é . Existem para os quais . Em outras palavras, a probabilidade do valor absoluto da nossa "ponte" SRW (condicionada ao final em ) ter o valor 0 na etapa é .s 6 00s60(63)=202×(42)=12|s2|=00212/20=0.6

Em segundo lugar, consideraremos o condicionamento da "excursão". O número de caminhos simples não negativos de comprimento que terminam em é o número catalão . Exatamente desses caminhos têm . Assim, a probabilidade de nossa "excursão" SRW (condicionada a permanecer positiva e terminar em ) ter valor 0 na etapa é .s6=230Cm=3=(2mm)/(m+1)=52s2=0022/5=0.4<0.6

Caso você ainda duvide que esse fenômeno persista no limite, considere a probabilidade de pontes SRW e excursões de comprimento atingir 0 na etapa .4n2n

Para a excursão SRW: temos usando os aysmptotics da wikipedia https://en.wikipedia.org/wiki / Catalan_number . Ou seja, é como eventualmente.

P(S2n=0|Sj0,j4n,S4n=0)=Cn2/C2n(42n/πn3)/(42n/(2n)3π)
cn3/2

Para abs (ponte SRW): usando os assintóticos da wikipedia https://en.wikipedia.org/wiki/Binomial_coefficient . É como .

P(|S2n|=0|S4n=0)=(2nn)2/(4n2n)(4n/πn)2/(42n/2nπ)
cn1/2

Em outras palavras, a probabilidade assintótica de ver a ponte SRW condicionada a ser positiva em próximo ao meio é muito menor do que a do valor absoluto da ponte. 0


Aqui está uma construção alternativa baseada em um processo 3D Bessel em vez de uma ponte browniana. Uso os fatos explicados em https://projecteuclid.org/download/pdf_1/euclid.ejp/1457125524

Visão geral- 1) Simule um processo 3d Bessel. É como um BM condicionado a ser positivo. 2) Aplique um redimensionamento de espaço-tempo apropriado para obter uma ponte de Bessel 3 (Equação (2) no artigo). 3) Use o fato (observado logo após o Teorema 1 no artigo) de que uma ponte de Bessel 3 realmente tem a mesma distribuição que uma excursão browniana.

Uma pequena desvantagem é que você precisa executar o processo de Bessel por um bom tempo (T = 100 abaixo) em uma grade relativamente fina para que a escala de espaço / tempo seja ativada no final.

## Another construction of Brownian excursion via Bessel processes
set.seed(27092017)
## The Bessel process must run for a long time in order to construct a bridge
T <- 100
n <- 100001
d<-3 # dimension for Bessel process
dW <- matrix(ncol = n, nrow = d, data=rnorm(d*n)/sqrt(n/T))
dW[,1] <- 0
W <- apply(dW, 1, cumsum)
BessD <- apply(W,1,function(x) {sqrt(sum(x^2))})

times <- seq(0, T, length.out=n)
# plot(times,BessD, type="l") # Bessel D process


times01 <- times[times < 1]
rescaletimes <- pmin(times01/(1-times01),T)
# plot(times01,rescaletimes,type="l") # compare rescaled times

# create new time index
rescaletimeindex <- sapply(rescaletimes,function(x){max(which(times<=x))} )

BE <- (1 - times01) * BessD[rescaletimeindex]
plot(times01,BE, type="l")

Aqui está a saída: insira a descrição da imagem aqui

P.Windridge
fonte
5

O Princípio da Reflexão afirma

se o caminho de um processo de Wiener atingir um valor no tempo , o caminho subsequente após o tempo terá a mesma distribuição que o reflexo do caminho subsequente sobre o valorf(t)f(s)=at=ssa

Wikipedia , acessado em 26/09/2017.

Consequentemente, podemos simular uma ponte browniana e refleti-la sobre o valor simplesmente tomando seu valor absoluto. A ponte Browniano é simulada subtraindo a tendência do ponto de partida para a extremidade a partir do movimento browniano em si. (Sem qualquer perda de generalidade, podemos medir o tempo em unidades que produzem Portanto, no momento simplesmente subtraia de .)a=0(0,0)(T,B(T))BT=1tB(T)tB(t)

O mesmo procedimento pode ser aplicado para exibir um movimento browniano condicional não apenas ao retornar a um valor especificado no tempo (o valor é para a ponte), mas também ao permanecer entre dois limites (que necessariamente incluem o valor inicial de no tempo e o valor final especificado).T>0000

![Figura

Esse movimento browniano começa e termina com um valor zero: é uma ponte browniana.

Figura 2

O gráfico vermelho é uma excursão browniana desenvolvida a partir da ponte browniana anterior: todos os seus valores são não-negativos. O gráfico azul foi desenvolvido da mesma maneira, refletindo a ponte browniana entre as linhas pontilhadas toda vez que as encontra. O gráfico cinza exibe a ponte browniana original.

Os cálculos são simples e rápidos: divida o conjunto de tempos em pequenos intervalos, gere incrementos normais independentes distribuídos de forma idêntica para cada intervalo, acumule-os, subtraia a tendência e faça as reflexões necessárias.

Aqui está o Rcódigo. Nele, Westá o movimento browniano original, Bé a ponte browniana e B2a excursão restrita entre dois valores especificados ymin(não positivo) e ymax(não negativo). Sua técnica para realizar a reflexão usando o %%operador de módulo e o mínimo componente a componente pminpode ser de interesse prático.

#
# Brownian bridge in n steps from t=0 to t=1.
#
n <- 1001
times <- seq(0, 1, length.out=n)
target <- 0                        # Constraint at time=1
set.seed(17)
dW <- rnorm(n)
W <- cumsum(dW)
B <- W + times * (target - W[n])   # The Brownian bridge from (0,0) to (1,target)
#
# The constrained excursion.
#
ymax <- max(abs(B))/5              # A nice limit for illustration
ymin <- -ymax * 2                  # Another nice limit
yrange2 <- 2*(ymax - ymin)
B2 <- (B - ymin) %% yrange2
B2 <- pmin(B2, yrange2-B2) + ymin
whuber
fonte
por favor, compartilhe o código da sua "excursão browniana" (trama vermelha). A olho, parece mais um tipo de movimento browniano refletido, restrito a terminar em . Eu acho que isso tem uma distribuição bastante diferente de uma excursão, que experimenta repulsa da origem, ou seja, sua percepção (em vermelho) parece bastante atípica. 0
P.Windridge 26/09
@ P.Windridge Desculpe; Eu esqueci: a excursão é abs(B). Lembre-se de que se trata de um movimento browniano condicional a duas restrições: é igual ao targettempo e, em toda parte, não é negativo. 1
whuber
1
Não esqueci :) Estou dizendo que acredito que tem uma distribuição bastante diferente de condicionada a ser positiva (isto é, uma excursão) :)(abs(BBt))0t1(BBt)0t1
P.Windridge
4
As distribuições são diferentes, então eu voto desculpe.
P.Windridge
2

Você pode usar um método de rejeição: simule pontes brownianas e mantenha as positivas. Funciona.

Mas. É muito lento, pois muitas trajetórias de amostra são rejeitadas. E quanto maior a "frequência" que você definir, menor a probabilidade de encontrar trajetórias.

succeeded <- FALSE
while(!succeeded)
{
  bridge <- rbridge(end = 1, frequency = 500)
  succeeded=all(bridge>=0)
}
plot(bridge)

Você pode acelerar mantendo as trajetórias negativas também.

while(!succeeded)
{
  bridge <- rbridge(end = 1, frequency = 500)
  succeeded=all(bridge>=0)||all(bridge<=0)
}
bridge = abs(bridge)
plot(bridge)

insira a descrição da imagem aqui

RUser4512
fonte
2
O problema com esse método é que, se você simular com tamanho menor, a probabilidade de uma ponte browniana ser negativa em algum momento vai para 1 nas proximidades . t=0
Alex R.
De fato, houve um pequeno aviso;) "E quanto maior a" frequência "que você definir, menor a probabilidade de encontrar trajetórias." ... Estou apenas meio satisfeito com a minha resposta, mas é a única coisa que posso pensar sobre se eu tivesse que começar com uma ponte browniana. Procurando (e esperando) por uma resposta melhor!
RUser4512