का बहुभिन्नरूपी सामान्य वितरण गोलाकार सममित है। वितरण जिसे आप चाहते हैं त्रिज्या नीचे । क्योंकि यह मानदंड केवल की लंबाई पर निर्भर करता है , काटे गए वितरण गोलाकार रूप से सममित रहते हैं। चूँकि गोलाकार कोण से स्वतंत्र हैऔर में एक वितरण है , इसलिए आप केवल कुछ सरल चरणों में काटे गए वितरण से मान उत्पन्न कर सकते हैं:Xρ=||X||2aXρX/||X||ρσχ(n)
उत्पन्न करें ।X∼N(0,In)
को a वितरण के वर्गमूल के रूप में उत्पन्न करें ।Pχ2(d)(a/σ)2
चलो।Y=σPX/||X||
चरण 1 में, को मानक सामान्य चर के स्वतंत्र वास्तविकताओं के अनुक्रम के रूप में प्राप्त किया जाता है ।Xd
चरण 2 में, आसानी से a वितरण की मात्रात्मक फ़ंक्शन को निष्क्रिय करके उत्पन्न होता है : ) के बीच सीमा (मात्राओं के) में समर्थित एक समान चर उत्पन्न करता है। और और ।PF−1χ2(d)UF((a/σ)2)1P=F(U)−−−−−√
यहाँ का एक हिस्टोग्राम है के इस तरह के स्वतंत्र प्रतीति के लिए में आयाम, पर नीचे छोटा कर दिया । एल्गोरिथ्म की दक्षता के लिए, इसे उत्पन्न करने में लगभग एक सेकंड का समय लगा।105σPσ=3n=11a=7
लाल वक्र द्वारा स्केल किए गए एक काटे गए वितरण का घनत्व है । हिस्टोग्राम से इसका घनिष्ठ मेल इस तकनीक की वैधता का प्रमाण है।χ(11)σ=3
ट्रंकेशन के लिए एक अंतर्ज्ञान प्राप्त करने के लिए, मामले को , में आयामों पर विचार करें। यहाँ विरूद्ध ( स्वतंत्र बोध के लिए)। यह स्पष्ट रूप से त्रिज्या के छेद को दर्शाता :a=3σ=1n=2Y2Y1104a
अंत में, ध्यान दें कि (1) घटकों में समान वितरण (गोलाकार समरूपता के कारण) और (2) को छोड़कर होना चाहिए जब , कि सामान्य वितरण सामान्य नहीं है। वास्तव में, बड़े के रूप में, (univariate) का तेजी से घटता सामान्य वितरण -sphere (त्रिज्या ) की सतह के पास क्लस्टर के लिए सामान्य रूप से छोटे बहुभिन्नरूपी बहुवचन की संभावना का कारण बनता है । इसलिए सीमांत वितरण को स्केल्ड सिमिट्रिक बीटा वितरण को अंतराल में केंद्रित करना चाहिए । यह पिछले स्कैल्पलॉट में स्पष्ट है, जहांXia=0an−1a((n−1)/2,(n−1)/2)(−a,a)a=3σपहले से ही दो आयामों में बड़ा है: अंक त्रिज्या एक अंगूठी ( क्षेत्र) को सीमित करता है ।2−13σ
यहाँ आकार के सिमुलेशन से सीमांत वितरण के हिस्टोग्राम होते हैं में आयामों , (जिसके लिए सन्निकट बीटा वितरण समान है):1053a=10σ=1(1,1)
चूँकि प्रश्न में वर्णित प्रक्रिया का पहला मार्जिन सामान्य है (निर्माण द्वारा), वह प्रक्रिया सही नहीं हो सकती है।n−1
निम्नलिखित R
कोड ने पहला आंकड़ा उत्पन्न किया। इसका निर्माण पैदा करने के लिए 1-3 चरणों के समानांतर किया गया है । यह बदलते चर द्वारा दूसरा चित्र उत्पन्न करने के लिए संशोधित किया गया था , , , और और फिर साजिश आदेश जारी करने के बाद उत्पन्न किया गया था।Ya
d
n
sigma
plot(y[1,], y[2,], pch=16, cex=1/2, col="#00000010")
y
की पीढ़ी को उच्च संख्यात्मक संकल्प के लिए कोड में संशोधित किया गया है: कोड वास्तव में उत्पन्न करता है और गणना करने के लिए इसका उपयोग करता है ।U1−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)