Eine Brownsche Exkursion kann von einer Brücke aus mit der folgenden Konstruktion von Vervaat konstruiert werden:
https://projecteuclid.org/download/pdf_1/euclid.aop/1176995155
Eine schnelle Annäherung in R unter Verwendung des BB-Codes von @ whuber ist
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")
Hier ist eine weitere Handlung (aus set.seed (21)). Eine Schlüsselbeobachtung mit einem Ausflug ist , dass die Konditionierung tatsächlich manifestiert sich als ein „Abstoßung“ von 0, und Sie sind wahrscheinlich nicht einen Ausflug nahe kommen , um zu sehen im Innern von ( 0 , 1 )0( 0 , 1 ) .
Nebenbei: Die Verteilung des Absolutwertes einer Brownschen Brücke und der Auslenkung ( B B t ) 0 ≤ t ≤ 1( | B B.t| )0 ≤ t ≤ 1( B B.t)0 ≤ t ≤ 1 als positiv konditionierte sind nicht gleich. Intuitiv wird die Exkursion vom Ursprung abgestoßen, da Brownsche Pfade, die dem Ursprung zu nahe kommen, wahrscheinlich bald danach negativ werden und somit durch die Konditionierung bestraft werden.
Dies kann sogar mit einer einfachen Zufallsbrücke und einem Ausflug auf Stufen veranschaulicht werden. Dies ist ein natürliches diskretes Analogon von BM (und konvergiert zu BM, wenn die Schritte groß werden und Sie neu skalieren).6
Nehmen Sie in der Tat eine symmetrische SRW ab . Betrachten wir zunächst die "Brücken" -Konditionierung und sehen, was passiert, wenn wir nur den absoluten Wert nehmen. Berücksichtigen Sie alle einfachen Pfaden s der Länge 6 , die am Anfang und Ende 0 . Die Anzahl solcher Pfade beträgt ( 60s60. Es gibt2× ( 4(63) = 20davon, für die| s2| =0. Mit anderen Worten, die Wahrscheinlichkeit für denAbsolutwertder SRW „Brücke“ (konditionierte Ende bei0bis) Wert 0 beiSchritt weist2ist12/20=0,6.2×(42)=12|s2|=00212/20=0.6
Zweitens werden wir die "Exkursions" -Konditionierung betrachten. Die Anzahl der nicht negativen einfachen Pfade der Länge 6 = 2 ∗ 3 , die bei 0 enden, ist die katalanische Zahl C m = 3 = ( 2 ms6=2∗30. Genau2dieser Pfade habens2=0. Somit ist die Wahrscheinlichkeit für unsere SRW „Exkursion“ (konditionierte zu bleiben positive und endet bei0) haben Wert 0 im Schritt2ist2/5=0,4<0,6.Cm=3=(2mm)/(m+1)=52s2=0022/5=0.4<0.6
Falls Sie immer noch bezweifeln, dass dieses Phänomen in der Grenze anhält, können Sie die Wahrscheinlichkeit berücksichtigen, dass SRW-Brücken und Exkursionen der Länge in Schritt 2 n 0 treffen .4n2n
P(S2n=0|Sj≥0,j≤4n,S4n=0)=C2n/C2n∼(42n/πn3)/(42n/(2n)3π−−−−−−√)
cn−3/2
P(|S2n|=0|S4n=0)=(2nn)2/(4n2n)∼(4n/πn−−−√)2/(42n/2nπ−−−√)
cn−1/2
0
Hier ist eine alternative Konstruktion, die auf einem 3D-Bessel-Prozess anstelle einer Brownschen Brücke basiert. Ich verwende die in https://projecteuclid.org/download/pdf_1/euclid.ejp/1457125524 erläuterten Fakten
Übersicht - 1) Simulieren Sie einen 3D-Bessel-Prozess. Dies ist wie ein BM, der darauf konditioniert ist, positiv zu sein. 2) Wenden Sie eine geeignete Zeit-Raum-Neuskalierung an, um eine Bessel 3-Brücke zu erhalten (Gleichung (2) in der Arbeit). 3) Verwenden Sie die Tatsache (kurz nach Satz 1 in der Arbeit vermerkt), dass eine Bessel 3-Brücke tatsächlich die gleiche Verteilung hat wie eine Brownsche Exkursion.
Ein kleiner Nachteil ist, dass Sie den Bessel-Prozess eine Weile (T = 100 unten) in einem relativ feinen Raster ausführen müssen, damit die Raum / Zeit-Skalierung am Ende einsetzt.
## 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")
Hier ist die Ausgabe: