বুটস্ট্র্যাপ পদ্ধতি এবং মন্টি কার্লো পদ্ধতিগুলির মধ্যে এই বিভ্রান্তি পুনরাবৃত্তি করে চলেছে, সুতরাং এটির সমাধান করার জন্য এটি সম্ভবত এটির মতো ভাল জায়গা। ( R
কোডের উদাহরণগুলি হোম ওয়ার্কেও সহায়তা করতে পারে))
বুটস্ট্র্যাপের এই বাস্তবায়নটি বিবেচনা করুন :R
boot <- function(x, t) { # Exact bootstrap of procedure t on data x
n <- length(x) # Must lie between 2 and 7 inclusive.
if (n > 7) {
stop("Sample size exceeds 7; use an approximate method instead.")
}
p <- c(n, 1:(n-1))
a <- rep(x, n^(n-1))
dim(a) <- rep(n, n)
y <- as.vector(a)
while (n > 1) {
n <- n-1
a <- aperm(a, p)
y <- cbind(as.vector(a), y)
}
apply(y, 1, t)
}
একটি দ্রুত বর্ণন নিশ্চিত করবে যে এই একটি হল নির্ণায়ক হিসাব: কোন র্যান্ডম মান উত্পন্ন বা ব্যবহার করা হয়। (আগ্রহী পাঠকদের জন্য এটির জন্য আমি এর অভ্যন্তরীণ কাজের বিবরণটি রেখে দেব will)
একটি যুক্ত সংখ্যা মান ফেরত boot
দিতে আর্গুমেন্টগুলি অ্যারেতে সংখ্যার ডেটাগুলির একটি ব্যাচ x
এবং t
কোনও ফাংশনের (যা ঠিক অ্যারেগুলিতে প্রয়োগ করা যেতে পারে x
) একটি রেফারেন্স ; অন্য কথায়, t
একটি পরিসংখ্যান । এটি প্রতিস্থাপন সহ সমস্ত সম্ভাব্য নমুনা তৈরি করে x
এবং সেগুলির t
প্রতিটিটির জন্য প্রযোজ্য , যার ফলে এই জাতীয় প্রতিটি নমুনার জন্য একটি সংখ্যা তৈরি হয়: এটি সংক্ষেপে বুটস্ট্র্যাপ। ফেরত মান একটি অ্যারের প্রতিনিধিত্বমূলক হয় সঠিক বুটস্ট্র্যাপ বন্টন এর t
নমুনা জন্য x
।
একটি ছোট উদাহরণ হিসাবে , আসুন একটি নমুনার জন্য গড় বুটস্ট্র্যাপ x
= c(1,3)
:
> boot(c(1,3), mean)
> [1] 1 2 2 3
থেকে প্রতিস্থাপন সহ আকারের প্রকৃত চারটি নমুনা রয়েছে ; যথা, , , , এবং । এগুলি সমস্ত উত্পন্ন করে (কেবলমাত্র তালিকাভুক্ত ক্রমে) এবং এটি প্রতিটিটির জন্য প্রযোজ্য । এই ক্ষেত্রে গড়ের গণনা করে এবং ফলাফলগুলি যথাক্রমে , , এবং হিসাবে আউটপুট হিসাবে দেখায়।( 1 , 3 ) ( 1 , 1 ) ( 1 , 3 ) ( 3 , 1 ) ( 3 , 3 ) 1 2 2 32( 1 , 3 )( 1 , 1 )( 1 , 3 )( 3 , 1 )( 3 , 3 )boot
t
t
1223
আপনি এখান থেকে কোথায় যাবেন তার উপর নির্ভর করে আপনি কীভাবে বুটস্ট্র্যাপ ব্যবহার করতে চান। পূর্ণ বুটস্ট্র্যাপ সম্পর্কে তথ্য এই আউটপুট অ্যারের মধ্যে অন্তর্ভুক্ত করা হয়, তাই এটি সাধারণত একটি ভাল ধারণা এটা প্রদর্শন করে না। এখানে উদাহরণ রয়েছে যেখানে স্ট্যান্ডার্ড বিচ্যুতিটি নমুনা থেকে বুটস্ট্র্যাপ করা আছে :( 1 , 3 , 3 , 4 , 7 )
hist(boot(c(1,3,3,4,7), sd))
এখন আমরা মন্টি কার্লো সিমুলেশন সম্পর্কে কথা বলতে প্রস্তুত । ধরুন, বলুন, আমরা এর বুটস্ট্র্যাপ বিতরণের উপরের 95 তম পার্সেন্টাইলটি ব্যবহার করে টির নমুনা থেকে এসডিতে 95% উচ্চতর আত্মবিশ্বাসের সীমাটি বুটস্ট্র্যাপ করতে যাচ্ছি । এই পদ্ধতিতে কী সম্পত্তি থাকবে? এটির সন্ধান করার একটি উপায় হ'ল ধরুন , নমুনাটি এলোমেলোভাবে পাওয়া গেছে, বলুন, অভিন্ন বিতরণ থেকে। (অ্যাপ্লিকেশনটি প্রায়শই যুক্তিসঙ্গত বন্টনীয় ধারণাটি কী হতে পারে তা নির্দেশ করবে; এখানে আমি নির্বিচারে একটি বেছে নিয়েছি যা গণনার পক্ষে সহজ তবে বিশ্লেষণাত্মকভাবে মোকাবেলা করা সহজ নয়।) আমরা এই জাতীয় নমুনা নিয়ে এবং ইউসিএল গণনা করে যা ঘটে তা অনুকরণ করতে পারি:5
> set.seed(17)
> quantile(boot(runif(5, min=0, max=10), sd), .95)[1]
95%
3.835870
এই নির্দিষ্ট এলোমেলো নমুনার ফলাফল 3.83587। এটি সুনির্দিষ্ট: আপনি যদি একই সেট ডেটার boot
সাথে আবার কল করতেন তবে উত্তরটি হুবহু একই রকম হত। কিন্তু উত্তরটি বিভিন্ন এলোমেলো নমুনার সাথে কীভাবে পরিবর্তন হতে পারে? এই প্রক্রিয়াটি কয়েকবার পুনরাবৃত্তি করে এবং ফলাফলগুলির একটি হিস্টোগ্রাম অঙ্কন করে সন্ধান করুন:
> boot.sd <- replicate(100, quantile(boot(runif(5, min=0, max=10), sd), .95)[1])
> hist(boot.sd)
যদি আমরা সিমুলেশনগুলির আরও একটি সেট করতাম, তবে এলোমেলোভাবে আঁকাগুলি আলাদা হয়ে আসে এবং একটি (কিছুটা) আলাদা হিস্টোগ্রাম তৈরি করে - তবে এটির থেকে খুব বেশি আলাদা নয়। এসডি-র বুটস্ট্র্যাপ ইউসিএল কীভাবে কাজ করছে তা বুঝতে আমরা কিছুটা আত্মবিশ্বাসের সাথে এটি ব্যবহার করতে পারি। রেফারেন্সের জন্য, লক্ষ্য করুন যে অভিন্ন বিতরণের স্ট্যান্ডার্ড বিচ্যুতি ( এখানে উল্লিখিত হিসাবে থেকে পর্যন্ত বিস্তৃত ) । যেহেতু যে কোনও ইউসিএল এর লবণের মূল্য আশা করবে, হিস্টোগ্রামের মানগুলির সংখ্যাগরিষ্ঠ (তিন-চতুর্থাংশ বা 0.75) এর চেয়ে বেশি:10 10 / √01010 / 12--√≈ 2,887
> length(boot.sd[boot.sd >= 10/sqrt(12)]) / length(boot.sd)
[1] 0.75
তবে এটি আমরা উল্লেখ করা নামমাত্র 95% এর কাছাকাছি কোথাও নেই (এবং প্রত্যাশী ছিলাম)! এটি সিমুলেশনের একটি মূল্য: এটি আমাদের প্রত্যাশাগুলির সাথে তুলনা করে যা সত্যিই চলছে। (তাত্পর্য কেন? আমি বিশ্বাস করি এটি কারণ একটি এসডি বুটস্ট্র্যাপিং সত্যিই ছোট নমুনাগুলির সাথে ভাল কাজ করে না))
পুনঃমূল্যায়ন
বুটস্ট্র্যাপের পরিসংখ্যানগুলি ধারণাগতভাবে কোনও গড় বা স্ট্যান্ডার্ড বিচ্যুতির মতো অন্য কোনও পরিসংখ্যানের মতো; তারা গণনা করতে কেবল দীর্ঘ সময় নেয়। (কোডটিতে সতর্কতা বার্তা দেখুন boot
!)
নমুনা পাওয়ার ক্ষেত্রে এলোমেলোতার কারণে বুটস্ট্র্যাপের পরিসংখ্যান কীভাবে পরিবর্তিত হয় তা অধ্যয়নের জন্য মন্টে-কার্লো সিমুলেশন দরকারী হতে পারে। এই ধরনের সিমুলেশনটিতে লক্ষ্যমাত্রাটি নমুনাগুলির পরিবর্তনের কারণে হয়, বুটস্ট্র্যাপে পরিবর্তনের কারণে নয় ।
(এখানে চিত্রিত নয়) বুটস্ট্র্যাপের পরিসংখ্যানগুলি প্রচুর গণনা নিতে পারে (দৃশ্যত, আকার নমুনাগুলির জন্য গণনা ), এটি বুটস্ট্র্যাপ বিতরণ আনুমানিক পক্ষে সুবিধাজনক । সত্যিকারের বুটস্ট্র্যাপ বিতরণ থেকে এলোমেলোভাবে একটি মান পেতে এবং সেই প্রোগ্রামটি বারবার কল করে এটি "ব্ল্যাক বক্স" প্রোগ্রাম তৈরি করে সাধারণত করা হয়। সমষ্টিগত আউটপুট সঠিক বন্টন প্রায়। কালো বাক্সে এলোমেলোতার কারণে আনুমানিকতা পৃথক হতে পারে - তবে এই প্রকরণটি আনুমানিক পদ্ধতির একটি নিদর্শন। এটি বুটস্ট্র্যাপ পদ্ধতিতে অন্তর্নিহিত নয় (ধারণাগতভাবে)।এনএনএন