çok değişkenli normal dağılımı küresel olarak simetriktir. Dağıtım sen yarıçap yuvarlar aramaya aşağıda . Bu kriter yalnızca uzunluğuna bağlı olduğundan, kesik dağılım küresel olarak simetrik kalır. Yana küresel açısından bağımsızve bir sahiptir dağılımı , bu nedenle sadece bir kaç basit adımda kesilmiş dağılım değerleri oluşturabilir:ρ = | | X | | 2 a X ρ X / | | X | | ρXρ = | | X| |2birXρX/ | | X| |χ ( n )ρσχ ( n )
Oluşturmak .X∼ N(0,In)
kesilmiş bir dağılımının karekökü olarak üretin .χ 2 ( d ) ( a / σ ) 2Pχ2(d)(a/σ)2
Let.Y= σPX/ | | X| |
1. adımda , standart bir normal değişkenin bağımsız gerçekleştirme dizisi olarak elde edilir .dXd
Adım 2'de, kolaylıkla quantile fonksiyonu çevrilmesi ile oluşturulur a dağılımı: üniform bir değişken oluşturmak arasında (tahminlerinin) aralığında desteklenen ve ve .F - 1 χ 2 ( d ) U F ( ( a / σ ) 2 ) 1 P = √PF- 1χ2( d)UF( ( a / σ)2)1P= F( U)-----√
Burada bir histogramıdır bu bağımsız gerçekleşmeleri için içinde aşağıda kesildi boyutları, . Algoritmanın verimliliğini kanıtlamak yaklaşık bir saniye sürdü. σ P σ = 3 n = 11 a = 7105σPσ= 3n = 11a = 7
Kırmızı eğri, ölçeklendirilmiş kesilmiş bir dağılımının yoğunluğudur . Histogramla yakın uyumu, bu tekniğin geçerliliğinin kanıtıdır.σ = 3χ(11)σ=3
Kesme için bir bilgi edinebilmek için, durumu göz önüne , içinde boyutları. İşte karşı karşısında bir dağılım ( bağımsız gerçekleşme için). Açıkça yarıçapı en deliği gösteren :σ = 1 n = 2 Y 2 Y 1 10 4 aa=3σ=1n=2Y2Y1104a
Son olarak, (1) bileşenlerinin aynı dağılımlara (küresel simetri nedeniyle) ve (2) dışında , bu ortak dağılımın Normal olmaması gerektiğine dikkat edin. Aslında, çok büyür, (tek değişkenli) normal dağılım hızla azalması yüzeyine yakın bir küme normal küresel kesilmiş değişkenli olasılık en neden -sphere (yarıçapı ). Bu nedenle marjinal dağılım aralığında konsantre edilmiş ölçekli simetrik Beta dağılımına yaklaşmalıdır . Bu, önceki dağılım grafiğinde belirgindir; burada a = 0 a n - 1 a ( ( n - 1 ) / 2 , ( n - 1 ) / 2 ) ( - a , a ) a = 3 σ 2 - 1 3 σXia=0an−1a((n−1)/2,(n−1)/2)(−a,a)a=3σzaten iki boyutta büyüktür: noktalar yarıçapına sahip bir halkayı ( küre) kirletir .2−13σ
Burada büyüklükte bir simülasyon marjinal dağılımlarının histogramlardır de ile boyutları , (bu yaklaşan beta dağıtım homojendir):1053a=10σ=1(1,1)
Soruda açıklanan prosedürün ilk marjinalleri normal olduğundan (yapım yoluyla), bu prosedür doğru olamaz.n−1
Aşağıdaki R
kod ilk rakamı oluşturdu. üretilmesi için 1-3 arası paralel adımlara yapılandırılmıştır . Bu değiştirme değişkenlerinin, ikinci rakam oluşturmak için modifiye edilmiştir , , ve daha sonra arsa komutu veren sonra oluşturulmuştur.Ya
d
n
sigma
plot(y[1,], y[2,], pch=16, cex=1/2, col="#00000010")
y
Daha yüksek sayısal çözünürlük için nesli kodda değiştirilir: kod aslında üretir ve bunu hesaplamak için kullanır .U1−UP
Sözde bir algoritmaya göre veri simülasyonu, bir histogram ile özetleme ve bir histogramın üst üste getirilmesi ile aynı teknik, soruda açıklanan yöntemi test etmek için kullanılabilir. Yöntemin beklendiği gibi çalışmadığını doğrular.
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)