আমি একটি শ্রেণি প্রদর্শন করতে চেয়েছিলাম যেখানে আমি একটি টি-ইন্টারভালকে বুটস্ট্র্যাপের ব্যবধানের সাথে তুলনা করি এবং উভয়ের কভারেজ সম্ভাবনার গণনা করি। আমি ডেটাটি একটি স্কিউড ডিস্ট্রিবিউশন থেকে আসতে চেয়েছিলাম তাই আমি exp(rnorm(10, 0, 2)) + 1
স্থানান্তরিত লগমনরমাল থেকে 10 মাপের নমুনা হিসাবে ডেটা উত্পন্ন করতে বেছে নিয়েছি । আমি 1000 টি নমুনা আঁকার জন্য একটি স্ক্রিপ্ট লিখেছিলাম এবং প্রতিটি নমুনার জন্য 1000 প্রতিলিপিগুলির উপর ভিত্তি করে 95% টি-ইন্টারভেল এবং 95% বুটস্ট্র্যাপ পারসেন্টাইল ব্যবধান উভয়ই গণনা করি।
আমি যখন স্ক্রিপ্টটি চালনা করি, উভয় পদ্ধতিতে খুব একই ধরণের অন্তর দেওয়া হয় এবং উভয়েরই 50-60% এর কভারেজ সম্ভাবনা থাকে। আমি অবাক হয়েছি কারণ আমি ভেবেছিলাম বুটস্ট্র্যাপের ব্যবধানটি আরও ভাল হবে।
আমার প্রশ্ন, আমি আছে
- কোডে ভুল করেছেন?
- অন্তর অন্তর গণনা করতে ভুল করেছেন?
- বুটস্ট্র্যাপের ব্যবধানটি আরও ভাল কভারেজের বৈশিষ্ট্য পাওয়ার আশা করে ভুল করেছে?
এছাড়াও, এই পরিস্থিতিতে আরও নির্ভরযোগ্য সিআই নির্মাণ করার কোনও উপায় আছে কি?
tCI.total <- 0
bootCI.total <- 0
m <- 10 # sample size
true.mean <- exp(2) + 1
for (i in 1:1000){
samp <- exp(rnorm(m,0,2)) + 1
tCI <- mean(samp) + c(1,-1)*qt(0.025,df=9)*sd(samp)/sqrt(10)
boot.means <- rep(0,1000)
for (j in 1:1000) boot.means[j] <- mean(sample(samp,m,replace=T))
bootCI <- sort(boot.means)[c(0.025*length(boot.means), 0.975*length(boot.means))]
if (true.mean > min(tCI) & true.mean < max(tCI)) tCI.total <- tCI.total + 1
if (true.mean > min(bootCI) & true.mean < max(bootCI)) bootCI.total <- bootCI.total + 1
}
tCI.total/1000 # estimate of t interval coverage probability
bootCI.total/1000 # estimate of bootstrap interval coverage probability