Varianza di una passeggiata aleatoria 2D

Aug 23 2020

definiamo una passeggiata casuale 2D

$$ \sum_i A_i X_i $$

dove$A=[\cos(\theta)\ \sin(\theta)]^T$,$\theta$è una variabile casuale nell'intervallo$[0,2\pi]$e$X$è una variabile casuale scalare tra$[-1,1]$.$\theta$e$X$hanno distribuzione uniforme e sono indipendenti.

  1. La passeggiata casuale può essere suddivisa in due passeggiate casuali$x$e$y$. Quindi, finiamo con due varianze$\sigma_x^2$e$\sigma_y^2$. Come possiamo calcolare la varianza del cammino 2D in base a$\sigma_x$e$\sigma_y$? Forse$\sqrt{\sigma_x ^2 + \sigma_y ^2}$?

  2. Se calcoliamo la varianza del vettore$A$, finiamo con a$2 \times 2$matrice di covarianza. Presumo che ciò finirebbe con un risultato identico. Ma come?

Risposte

5 whuber Aug 23 2020 at 04:49

Una realizzazione di questa passeggiata è mostrata a sinistra. I colori dei punti passano dal rosso al blu con il passare del tempo. Brevi segmenti di linea collegano punti successivi per rendere più visibile l'avanzamento.

Per determinare i suoi momenti, scrivi

$$AX = (x, y)^\prime.$$

Perché$\theta$è uniforme, la distribuzione del vettore$AX$è uguale alla distribuzione del vettore$-AX = (\cos(\theta+\pi),\sin(\theta+\pi))^\prime X,$donde

$$E[(x,y)] = E[AX^\prime] = (0,0).$$

Perché$\theta$ha la stessa distribuzione di$\pi/2 - \theta$modulo$2\pi,$

$$(y,x)= (\sin(\theta),\cos(\theta))X = (\cos(\pi/2-\theta), \sin(\pi/2-\theta)X \sim (x,y)$$

sono equidistribuiti, donde$x$e$y$hanno la stessa varianza$\sigma^2.$Ma

$$2\sigma^2 = E[x^2+y^2] = E[||AX||^2] = E[||A||^2 |X|^2] = E[|X|^2] = \int_{-1}^1 x^2 \left(\frac{1}{2}\,\mathrm{d}x\right) = \frac{1}{3}$$

ce lo mostra

$$\sigma^2 = 1/6.$$

Nella passeggiata casuale, la somma di$n$iid$x_i$avrà quindi aspettativa$0$e varianza$n/6$e allo stesso modo per il$y_i.$Il pannello centrale della figura traccia le varianze di$x_i$e$y_i,$ $i=1,2,\ldots, 100$per$10^4$passeggiate simulate. La linea rossa ha pendenza$1/6.$

Argomenti di simmetria simili mostrano facilmente la covarianza di$x$e$y$è zero. (La distribuzione di$(x,y)$è uguale alla distribuzione di$(-x,y)$e ciò implica immediatamente che la covarianza è uguale al proprio negativo. Da$x$e$y$sono limitati, hanno covarianze finite, per cui devono essere uguali a zero.)

Il pannello di destra nella figura traccia i coefficienti di correlazione osservati in questi$10^4$passeggiate simulate, confermando che tendono ad essere nulle.

Un modo per intuirlo è tracciare i punti di arrivo per un gran numero di passeggiate casuali successive$n$passi. Eccoli per le stesse 10.000 passeggiate simulate riassunte nella prima serie di cifre:

Il valore$\sqrt{n\sigma^2 + n\sigma^2} = \sqrt{n/3}$è la tipica distanza percorsa dall'origine. I raggi dei cerchi rossi nella figura sono impostati su questi valori per riferimento. La covarianza zero riflette la simmetria circolare: non c'è alcuna correlazione evidente in questi grafici a dispersione.


Ecco il Rcodice per la simulazione e le cifre.

#
# Generate a random walk of length `n`.
#
rWalk <- function(n) {
  theta <- runif(n)
  X <- runif(n, -1, 1)
  x <- cos(2 * pi * theta)
  y <- sin(2 * pi * theta)
  cbind(cumsum(x*X), cumsum(y*X))
}
set.seed(17)
n <- 1e3
walk <- rWalk(n) # One realization
#
# The figures.
#
par(mfrow=c(1,3))
plot(walk, type="l", asp=1, xlab="x", ylab="y", main="One Realization")
points(walk, pch=19, cex=0.5, col=hsv(3/4 * seq_len(n)/n, .8, .8, .5))
#
# The simulation.
#
n <- 1e2
X <- replicate(1e4, rWalk(n))
#
# Compute the covariance matrices for each time.
#
Sigma <- array(apply(X, 1, function(y) cov(t(y))), c(2,2,dim(X)[1]))
#
# Plot the variances and correlations.
#
plot(Sigma[1,1,], ylab="Variance", main="Variance")
points(Sigma[2,2,], pch=2)
abline(c(0,1/6), col="Red", lwd=2)

plot(Sigma[1,2,] / sqrt(Sigma[1,1,] * Sigma[2,2,]), ylim=c(-1,1),
     ylab=expression(rho), main="Correlation")
abline(h=0, col="Red", lwd=2)
par(mfrow=c(1,1))
#
# Plot a set of simulated endpoints.
#
lim <- max(abs(X))
a <- sapply(c(cos, sin), function(f) f(seq(0, 2*pi, length.out=361)))
par(mfrow=c(1,3))
for (k in c(1,floor(sqrt(n)), n)) {
  plot(t(X[k,,]), xlim=c(-1,1)*lim, ylim=c(-1,1)*lim, asp=1,
       xlab="x", ylab="y", 
       main=paste("After Step", k), 
       pch=19, cex=0.5, col="#00000010")
  lines(a * sqrt(k/3), col="Red")
}
par(mfrow=c(1,1))