Rayleigh Distribution

Problema:

Sean \(\{B_1(t), t\geq 0 \}\) y \(\{B_2(t), t\geq 0 \}\) dos movimientos Brownianos estándar independientes. Y sea

\[\begin{eqnarray} R(t) = \sqrt{ B_1(t)^2 + B_2(t)^2}, \ \ \ t \geq 0 \end{eqnarray}\] donde \(R(t)\) representa la distancia al origen de un movimiento Browniano bidimensional. Determine el valor esperado de R(t).

Solución:

\(R(t)\) tiene distribución Rayleigh

\[\begin{eqnarray} f(x) & = &\frac{x}{t} e^{-\frac{x^2}{2t}}, \ \ \ x>0 \\ & = & 0, \ \ \ d.o.m. \end{eqnarray}\]

con valor esperado

\[\sqrt{\frac{\pi t}{2}}\]

y varianza

\[\frac{4-\pi}{2} t\]

# Function para simular una caminata aleatoria simple
simMB <- function(t, nSteps, nReps){
  dt <- t/ nSteps
  # 
  simMat <- matrix(nrow=nReps, ncol=(nSteps+1))
  simMat[ ,1] <- 0
  for(i in 1:nReps){
    for(j in 2:(nSteps + 1)){
      simMat[i,j] <- simMat[i,j-1] + sqrt(dt)*rnorm(1,0,1)
    }
  }
  names <- c('Rep', sapply(0:nSteps, function(i) paste('S',i,sep='')))
  df <- data.frame('Rep'=1:nReps, simMat)
  colnames(df) <- names

  return(df)
}

Solución: Mil trayectorias del movimiento Browniano

# valores 
t <- 1000
nSteps <- 1000
nReps <- 1000

bm1 <- simMB(t, nSteps, nReps)
bm2 <- simMB(t, nSteps, nReps)
bm <- sqrt(bm1^2 + bm2^2)

# data
df <- bm %>% 
  pivot_longer(!Rep, names_to='Step', values_to='value') %>%
  mutate(t = as.numeric(substring(Step,2,10))*t/nSteps,
         Rep = as.character(Rep))

# Gráfico del Movimiento Browniano
options(repr.plot.width=16, repr.plot.height=8)
p1 <- ggplot(df, mapping=aes(x=t, y=value, color=Rep)) + 
  geom_line() + 
  #geom_step(moments, mapping=aes(x=t,y=mean),col='red',size=0.7, alpha=0.5) +
  #geom_step(moments, mapping=aes(x=t,y=sd_sup),col='blue',size=0.7,linetype = "dashed") +
  #geom_step(moments, mapping=aes(x=t,y=sd_inf),col='blue',size=0.7,linetype = "dashed") +
  labs( title = paste(nReps, "Trajectoria(s) del MB")) +
  theme(legend.position = "none") +
  scale_colour_grey(start = 0.2,end = 0.8) 
  #coord_cartesian(xlim = c(0, tmax))
p1

Ejemplo 1: para t=100

El valor teórico es:

\[E[R(100)] = \sqrt{\frac{\pi t}{2}} = \sqrt{\frac{\pi *100}{2}} = 12.53\] \[Var(R(100)) = \sqrt{\frac{4- \pi}{2}}*t = \sqrt{\frac{4- \pi}{2}}*100 = 42.92\]

Mediante simulación:

df%>% filter(t == 100) %>% summarize('mean'=mean(value), 'var'=var(value))
## # A tibble: 1 x 2
##    mean   var
##   <dbl> <dbl>
## 1  12.6  45.8