প্রাথমিক বুটস্ট্র্যাপ আস্থা অন্তরালের কভারেজ সম্ভাবনা


11

আমি যে কোর্সে কাজ করছি তার জন্য আমার নীচের প্রশ্নটি রয়েছে:

স্ট্যান্ডার্ড সাধারণ বুটস্ট্রাপ আস্থা আত্মবিশ্বাস এবং বেসিক বুটস্ট্র্যাপ আস্থা আত্মবিশ্বের কভারেজ সম্ভাবনাগুলি অনুমান করার জন্য একটি মন্টি কার্লো অধ্যয়ন পরিচালনা করুন। একটি সাধারণ জনসংখ্যার থেকে নমুনা এবং নমুনা গড়ের জন্য অভিজ্ঞতামূলক কভারেজের হারগুলি পরীক্ষা করুন।

মানক সাধারণ বুটস্ট্র্যাপ সিআইয়ের জন্য কভারেজ সম্ভাব্যতাগুলি সহজ:

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);

এটা বোধগম্য. আমি যা বুঝতে পারি না তা হ'ল বেসিক বুটস্ট্র্যাপ সিআইয়ের কভারেজ সম্ভাব্যতাগুলি কীভাবে গণনা করা যায় । আমি বুঝতে পারি যে কভারেজ সম্ভাব্যতা সিআইয়ের প্রকৃত মান (এই ক্ষেত্রে mu) সংখ্যার প্রতিনিধিত্ব করবে । আমি কি কেবল bootবহুবার ফাংশনটি চালাচ্ছি ?

আমি কীভাবে এই প্রশ্নটির সাথে আলাদাভাবে যেতে পারি?


আপনার size=100টাইপো কি? আমি বিশ্বাস করি না যে আপনি লুপটিতে আপনার সিআইগুলি গণনা করার সময় অন্তর্নিহিত নমুনা আকারটি 1000 হিসাবে প্রদর্শিত হওয়ার পরে আপনি সঠিক ওপরের এবং নিম্ন সীমাগুলি পেয়ে যাচ্ছেন (যেহেতু আপনি sqrt.nগণনায় ব্যবহার করছেন)। এছাড়াও, আপনি কেন muসরাসরি 0 এর সাথে তুলনা করছেন না (পরেরটি প্রকৃত অর্থ)?
কার্ডিনাল

এছাড়াও, smpl = x[sample(1:n, size = 100, replace = TRUE)]; সহজ করা যেতে পারে smpl = sample(x, size=100, replace=TRUE)
কার্ডিনাল

@ কার্ডিনাল - হ্যাঁ এটি টাইপো ছিল এবং একই সাথে mu0 ছিল। সাধারণ সিআই ঠিকঠাক কাজ করে, এটি মূলত বুটস্ট্র্যাপ সিআইয়ের সাথে আমার অসুবিধা হচ্ছে।
দ্য ক্লাউডলেসস্কি

উত্তর:


16

পরিভাষা সম্ভবত ধারাবাহিকভাবে ব্যবহৃত হয় না, সুতরাং নিম্নলিখিতটি কেবলমাত্র আমি আসল প্রশ্নটি বুঝতে পারি। আমার বোধগম্যতা থেকে, আপনি গণনা করা সাধারণ সিআইগুলি যা চাওয়া হয়েছিল তা নয়। বুটস্ট্র্যাপের প্রতিটি সেট প্রতিলিপি আপনাকে একটি আত্মবিশ্বাসের অন্তর দেয়, অনেকগুলি নয়। বুটস্ট্র্যাপের প্রতিলিপিগুলির সেটগুলির ফলাফল থেকে বিভিন্ন সিআই-প্রকারের গণনা করার উপায়টি নিম্নরূপ:

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

এই সিআই-প্রকারের কভারেজ সম্ভাব্যতাগুলি অনুমান করার জন্য, আপনাকে এই সিমুলেশনটি অনেক বার চালাতে হবে। কোডটি কেবল কোনও কার্যে গুটিয়ে রাখুন, সিআই-ফলাফলের সাথে একটি তালিকা ফিরে আসুনreplicate() এবং এই সূচনাতে প্রদর্শিত হিসাবে এটি চালান ।


কি দারুন! - আমি কী ভুল করছি সে সম্পর্কে দুর্দান্ত ব্যাখ্যা। এছাড়াও - কোড টিপস জন্য ধন্যবাদ! এটি পুরোপুরি কাজ করে!
দ্য ক্লাউডলেসস্কি

ঠিক আছে একটি শেষ প্রশ্ন: আমি যখন এই তথ্যটি প্রতিলিপি করার চেষ্টা করব তখন আমি একটি ফাংশন তৈরি করে computeCIsডাকলাম results = replicate(500, computeCIs());। এটি শেষে computeCIsফিরে আসে c(ciBasic, ciPerc)। কভারেজ সম্ভাব্যতাগুলি পরীক্ষা করার জন্য, আমি কি তবে mean(results[1, ] < 0 & results[2, ] > 0)সমস্ত বেসিক সিআই-এর প্রকৃত গড় (কভারেজ সম্ভাব্যতা) ধারণ করে পরীক্ষা করা উচিত না ? আমি যখন এটি চালনা করি, তখন আমি পাই 1যখন আমার মনে হয় আমার পাওয়া উচিত 0.95
দ্য ক্লাউডলেসস্কি

@TheCloudlessSky সম্পূর্ণ ফাংশন এবং কভারেজ ফ্রিকোয়েন্সি পদ প্রত্যাশিত ফলাফল সঙ্গে পূর্ণ সিমুলেশন জন্য, দেখুন pastebin.com/qKpNKK0D
Caracal

হ্যাঁ, আমি একজন বোকা:) ... আর-তে কোডটি অনুলিপি করার সময় একটি টাইপো করেছি ... আপনার সমস্ত সহায়তার জন্য ধন্যবাদ! :)
দ্য ক্লাউডলেসস্কি

ধন্যবাদ সুন্দর উত্তরের জন্য কারাকাল। লিঙ্কটি নষ্ট pastebin.com/qKpNKK0Dহয়ে গেছে। আপনি যদি এটি আপডেট করেন এবং সম্পূর্ণ ফাংশন এবং সম্পূর্ণ সিমুলেশন সরবরাহ করেন তবে প্রশংসা করবে। ধন্যবাদ
MYaseen208
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.