Untuk mengkarakterisasi jumlah dispersi 2D di sekitar centroid, Anda hanya ingin (root) jarak kuadrat,
σ^=RMS=1n∑i((xi−x¯)2+(yi−y¯)2)−−−−−−−−−−−−−−−−−−−−−−−√.
Dalam rumus ini, adalah titik koordinat dan centroid mereka (titik rata-rata) adalah(xi,yi),i=1,2,…,n(x¯,y¯).
Pertanyaannya menanyakan distribusi jarak. Ketika bola memiliki distribusi bivariat isotropik Normal di sekitar centroid mereka - yang merupakan asumsi standar dan secara fisik masuk akal - jarak kuadrat sebanding dengan distribusi chi-kuadrat dengan dua derajat kebebasan (satu untuk setiap koordinat). Ini adalah konsekuensi langsung dari satu definisi dari distribusi chi-squared sebagai jumlah kuadrat dari variabel normal standar independen, karena adalah kombinasi linear dari normal independen dengan ekspektasi Menulis varian umum dari
xi−x¯=n−1nxi−∑j≠i1nxj
E[xi−x¯]=n−1nE[xi]−∑j≠i1nE[xj]=0.
xisebagai , Asumsi anisotropi adalah bahwa memiliki distribusi yang sama dengan dan independen dari mereka, sehingga hasil yang identik berlaku untuk distribusi . Ini menetapkan konstanta proporsionalitas:
kuadrat jarak memiliki distribusi chi-kuadrat dengan dua derajat kebebasan, diskalakan oleh .σ2E[(xi−x¯)2]=Var(xi−x¯)=(n−1n)2Var(xi)+∑j≠i(1n)2Var(xj)=n−1nσ2.
yjxi(yj−y¯)2n−1nσ2
Tes paling parah dari persamaan ini adalah kasus , karena fraksi berbeda paling banyak dari . Dengan mensimulasikan percobaan, baik untuk dan , dan terlalu banyak menempatkan histogram jarak kuadrat dengan distribusi chi-kuadrat skala (merah), kita dapat memverifikasi teori ini.n=2n−1n1n = 40n=2n=40

Setiap baris menunjukkan data yang sama: di sebelah kiri sumbu x adalah logaritmik; di sebelah kanan itu menunjukkan jarak kuadrat yang sebenarnya. Nilai sebenarnya dari untuk simulasi ini ditetapkan ke .1σ1
Hasil ini untuk 100.000 iterasi dengan dan 50.000 iterasi dengan . Kesepakatan antara histogram dan kepadatan chi-squared sangat baik.n = 40n=2n=40
Meskipun tidak diketahui, ia dapat diperkirakan dengan berbagai cara. Misalnya, jarak kuadrat rata-rata harus kali rata-rata dari , yaitu . Dengan , misalnya, perkirakan sebagai kali jarak kuadrat rata-rata. Jadi estimasi akan menjadi kali jarak RMS. Dengan menggunakan nilai kita dapat mengatakan bahwa:n - 1σ2χ 2 2 2n=40σ240n−1nσ2χ222n=40σ2σ√4039/2σ χ 2 240/78−−−−−√χ22
Sekitar 39% jarak akan kurang dari , karena 39% dari kurang dari . χ 2 2 139/40−−−−−√σ^χ221
Sekitar 78% jarak akan kurang dari kali , karena 78% dari kurang dari . √3–√ χ 2 2 339/40−−−−−√σ^χ223
Dan seterusnya, untuk beberapa kelipatan yang ingin Anda gunakan sebagai pengganti atau . Sebagai tanda centang, dalam simulasi untuk diplot sebelumnya, proporsi aktual dari jarak kuadrat kurang dari kali adalah3 n = 40 1 , 2 , … , 10 n - 113n=401,2,…,10n−1nσ^2
0.3932 0.6320 0.7767 0.8647 0.9178 0.9504 0.9700 0.9818 0.9890 0.9933
Proporsi teoritisnya adalah
0.3935 0.6321 0.7769 0.8647 0.9179 0.9502 0.9698 0.9817 0.9889 0.9933
Perjanjian itu luar biasa.
Berikut ini adalah Rkode untuk melakukan dan menganalisis simulasi.
f <- function(n, n.iter, x.min=0, x.max=Inf, plot=TRUE) {
#
# Generate `n.iter` experiments in which `n` locations are generated using
# standard normal variates for their coordinates.
#
xy <- array(rnorm(n*2*n.iter), c(n.iter,2,n))
#
# Compute the squared distances to the centers for each experiment.
#
xy.center <- apply(xy, c(1,2), mean)
xy.distances2 <- apply(xy-array(xy.center, c(n.iter,2,n)), c(1,3),
function(z) sum(z^2))
#
# Optionally plot histograms.
#
if(plot) {
xy.plot <- xy.distances2[xy.distances2 >= x.min & xy.distances2 <= x.max]
hist(log(xy.plot), prob=TRUE, breaks=30,
main=paste("Histogram of log squared distance, n=", n),
xlab="Log squared distance")
curve(dchisq(n/(n-1) * exp(x), df=2) * exp(x) * n/(n-1),
from=log(min(xy.plot)), to=log(max(xy.plot)),
n=513, add=TRUE, col="Red", lwd=2)
hist(xy.plot, prob=TRUE, breaks=30,
main=paste("Histogram of squared distance, n=", n),
xlab="Squared distance")
curve(n/(n-1) * dchisq(n/(n-1) * x, df=2),
from=min(xy.plot), to=max(xy.plot),
n=513, add=TRUE, col="Red", lwd=2)
}
return(xy.distances2)
}
#
# Plot the histograms and compare to scaled chi-squared distributions.
#
par(mfrow=c(2,2))
set.seed(17)
xy.distances2 <- f(2, 10^5, exp(-6), 6)
xy.distances2 <- f(n <- 40, n.iter <- 50000, exp(-6), 12)
#
# Compare the last simulation to cumulative chi-squared distributions.
#
sigma.hat <- sqrt((n / (2*(n-1)) * mean(xy.distances2)))
print(cumsum(tabulate(cut(xy.distances2,
(0:10) * (n-1)/n * sigma.hat^2))) / (n*n.iter), digits=4)
print(pchisq(1:10, df=2), digits=4)