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
<- function(t, nSteps, nReps){
simMB <- t/ nSteps
dt #
<- matrix(nrow=nReps, ncol=(nSteps+1))
simMat 1] <- 0
simMat[ ,for(i in 1:nReps){
for(j in 2:(nSteps + 1)){
<- simMat[i,j-1] + sqrt(dt)*rnorm(1,0,1)
simMat[i,j]
}
}<- c('Rep', sapply(0:nSteps, function(i) paste('S',i,sep='')))
names <- data.frame('Rep'=1:nReps, simMat)
df colnames(df) <- names
return(df)
}
Solución: Mil trayectorias del movimiento Browniano
# valores
<- 1000
t <- 1000
nSteps <- 1000
nReps
<- simMB(t, nSteps, nReps)
bm1 <- simMB(t, nSteps, nReps)
bm2 <- sqrt(bm1^2 + bm2^2)
bm
# data
<- bm %>%
df 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)
<- ggplot(df, mapping=aes(x=t, y=value, color=Rep)) +
p1 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:
%>% filter(t == 100) %>% summarize('mean'=mean(value), 'var'=var(value)) df
## # A tibble: 1 x 2
## mean var
## <dbl> <dbl>
## 1 12.6 45.8