의 다변량 정규 분포 는 구형 대칭입니다. 분포는 반경 자릅니다 추구 에서 아래 . 이 기준은 길이에만 의존하기 때문에 잘린 분포는 구형 대칭으로 유지됩니다. 는 구면 각도 무관 하므로 그리고 있다 분포 , 당신은 그러므로 몇 가지 간단한 단계에서 잘립니다 분포 값을 생성 할 수 있습니다 :ρ = | | X | | 2 a X ρ X / | | X | | ρ엑스ρ = | |엑스| |2ㅏ엑스ρ엑스/ | |엑스| |χ ( n )ρσχ ( n )
생성 .엑스~ N( 0 , 나는엔)
에서 잘린 분포의 제곱근으로 를 생성 합니다.χ 2 ( d ) ( a / σ ) 2피χ2(d)( a / σ)2
하자.와이= σ피엑스/ | | 엑스| |
단계 1에서, 는 표준 정규 변수 의 독립적 실현의 시퀀스로서 획득된다 .일엑스디
단계 2에서, 용이 분위수 함수를 반전시킴으로써 생성되는 (A)의 분포 : 균일 변수 생성 사이 (분위수의) 범위에서 지원 및 로 설정하고 .F − 1 χ 2 ( d ) U F ( ( a / σ ) 2 ) 1 P = √피에프− 1χ2( d)유에프( ( a / σ)2)1피= F( U)−−−−−√
여기 에 차원 에서 에 대한 의 독립적 구현이 아래에 에서 잘린 히스토그램이 있습니다. 알고리즘의 효율성을 증명하는 데 약 1 초가 걸렸습니다. σ P σ = 3 n = 11 a = 7105σ피σ= 3n=11a=7
빨간색 곡선은 스케일링 된 잘린 분포 의 밀도입니다 . 히스토그램과 밀접하게 일치하는 것은이 기술의 유효성에 대한 증거입니다.σ = 3χ(11)σ=3
잘림에 대한 직관을 얻으려면 차원 의 대소 문자 , 을 고려하십시오 . 다음은 에 대한 의 산점도입니다 ( 독립 실현의 경우). 반경 의 구멍을 명확하게 보여줍니다 .σ = 1 n = 2 Y 2 Y 1 10 4 aa=3σ=1n=2Y2Y1104a
마지막으로, (1) 성분 는 (구형 대칭으로 인해) 동일한 분포를 가져야하고 (2) 일 때를 제외하고 공통 분포는 정규가 아닙니다. 같은 사실, 커질 상기 (단변) 정규 분포의 급격한 감소는 표면 근처에 클러스터링 통상 구면 절단 다변량 확률 대부분 발생 -sphere (반경의 ). 따라서 한계 분포는 구간 집중된 스케일 대칭 베타 분포와 근사해야합니다 . 이것은 이전 산점도에서 분명합니다. = 0 N - 1 ( ( N - 1 ) / 2 , ( N - 1 ) / 2 ) ( - , ) = 3 σ (2) - 1 (3) σXia=0an−1a((n−1)/2,(n−1)/2)(−a,a)a=3σ는 이미 2 차원으로 크다 : 점 은 반지름 의 반지 ( 구)를 제한한다 .2−13σ
여기서 크기의 시뮬레이션 한계 분포의 히스토그램이다 의 과 사이즈 , (근사하는 베타 분포가 균일)105a = 10 σ = 1 ( 1 , 1 )3a=10σ=1(1,1)
문제에 설명 된 절차 의 첫 번째 한계가 정상이므로 (구성 별) 해당 절차는 정확하지 않습니다.n−1
다음 R
코드는 첫 번째 그림을 생성했습니다. 를 생성하기 위해 단계 1-3을 병렬로 구성된다 . 그것은 변수 변화에 의해 제 2도를 생성하도록 수정 된 , , 및 다음 플롯 명령을 실행 한 후에 발생 하였다.Ya
d
n
sigma
plot(y[1,], y[2,], pch=16, cex=1/2, col="#00000010")
y
더 높은 수치 해상도를 위해 코드에서 생성 이 수정됩니다. 코드는 실제로 생성 하고이를 사용하여 를 계산 합니다.1 - U PU1−UP
가정 된 알고리즘에 따라 데이터를 시뮬레이션하고, 히스토그램으로 요약하고, 히스토그램을 중첩하는 동일한 기술을 사용하여 문제에 설명 된 방법을 테스트 할 수 있습니다. 방법이 예상대로 작동하지 않음을 확인합니다.
a <- 7 # Lower threshold
d <- 11 # Dimensions
n <- 1e5 # Sample size
sigma <- 3 # Original SD
#
# The algorithm.
#
set.seed(17)
u.max <- pchisq((a/sigma)^2, d, lower.tail=FALSE)
if (u.max == 0) stop("The threshold is too large.")
u <- runif(n, 0, u.max)
rho <- sigma * sqrt(qchisq(u, d, lower.tail=FALSE))
x <- matrix(rnorm(n*d, 0, 1), ncol=d)
y <- t(x * rho / apply(x, 1, function(y) sqrt(sum(y*y))))
#
# Draw histograms of the marginal distributions.
#
h <- function(z) {
s <- sd(z)
hist(z, freq=FALSE, ylim=c(0, 1/sqrt(2*pi*s^2)),
main="Marginal Histogram",
sub="Best Normal Fit Superimposed")
curve(dnorm(x, mean(z), s), add=TRUE, lwd=2, col="Red")
}
par(mfrow=c(1, min(d, 4)))
invisible(apply(y, 1, h))
#
# Draw a nice histogram of the distances.
#
#plot(y[1,], y[2,], pch=16, cex=1/2, col="#00000010") # For figure 2
rho.max <- min(qchisq(1 - 0.001*pchisq(a/sigma, d, lower.tail=FALSE), d)*sigma,
max(rho), na.rm=TRUE)
k <- ceiling(rho.max/a)
hist(rho, freq=FALSE, xlim=c(0, rho.max),
breaks=seq(0, max(rho)+a, by=a/ceiling(50/k)))
#
# Superimpose the theoretical distribution.
#
dchi <- function(x, d) {
exp((d-1)*log(x) + (1-d/2)*log(2) - x^2/2 - lgamma(d/2))
}
curve((x >= a)*dchi(x/sigma, d) / (1-pchisq((a/sigma)^2, d))/sigma, add=TRUE,
lwd=2, col="Red", n=257)