Varianz eines 2D Random Walk

Aug 23 2020

lassen Sie einen 2D Random Walk by definieren

$$ \sum_i A_i X_i $$

wo$A=[\cos(\theta)\ \sin(\theta)]^T$,$\theta$ist eine Zufallsvariable im Bereich$[0,2\pi]$und$X$ist eine skalare Zufallsvariable zwischen$[-1,1]$.$\theta$und$X$gleichmäßig verteilt und unabhängig sind.

  1. Der Random Walk kann in zwei Random Walks aufgeteilt werden$x$und$y$. Dann landen wir bei zwei Varianzen$\sigma_x^2$und$\sigma_y^2$. Wie können wir die Varianz des 2D-Walks basierend auf berechnen$\sigma_x$und$\sigma_y$? Vielleicht$\sqrt{\sigma_x ^2 + \sigma_y ^2}$?

  2. Wenn wir die Varianz des Vektors berechnen$A$, landen wir bei a$2 \times 2$Kovarianzmatrix. Ich gehe davon aus, dass dies zu einem identischen Ergebnis führen würde. Aber wie?

Antworten

5 whuber Aug 23 2020 at 04:49

Eine Realisierung dieses Spaziergangs ist links dargestellt. Die Punktfarben entwickeln sich im Laufe der Zeit von Rot nach Blau. Kurze Liniensegmente verbinden aufeinanderfolgende Punkte, um den Fortschritt besser sichtbar zu machen.

Um seine Momente zu bestimmen, schreiben Sie

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

weil$\theta$gleichmäßig ist, ist die Verteilung des Vektors$AX$ist die gleiche wie die Verteilung des Vektors$-AX = (\cos(\theta+\pi),\sin(\theta+\pi))^\prime X,$woher

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

weil$\theta$hat die gleiche Verteilung wie$\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)$$

sind gleichverteilt, woher$x$und$y$haben die gleiche Varianz$\sigma^2.$Aber

$$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}$$

zeigt uns das

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

Beim Random Walk ist die Summe von$n$iid$x_i$wird daher Erwartung haben$0$und Varianz$n/6$und ebenso für die$y_i.$Das mittlere Feld der Abbildung zeigt die Varianzen von$x_i$und$y_i,$ $i=1,2,\ldots, 100$zum$10^4$simulierte Spaziergänge. Die rote Linie hat eine Steigung$1/6.$

Ähnliche Symmetrieargumente zeigen leicht die Kovarianz von$x$und$y$ist Null. (Die Verteilung von$(x,y)$ist die gleiche wie die Verteilung von$(-x,y)$und das impliziert sofort, dass die Kovarianz gleich ihrem eigenen Negativ ist. Seit$x$und$y$begrenzt sind, haben sie endliche Kovarianzen, weshalb sie gleich Null sein müssen.)

Das rechte Feld in der Abbildung zeigt die dabei beobachteten Korrelationskoeffizienten$10^4$simulierte Spaziergänge, was bestätigt, dass sie tendenziell Null sind.

Eine Möglichkeit, dies zu verstehen, besteht darin, die Ankunftspunkte für eine große Anzahl zufälliger Wanderungen danach aufzuzeichnen$n$Schritte. Hier sind sie für dieselben 10.000 simulierten Spaziergänge, die in der ersten Zahlenreihe zusammengefasst sind:

Der Wert$\sqrt{n\sigma^2 + n\sigma^2} = \sqrt{n/3}$ist die typische Entfernung, die vom Ursprung zurückgelegt wird. Die Radien der roten Kreise in der Abbildung sind als Referenz auf diese Werte eingestellt. Die Null-Kovarianz spiegelt die Kreissymmetrie wider: In diesen Streudiagrammen ist keine Korrelation erkennbar.


Hier ist der RCode für die Simulation und Figuren.

#
# 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))