Varianza di una passeggiata aleatoria 2D
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.
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}$?
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
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 R
codice 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))