95% विश्वसनीय अंतराल कैसे खोजें?


14

मैं निम्नलिखित पश्च वितरण के 95% विश्वसनीय अंतराल की गणना करने की कोशिश कर रहा हूं। मैं इसके लिए आर में फ़ंक्शन नहीं ढूँढ सका लेकिन क्या दृष्टिकोण नीचे सही है?

x <- seq(0.4,12,0.4)
px <-  c(0,0, 0, 0, 0, 0, 0.0002, 0.0037, 0.018, 0.06, 0.22 ,0.43, 0.64,0.7579, 0.7870, 0.72, 0.555, 0.37, 0.24, 0.11, 0.07, 0.02, 0.009, 0.005, 0.0001, 0,0.0002, 0, 0, 0)
plot(x,px, type="l")
mm <- sum(x*px)/sum(px)
var <- (sum((x)^2*px)/sum(px)) - (mm^2)
cat("95% credible interval: ", round(mm -1.96*sqrt(var),3), "-", round(mm + 1.96*sqrt(var),3),"\n")

1
वास्तव में नहीं - आपने सामान्य वितरण और माध्य के बारे में समान अंतराल मान लिया है, जिनमें से कोई भी इस संदर्भ में विशेष रूप से उचित नहीं है। वास्तव में आपने लगभग संभावना पर कब्जा कर लिया है, यह मानते हुए कि यह एक असतत वितरण है, और 95 % प्राप्त करने के लिए अपने अंतराल को थोड़ा चौड़ा करने की आवश्यकता है । बेहतर हो सकता है कि उच्चतम घनत्व वाला क्षेत्र लिया जाए जो [ ०.४ , the.० ] है अगर यह असतत वितरण है। वैकल्पिक रूप से एक अंतराल ले कि वह नीचे दिए जा रहा है की संभावना है 2.5 % या उससे कम है, और यह ऊपर जा रहा है की संभावना है 2.5 % या उससे कम है, यह भी [ 4.4 ,94%95%[4.4,8.0]2.5%2.5% यहाँ। [4.4,8.0]
हेनरी

जवाबों:


26

जैसा कि हेनरी ने नोट किया है , आप सामान्य वितरण मान रहे हैं और यह पूरी तरह से ठीक है यदि आपका डेटा सामान्य वितरण का अनुसरण करता है, लेकिन यदि आप इसके लिए सामान्य वितरण नहीं मान सकते हैं तो यह गलत होगा। नीचे मैंने दो अलग-अलग दृष्टिकोणों का वर्णन किया है, जिनका उपयोग आप केवल वितरण और अज्ञात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α%पीआर(एक्सμ±ζ)αζ


जब आप बस दी गई जानकारी (विधि का उपयोग करके) से सीधे मात्राओं की गणना कर सकते हैं तो आप नमूना क्यों लेते हैं?
व्हिबर

1
@whuber क्योंकि यह सस्ता और आसान है, लेकिन मैं कल गैर-सिमुलेशन गणना का वर्णन करने के लिए संपादित करूंगा।
टिम

हाय टिम, यह बहुत मददगार है। क्या सिर्फ डिस्टर्बेंस से क्वांटाइल लेना सही नहीं होगा। (निचला <- x [जो (as.logical (अंतर (कम्सम) / px) / योग (px)> 0.025)))]) (ऊपरी <- x [जो (as.logical (अंतर (cumsum (px) / sum)) (px) <0.975)))])
user19758

@ user19758 कृपया मेरे संपादन की जाँच करें।
टिम

+1 अतिरिक्त स्पष्टीकरण, चित्र और कोड इस साइट पर उत्तर के लिए एक उच्च मानक निर्धारित करते हैं। धन्यवाद!
व्हिबर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.