बुनियादी बूटस्ट्रैप विश्वास अंतराल की कवरेज संभावनाएं


11

मेरे पास एक कोर्स के लिए निम्नलिखित प्रश्न हैं:

मानक सामान्य बूटस्ट्रैप विश्वास अंतराल और बुनियादी बूटस्ट्रैप आत्मविश्वास अंतराल की कवरेज संभावनाओं का अनुमान लगाने के लिए एक मोंटे कार्लो अध्ययन का संचालन करें। एक सामान्य आबादी से नमूना और नमूना मतलब के लिए अनुभवजन्य कवरेज दरों की जाँच करें।

सामान्य सामान्य बूटस्ट्रैप CI के लिए कवरेज संभावनाएं आसान हैं:

n = 1000;
alpha = c(0.025, 0.975);
x = rnorm(n, 0, 1);
mu = mean(x);
sqrt.n = sqrt(n);

LNorm = numeric(B);
UNorm = numeric(B);

for(j in 1:B)
{
    smpl = x[sample(1:n, size = n, replace = TRUE)];
    xbar = mean(smpl);
    s = sd(smpl);

    LNorm[j] = xbar + qnorm(alpha[1]) * (s / sqrt.n);
    UNorm[j] = xbar + qnorm(alpha[2]) * (s / sqrt.n);
}

mean(LNorm < 0 & UNorm > 0); # Approximates to 0.95
# NOTE: it is not good enough to look at overall coverage
# Must compute separately for each tail

इस पाठ्यक्रम के लिए मुझे जो सिखाया गया है, उससे बुनियादी बूटस्ट्रैप विश्वास अंतराल की गणना इस तरह की जा सकती है:

# Using x from previous...
R = boot(data = x, R=1000, statistic = function(x, i){ mean(x[i]); });
result = 2 * mu - quantile(R$t, alpha, type=1);

यह समझ आता है। मुझे समझ में नहीं आता है कि बुनियादी बूटस्ट्रैप CI के लिए कवरेज संभावनाओं की गणना कैसे करें । मैं समझता हूं कि कवरेज संभावना उस समय की संख्या का प्रतिनिधित्व करेगी जिसमें CI का सही मूल्य (इस मामले में mu) है। क्या मैं केवल bootकई बार फ़ंक्शन चलाता हूं ?

मैं इस प्रश्न को अलग तरीके से कैसे बता सकता हूं?


क्या आपका size=100टाइपो है? मुझे विश्वास नहीं है कि जब आप लूप में अपने CI की गणना करते हैं (जब से आप sqrt.nगणना में उपयोग करते हैं) की गणना करने के बाद अंतर्निहित नमूना आकार 1000 प्रतीत होता है, तो आप सही ऊपरी और निचले सीमा प्राप्त कर रहे हैं । इसके अलावा, आप mu0 की तुलना क्यों कर रहे हैं और सीधे नहीं कर रहे हैं (बाद वाला सही अर्थ है)?
कार्डिनल

इसके अलावा, smpl = x[sample(1:n, size = 100, replace = TRUE)]; सरलीकृत किया जा सकता है smpl = sample(x, size=100, replace=TRUE)
कार्डिनल

@कार्डिनल - हाँ यह एक टाइपो था और mu0. एक ही होने के साथ सामान्य सीआई ठीक काम करता है, यह मूल बूटस्ट्रैप सीआई है जिसके साथ मुझे कठिनाई है।
theCloudlessSky

जवाबों:


16

शब्दावली का उपयोग शायद लगातार नहीं किया जाता है, इसलिए निम्नलिखित केवल यही है कि मैं मूल प्रश्न को कैसे समझूं। मेरी समझ से, आपके द्वारा गणना की गई सामान्य CI वह नहीं है जो मांगी गई थी। बूटस्ट्रैप प्रतिकृति का प्रत्येक सेट आपको एक विश्वास अंतराल देता है, कई नहीं। बूटस्ट्रैप प्रतिकृति के एक सेट के परिणामों से विभिन्न CI-प्रकारों की गणना करने का तरीका इस प्रकार है:

B    <- 999                  # number of replicates
muH0 <- 100                  # for generating data: true mean
sdH0 <- 40                   # for generating data: true sd
N    <- 200                  # sample size
DV   <- rnorm(N, muH0, sdH0) # simulated data: original sample

bootMμSM2σM2t

> getM <- function(orgDV, idx) {
+     bsM   <- mean(orgDV[idx])                       # M*
+     bsS2M <- (((N-1) / N) * var(orgDV[idx])) / N    # S^2*(M)
+     c(bsM, bsS2M)
+ }

> library(boot)                                       # for boot(), boot.ci()
> bOut <- boot(DV, statistic=getM, R=B)
> boot.ci(bOut, conf=0.95, type=c("basic", "perc", "norm", "stud"))
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 999 bootstrap replicates
CALL : 
boot.ci(boot.out = bOut, conf = 0.95, type = c("basic", "perc", "norm", "stud"))

Intervals : 
Level      Normal            Basic         Studentized        Percentile    
95%   ( 95.6, 106.0 )   ( 95.7, 106.2 )  ( 95.4, 106.2 )   ( 95.4, 106.0 )  
Calculations and Intervals on Original Scale

पैकेज का उपयोग किए बिना bootआप बस replicate()बूटस्ट्रैप प्रतिकृति का एक सेट प्राप्त करने के लिए उपयोग कर सकते हैं।

boots <- t(replicate(B, getM(DV, sample(seq(along=DV), replace=TRUE))))

लेकिन boot.ci()एक संदर्भ के लिए परिणामों से चिपके रहते हैं ।

boots   <- bOut$t                     # estimates from all replicates
M       <- mean(DV)                   # M from original sample
S2M     <- (((N-1)/N) * var(DV)) / N  # S^2(M) from original sample
Mstar   <- boots[ , 1]                # M* for each replicate
S2Mstar <- boots[ , 2]                # S^2*(M) for each replicate
biasM   <- mean(Mstar) - M            # bias of estimator M

tα/21α/2boot.ci()

(idx <- trunc((B + 1) * c(0.05/2, 1 - 0.05/2)) # indices for sorted vector of estimates
[1] 25 975

> (ciBasic <- 2*M - sort(Mstar)[idx])          # basic CI
[1] 106.21826  95.65911

> (ciPerc <- sort(Mstar)[idx])                 # percentile CI
[1] 95.42188 105.98103

tttz

# standard normal CI with bias correction
> zCrit   <- qnorm(c(0.025, 0.975))   # z-quantiles from std-normal distribution
> (ciNorm <- M - biasM + zCrit * sqrt(var(Mstar)))
[1] 95.5566 106.0043

> tStar <- (Mstar-M) / sqrt(S2Mstar)  # t*
> tCrit <- sort(tStar)[idx]           # t-quantiles from empirical t* distribution
> (ciT  <- M - tCrit * sqrt(S2M))     # studentized t-CI
[1] 106.20690  95.44878

इन CI- प्रकारों की कवरेज संभावनाओं का अनुमान लगाने के लिए, आपको इस सिमुलेशन को कई बार चलाना होगा। बस एक फ़ंक्शन में कोड को लपेटें, सीआई-परिणामों के साथ एक सूची लौटाएं और इसे इस जिपreplicate() में प्रदर्शित की तरह चलाएं ।


वाह! - मैं क्या गलत कर रहा था पर बहुत बढ़िया स्पष्टीकरण। इसके अलावा - कोड सुझावों के लिए धन्यवाद! यह पूरी तरह से काम करता है!
theCloudlessSky

ठीक एक आखिरी सवाल: जब मैं इस जानकारी को दोहराने की कोशिश करता हूं, तो मैंने एक फ़ंक्शन बनाया computeCIsऔर कॉल किया results = replicate(500, computeCIs());। इसके अंत में computeCIsवापस आ जाता है c(ciBasic, ciPerc)। कवरेज संभावनाओं का परीक्षण करने के लिए, क्या मुझे mean(results[1, ] < 0 & results[2, ] > 0)सभी बेसिक सीआई के सही अर्थ (कवरेज संभावना) वाले परीक्षण के लिए परीक्षण नहीं करना चाहिए ? जब मैं इसे चलाता हूं, 1तो मुझे लगता है कि मुझे लगता है कि मुझे मिलना चाहिए 0.95
.CloudlessSky 16

@ TheCloudlessSky कवरेज फंक्शन के संदर्भ में अपेक्षित परिणाम के साथ पूर्ण फ़ंक्शन और पूर्ण सिमुलेशन के लिए, pastebin.com/qKpNKK0D
caracal

हाँ, मैं एक बेवकूफ हूँ:) ... मैंने आर में कोड कॉपी करते समय एक टाइपो बनाया ... आपकी सभी मदद के लिए धन्यवाद! :)
TheCloudlessSky

अच्छा जवाब के लिए धन्यवाद @caracal। लिंक pastebin.com/qKpNKK0Dटूट गया है। सराहना करेंगे यदि आप इसे अपडेट करते हैं और संपूर्ण फ़ंक्शन और पूर्ण सिमुलेशन प्रदान करते हैं। धन्यवाद
MYaseen208
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.