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 R
kode 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)