중심 주위의 2D 분산 량을 특성화하려면 (근) 평균 제곱 거리를 원합니다.
σ^= RMS =1엔∑나는( (엑스나는−엑스¯)2+ (와이나는−와이¯)2)−−−−−−−−−−−−−−−−−−−−−−−√.
이 공식에서 은 점 좌표이며 중심 (평균 점)은(엑스나는,와이나는) , i = 1 , 2 , … , n(엑스¯,와이¯) .
질문은 거리 의 분포 를 요구합니다 . 공이 중심을 중심으로 등방성 이변 량 정규 분포 (표준적이고 물리적으로 합리적인 가정)를 갖는 경우, 제곱 거리는 자유도가 2 인 카이 제곱 분포 (각 좌표에 대해 하나씩)에 비례합니다. 이것은 이기 때문에 독립 표준 표준 변수의 제곱의 합으로 카이 제곱 분포를 정의한 결과입니다. 는 예상 x_i- 갖는 독립 정규 변량의 선형 조합입니다. 의 공통 분산 작성
엑스나는−엑스¯=n - 1엔엑스나는−∑j ≠ i1엔엑스제이
전자 [엑스나는−엑스¯] =n - 1엔전자 [엑스나는] −∑j ≠ i1엔전자 [엑스제이] = 0
엑스나는뿐만 , 이방성의 가정은 가 와 동일한 분포를 가지며 그것들과 독립적이므로 의 분포에 대해 동일한 결과가 유지됩니다 . 이것은 비례의 상수를 설정합니다
. 거리의 제곱은 의해 스케일링 된 2 자유도를 가진 카이 제곱 분포를 갖습니다 .σ2전자 [(엑스나는−엑스¯)2] = Var (엑스나는−엑스¯) =(n - 1엔)2바르 (엑스나는) +∑j ≠ i(1엔)2바르 (엑스제이) =n - 1엔σ2.
와이제이엑스나는(와이제이−와이¯)2n - 1엔σ2
이 방정식의 가장 심각한 테스트는 이므로 분수 는 과 가장 다릅니다 . 및 대한 실험을 시뮬레이션하고 스케일 된 카이 제곱 분포 (빨간색)로 제곱 거리의 히스토그램을 오버 플로팅하여이 이론을 확인할 수 있습니다.n = 2n - 1엔1n = 2n = 40
각 행에는 동일한 데이터가 표시됩니다. 왼쪽에서 x 축은 로그입니다. 오른쪽에는 실제 제곱 거리가 표시됩니다. 이러한 시뮬레이션에 대한 의 실제 값은 로 설정되었습니다 .σ1
이 결과는 100,000 반복 및 50,000 반복에 대한 것입니다 . 히스토그램과 카이 제곱 밀도 간의 일치는 뛰어납니다.n = 2n = 40
하지만 알 수없는, 그것은 다양한 방법으로 추정 할 수있다. 예를 들어, 평균 제곱 거리가 있어야 배의 평균 이다 . 가진 예를 들어, 추정 등 배의 평균 제곱 거리. 따라서 추정치 것 배 RMS 거리. 분포 값을 사용하여 다음과 같이 말할 수 있습니다.σ2n - 1엔σ2χ222n = 40σ24039/ 2σ40 / 78−−−−−√χ22
분포 의 39 % 가 보다 작기 때문에 거리의 약 39 %가 보다 작습니다 .39 / 40−−−−−√σ^χ221
거리의 약 78 % 미만이어야한다 배 , (A)의 78 % 때문에 분포 미만 .삼–√39 / 40−−−−−√σ^χ223
그리고 여러 배수에 대해 또는 대신 사용하십시오 . 확인으로, 이전에 플롯 된 에 대한 시뮬레이션에서, 배 보다 작은 제곱 거리의 실제 비율 은13n=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
이론적 인 비율은
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)