जैसा कि हेनरी ने नोट किया है , आप सामान्य वितरण मान रहे हैं और यह पूरी तरह से ठीक है यदि आपका डेटा सामान्य वितरण का अनुसरण करता है, लेकिन यदि आप इसके लिए सामान्य वितरण नहीं मान सकते हैं तो यह गलत होगा। नीचे मैंने दो अलग-अलग दृष्टिकोणों का वर्णन किया है, जिनका उपयोग आप केवल वितरण और अज्ञातx
अनुमानों के साथ अज्ञात वितरण के लिए कर सकते हैं px
।
विचार करने वाली पहली बात यह है कि आप अपने अंतराल का उपयोग करके संक्षेप में क्या करना चाहते हैं। उदाहरण के लिए, आप मात्रात्मक का उपयोग करके प्राप्त अंतराल में दिलचस्पी ले सकते हैं, लेकिन आप अपने वितरण के उच्चतम घनत्व क्षेत्र ( यहां देखें , या यहां ) में भी रुचि ले सकते हैं । जबकि सममित, अनिमॉडल वितरण जैसे सरल मामलों में यह (यदि कोई है) अंतर नहीं होना चाहिए, तो यह अधिक "जटिल" वितरणों के लिए एक अंतर बना देगा। आम तौर पर, quantiles आप संभावना जन युक्त अंतराल के आसपास केंद्रित दे देंगे मंझला (मध्य अपनी वितरण की) है, जबकि सबसे अधिक घनत्व क्षेत्र के आसपास एक क्षेत्र है मोड100 α %वितरण के। यह अधिक स्पष्ट होगा यदि आप नीचे दिए गए चित्र पर दो भूखंडों की तुलना करते हैं - क्वांटाइल वितरण को "लंबवत" काटते हैं, जबकि उच्चतम घनत्व क्षेत्र "क्षैतिज रूप से" काटता है।
अगली बात पर विचार करना है कि इस तथ्य से कैसे निपटें कि आपके पास वितरण के बारे में अधूरी जानकारी है (यह मानते हुए कि हम निरंतर वितरण के बारे में बात कर रहे हैं, आपके पास केवल बिंदुओं का एक गुच्छा है, फिर एक फ़ंक्शन है)। आप इसके बारे में क्या कर सकते हैं मूल्यों को "जैसा है" लेना है, या "बीच में" मूल्यों को प्राप्त करने के लिए किसी प्रकार के प्रक्षेप, या चौरसाई का उपयोग करना है।
एक दृष्टिकोण रैखिक प्रक्षेप ( ?approxfun
आर में देखें ) का उपयोग करना होगा , या वैकल्पिक रूप से स्प्लीन की तरह अधिक चिकनी ( ?splinefun
आर में देखें )। यदि आप ऐसे दृष्टिकोण का चयन करते हैं तो आपको याद रखना होगा कि प्रक्षेप एल्गोरिदम को आपके डेटा के बारे में कोई डोमेन ज्ञान नहीं है और वे अमान्य परिणाम जैसे नीचे दिए गए मान आदि को वापस कर सकते हैं।
# grid of points
xx <- seq(min(x), max(x), by = 0.001)
# interpolate function from the sample
fx <- splinefun(x, px) # interpolating function
pxx <- pmax(0, fx(xx)) # normalize so prob >0
दूसरा दृष्टिकोण जो आप विचार कर सकते हैं वह है कि आपके पास मौजूद डेटा का उपयोग करके अपने वितरण को अनुमानित करने के लिए कर्नेल घनत्व / मिश्रण वितरण का उपयोग करें। यहाँ मुश्किल हिस्सा इष्टतम बैंडविड्थ के बारे में फैसला करना है।
# density of kernel density/mixture distribution
dmix <- function(x, m, s, w) {
k <- length(m)
rowSums(vapply(1:k, function(j) w[j]*dnorm(x, m[j], s[j]), numeric(length(x))))
}
# approximate function using kernel density/mixture distribution
pxx <- dmix(xx, x, rep(0.4, length.out = length(x)), px) # bandwidth 0.4 chosen arbitrary
अगला, आप ब्याज के अंतराल को खोजने जा रहे हैं। आप या तो संख्यात्मक रूप से आगे बढ़ सकते हैं, या सिमुलेशन द्वारा।
1 ए) मात्रात्मक अंतराल प्राप्त करने के लिए नमूनाकरण
# sample from the "empirical" distribution
samp <- sample(xx, 1e5, replace = TRUE, prob = pxx)
# or sample from kernel density
idx <- sample.int(length(x), 1e5, replace = TRUE, prob = px)
samp <- rnorm(1e5, x[idx], 0.4) # this is arbitrary sd
# and take sample quantiles
quantile(samp, c(0.05, 0.975))
1 बी) उच्चतम घनत्व क्षेत्र प्राप्त करने के लिए नमूनाकरण
samp <- sample(pxx, 1e5, replace = TRUE, prob = pxx) # sample probabilities
crit <- quantile(samp, 0.05) # boundary for the lower 5% of probability mass
# values from the 95% highest density region
xx[pxx >= crit]
2a) संख्यात्मक रूप से मात्राएँ ज्ञात करें
cpxx <- cumsum(pxx) / sum(pxx)
xx[which(cpxx >= 0.025)[1]] # lower boundary
xx[which(cpxx >= 0.975)[1]-1] # upper boundary
2 बी) संख्यात्मक रूप से उच्चतम घनत्व क्षेत्र का पता लगाएं
const <- sum(pxx)
spxx <- sort(pxx, decreasing = TRUE) / const
crit <- spxx[which(cumsum(spxx) >= 0.95)[1]] * const
जैसा कि आप नीचे दिए गए भूखंडों पर देख सकते हैं, अनिमॉडल के मामले में, सममित वितरण दोनों विधियां एक ही अंतराल को वापस करती हैं।
100 α %पीआर ( एक्स)∈ μ ± ζ) ≥ अल्फाζ