Varians jalan acak 2D

Aug 23 2020

biarkan mendefinisikan jalan acak 2D dengan

$$ \sum_i A_i X_i $$

dimana $A=[\cos(\theta)\ \sin(\theta)]^T$, $\theta$ adalah variabel acak dalam rentang tersebut $[0,2\pi]$ dan $X$ adalah variabel acak skalar antara $[-1,1]$. $\theta$ dan $X$ memiliki distribusi seragam dan mereka independen.

  1. Jalan acak dapat dibagi menjadi dua jalan acak $x$ dan $y$. Kemudian, kami menghasilkan dua varian$\sigma_x^2$ dan $\sigma_y^2$. Bagaimana kita bisa menghitung varians berjalan 2D berdasarkan$\sigma_x$ dan $\sigma_y$? Mungkin$\sqrt{\sigma_x ^2 + \sigma_y ^2}$?

  2. Jika kita menghitung varians dari vektor $A$, kami berakhir dengan a $2 \times 2$matriks kovarians. Saya berasumsi ini akan berakhir dengan hasil yang sama. Tapi bagaimana caranya?

Jawaban

5 whuber Aug 23 2020 at 04:49

Satu realisasi dari perjalanan ini ditunjukkan di kiri. Warna titik berkembang dari merah menjadi biru seiring berjalannya waktu. Segmen garis pendek menghubungkan titik-titik yang berurutan untuk membuat kemajuan lebih terlihat.

Untuk menentukan momennya, tulis

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

Karena $\theta$ seragam, distribusi vektor $AX$ sama dengan distribusi vektor $-AX = (\cos(\theta+\pi),\sin(\theta+\pi))^\prime X,$ darimana

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

Karena $\theta$ memiliki distribusi yang sama dengan $\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)$$

didistribusikan dengan sama, dari mana $x$ dan $y$ memiliki varian yang sama $\sigma^2.$ Tapi

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

tunjukkan itu

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

Dalam perjalanan acak, jumlah $n$ iid $x_i$ karena itu akan memiliki harapan $0$ dan varians $n/6$ dan juga untuk $y_i.$ Panel tengah dari gambar memplot varian $x_i$ dan $y_i,$ $i=1,2,\ldots, 100$ untuk $10^4$simulasi jalan-jalan. Garis merah memiliki kemiringan$1/6.$

Argumen simetri serupa dengan mudah menunjukkan kovariansi $x$ dan $y$adalah nol. (Distribusi$(x,y)$ sama dengan distribusi $(-x,y)$dan itu segera menyiratkan bahwa kovarians sama dengan negatifnya sendiri. Sejak$x$ dan $y$ dibatasi, mereka memiliki kovarian yang terbatas, dari mana mereka harus sama dengan nol.)

Panel sebelah kanan pada gambar memplot koefisien korelasi yang diamati pada gambar tersebut $10^4$ simulasi jalan kaki, mengonfirmasi bahwa mereka cenderung nol.

Salah satu cara untuk memahami ini adalah dengan memplot titik kedatangan untuk sejumlah besar jalan acak setelahnya $n$Langkah. Ini dia untuk 10.000 simulasi jalan kaki yang dirangkum dalam rangkaian gambar pertama:

Nilai $\sqrt{n\sigma^2 + n\sigma^2} = \sqrt{n/3}$adalah jarak tipikal yang ditempuh dari asalnya. Jari-jari lingkaran merah pada gambar ditetapkan ke nilai-nilai ini untuk referensi. Kovarians nol mencerminkan simetri melingkar: tidak ada korelasi yang terbukti dalam diagram sebar ini.


Berikut adalah Rkode untuk simulasi dan gambarnya.

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