重心の周りの2D分散の量を特徴付けるには、(ルート)平均二乗距離が必要です。
σ^= RMS = 1んΣ私((x私− x¯)2+ (y私− y¯)2)−−−−−−−−−−−−−−−−−−−−−−−√。
この式では、はポイント座標であり、それらの重心(平均のポイント)は(ˉ X、ˉ Y)。(x私、Y私)、iは= 1 、2 、... 、n個(x¯、Y¯)。
質問は、距離の分布を求めます。ボールの重心の周りに等方性の2変量正規分布がある場合(これは標準で物理的に妥当な仮定です)、2乗距離は2自由度(各座標に1つ)のカイ2乗分布に比例します。これは、であるため、独立した標準正規変数の二乗の和としてのカイ2乗分布の1つの定義の直接の結果です。は、期待値を持つ独立した正規変量の線形結合です x_i-共通分散を書き込む、E[XI- ˉ X ]=N-1
バツ私− x¯= n − 1んバツ私− ∑j ≠ i1んバツj
、XIσ2E[(XI- ˉ X)2]=Varの(XI- ˉ X)=( N - 1E [ x私− x¯] = n − 1んE [ x私] − ∑j ≠ i1んE [ xj] = 0。
バツ私、 異方性の仮定では、はと同じ分布を持ち、それらとは独立しているため、の分布についても同じ結果が得られます。これにより、比例定数が確立されます。
距離の2乗は、2自由度のカイ2乗分布で、でスケーリングされます。σ2Yjはxは、I(YJ- ˉ Y)2N-1E [(x私− x¯)2] = Var (x私− x¯)= (n − 1ん)2Var (x私)+ ∑j ≠ i(1ん)2Var (xj)= n − 1んσ2。
yjバツ私(yj− y¯)2n − 1んσ2
これらの方程式の最も厳しいテストはの場合です。そのため、分数は最も異なります。と両方の実験をシミュレーションし、スケーリングされたカイ2乗分布(赤)で2乗距離のヒストグラムをオーバープロットすることで、この理論を検証できます。n − 1n = 2 1n=2n=40n − 1ん1n = 2n = 40
各行は同じデータを示しています。左側のx軸は対数です。右側には、実際の平方距離が表示されます。これらのシミュレーションのの真の値はに設定されました。1σ1
これらの結果は、で100,000 回、 50,000回の反復に対するものです。ヒストグラムとカイ2乗密度の間の一致は優れています。n = 40n = 2n = 40
が不明ですが、それはさまざまな方法で推定することができます。例えば、平均二乗距離があるべき回の平均で、。、例えば、推定として回の平均二乗距離。こうしての推定であろう回RMS距離。分布の値を使用すると、次のように言えます。N - 1σ2χ 2 2 2、N=40σ240n − 1んσ2χ222n = 40σ2σ√4039/ 2σ χ 2 240 / 78−−−−−√χ22
以下同様に、または代わりに使用する複数の場合。チェックとして、以前にプロットされたシミュレーションでは倍未満の二乗距離の実際の比率は3 N = 40 1 、2 、... 、10 N - 113n = 401 、2 、... 、10n − 1んσ^2
0.3932 0.6320 0.7767 0.8647 0.9178 0.9504 0.9700 0.9818 0.9890 0.9933
理論上の比率は
0.3935 0.6321 0.7769 0.8647 0.9179 0.9502 0.9698 0.9817 0.9889 0.9933
合意は素晴らしいです。
ここでR
、シミュレーションを実施し、分析するためのコードが。
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)