Pour caractériser la quantité de dispersion 2D autour du centroïde, vous voulez juste la distance quadratique moyenne (racine),
σ^= RMS = 1n∑je( ( xje- x¯)2+ ( yje- y¯)2)-----------------------√.
Dans cette formule, sont les coordonnées des points et leur centroïde (point de moyennes) est( ˉ x , ˉ y ) .( xje, yje) , i = 1 , 2 , … , n( x¯, y¯) .
La question demande la distribution des distances. Lorsque les boules ont une distribution normale bivariée isotrope autour de leur centroïde - ce qui est une hypothèse standard et physiquement raisonnable - la distance au carré est proportionnelle à une distribution du chi carré avec deux degrés de liberté (un pour chaque coordonnée). Ceci est une conséquence directe d'une définition de la distribution du chi carré comme une somme de carrés de variables normales standard indépendantes, car est une combinaison linéaire de variables normales indépendantes avec attente Écriture de la variance commune deE[xi- ˉ x ]=n-1
Xje- x¯= n - 1nXje- ∑j ≠ i1nXj
xiσ2E[(xi- ˉ x )2]=Var(xi- ˉ x )=( n - 1E [ xje- x¯] = n - 1nE [ xje] - ∑j ≠ i1nE [ xj] = 0.
Xjeas , L'hypothèse d'anisotropie est que les ont la même distribution que les et sont indépendants d'eux, donc un résultat identique est valable pour la distribution de . Ceci établit la constante de proportionnalité:
les carrés des distances ont une distribution chi carré avec deux degrés de liberté, mise à l'échelle par .σ2yjxi(yj- ˉ y )2n-1E [ ( xje- x¯)2] = Var ( xje- x¯) = ( n - 1n)2Var ( xje) + ∑j ≠ i( 1n)2Var ( xj) = n - 1nσ2.
yjXje( yj- y¯)2n - 1nσ2
Le test le plus sévère de ces équations est le cas , car alors la fraction diffère le plus de . En simulant l'expérience, à la fois pour et , et en superposant les histogrammes des distances au carré avec les distributions du chi carré (en rouge), nous pouvons vérifier cette théorie.n - 1n = 2 1n=2n=40n - 1n1n = 2n = 40
Chaque ligne affiche les mêmes données: à gauche, l'axe des x est logarithmique; à droite, il montre la distance au carré réelle. La vraie valeur de pour ces simulations a été fixée à .1σ1
Ces résultats concernent 100 000 itérations avec et 50 000 itérations avec . Les accords entre les histogrammes et les densités khi-deux sont excellents.n = 40n = 2n = 40
Bien que soit inconnu, il peut être estimé de différentes manières. Par exemple, la distance quadratique moyenne doit être fois la moyenne de , qui est . Avec , par exemple, estimez comme fois la distance quadratique moyenne. Ainsi, une estimation de serait fois la distance RMS. En utilisant les valeurs de la nous pouvons alors dire que:n - 1σ2χ 2 2 2n=40σ240n - 1nσ2χ222n = 40σ2σ√4039/ 2σ χ 2 240 / 78-----√χ22
Environ 39% des distances seront inférieures à , car 39% d'une est inférieure à . χ 2 2 139 / 40-----√σ^χ221
Environ 78% des distances seront inférieures à fois , car 78% d'une est inférieure à . √3-√ χ 2 2 339 / 40-----√σ^χ223
Et ainsi de suite, pour tout multiple que vous souhaitez utiliser à la place de ou . À titre de vérification, dans les simulations pour tracées précédemment, les proportions réelles des distances au carré inférieures à fois étaient3 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
Les proportions théoriques sont
0.3935 0.6321 0.7769 0.8647 0.9179 0.9502 0.9698 0.9817 0.9889 0.9933
L'accord est excellent.
Voici le R
code pour conduire et analyser les simulations.
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)