Skip to content

8.2 — Simulation Study (তত্ত্বকে Monte-Carlo দিয়ে verify)

১ · ভূমিকা

১.১ ভোক্তা থেকে ডিজাইনার — একটা যাত্রার সমাপক ধাপ

এই অধ্যায় একটা রূপান্তরের অধ্যায়। Part 0 থেকে Part VII পর্যন্ত পুরো আরোহণে একটা নির্দিষ্ট ভূমিকা বারবার পালন করা হয়েছে: theorem-এর ভোক্তা (consumer) হওয়া। Central Limit Theorem বিবৃত ও (Part VII-এ) প্রমাণিত হয়েছে, maximum likelihood estimator-এর consistency ও asymptotic normality প্রতিষ্ঠিত হয়েছে, bootstrap-এর confidence interval-এর ন্যায্যতা যুক্তি দিয়ে দেখানো হয়েছে, bias–variance decomposition learning theory-র কেন্দ্রে বসেছে। প্রতিটি ক্ষেত্রে দাবিটা গ্রহণ করা হয়েছে, বোঝা হয়েছে, ব্যবহার করা হয়েছে — কিন্তু কখনো সেই দাবিকে নিজে হাতে পরীক্ষা করার একটা পূর্ণাঙ্গ যন্ত্র গড়া হয়নি।

Part VIII সেই ভূমিকা বদলে দেয়। এখানে শেখার লক্ষ্য theorem গ্রহণ করা নয় — বরং একটা তাত্ত্বিক দাবির মুখোমুখি দাঁড়িয়ে নিজে একটা পরীক্ষা ডিজাইন করা (design an experiment), সেই পরীক্ষা চালানো, এবং তার সংখ্যাগত ফলকে তত্ত্বের ভবিষ্যদ্বাণীর সাথে মিলিয়ে দেখা। এটাই একজন গবেষকের মৌলিক efficiency: তত্ত্বকে বিশ্বাস করার আগে তাকে verify করা, এবং নিজের কোডকে বিশ্বাস করার আগে তাকেও verify করা।

এক বাক্যে সূচনা। Part 0–VII শিক্ষার্থীকে theorem-এর ভোক্তা বানিয়েছিল; এই capstone অধ্যায় তাকে এমন একজনে পরিণত করে যে একটা দাবি পরীক্ষা করতে নিজে একটা সিমুলেশন স্টাডি (simulation study) ডিজাইন করতে পারে।

১.২ সিমুলেশন স্টাডি — একটা জানা ফল পুনরুৎপাদনই যেখানে verification-এর হাতিয়ার

এই অধ্যায়ের কেন্দ্রীয় থিসিস সরল কিন্তু গভীর। একটা সিমুলেশন স্টাডি (simulation study) বা মন্টি-কার্লো পরীক্ষা (Monte-Carlo experiment) হলো এমন একটা সাজানো কম্পিউটেশনাল পরীক্ষা, যেখানে কৃত্রিম random তথ্য বারবার তৈরি করে কোনো statistic-এর আচরণ পর্যবেক্ষণ করা হয়। আর এই অধ্যায়ে তার একটা বিশেষ, শৃঙ্খলিত ব্যবহারই মূল বিষয়: এমন পরীক্ষা ডিজাইন করা যা একটা আগে থেকে জানা তাত্ত্বিক ফল পুনরুৎপাদন (reproduce a known theoretical result) করে।

কেন জানা ফল পুনরুৎপাদন করা হবে, যখন ফলটা তো ইতিমধ্যেই জানা? কারণ এখানে দুটো জিনিস একসাথে verify হয়। প্রথমত, তত্ত্বটা verify হয় — কাগজের প্রমাণ সত্যি বাস্তব সংখ্যায় ফুটে ওঠে কিনা, এবং কোন শর্তে (কত বড় \(n\)-এ, কোন distribution-এ) তা কতটা ভালো কাজ করে, তা চোখে দেখা যায়। দ্বিতীয়ত, এবং সমান গুরুত্বপূর্ণ — নিজের কোড ও পাইপলাইন verify হয়। যখন একটা সিমুলেশনের ফল একটা জানা তাত্ত্বিক মানের সাথে মেলে, তখন সেটা একটা প্রবল সাক্ষ্য যে estimator, sampling, ও হিসাবের কোড নির্ভুল। এই "জানা-উত্তরের বিরুদ্ধে পরীক্ষা" (known-answer test) হলো ঠিক সেই ভিত্তি, যার উপর দাঁড়িয়ে পরে একটা অজানা পরিস্থিতিতে সেই কোডকে বিশ্বাস করা যায়। তত্ত্ব ও কোড — দুটোই সন্দেহভাজন যতক্ষণ না তারা একটা জানা ফলে একমত হয়।

এক বাক্যে। একটা জানা তাত্ত্বিক ফলকে পুনরুৎপাদনকারী সিমুলেশন স্টাডিই সেই পদ্ধতি যা দিয়ে গবেষকেরা একসাথে তত্ত্বনিজের কোড — দুটোকেই বিশ্বাস করার আগে verify করে নেন।

১.৩ চারটি পরীক্ষা — চারটি তাত্ত্বিক দাবির verify

এই অধ্যায়ে চারটি সিমুলেশন স্টাডি সাজানো হয়েছে, প্রতিটি আগের কোনো একটা অধ্যায়ের একটা কেন্দ্রীয় দাবিকে verify করে। প্রতিটি পরীক্ষার একটা স্পষ্ট ডিজাইন (factor, replication-সংখ্যা, নির্দিষ্ট seed np.random.default_rng(20260619)), একটা মুদ্রিত ফলাফল-সারণি, এবং একটা তাত্ত্বিক ভবিষ্যদ্বাণী আছে যাকে ফলটা নিশ্চিত করে।

  • পরীক্ষা E1 — CLT-র convergence rate ও Berry–Esseen (← 3.4)। ভিত্তি-distribution হিসেবে ডানদিকে-বাঁকা \(\text{Exp}(1)\) নিয়ে standardized গড় \(Z_n=\sqrt n(\bar X_n-1)\)-এর distribution \(N(0,1)\)-এর কতটা কাছে, তা Kolmogorov–Smirnov দূরত্ব \(\sup_x\lvert F_n(x)-\Phi(x)\rvert\) দিয়ে মাপা হয় এবং \(n\)-এর সাথে তার ক্ষয়-হার দেখা হয়। Berry–Esseen theorem বলে এই দূরত্ব \(\sim n^{-1/2}\) হারে কমবে; পরীক্ষায় log–log slope ≈ −0.5 (নির্দিষ্টভাবে \(-0.4998\)) পাওয়া যায় — তাত্ত্বিক \(-1/2\)-এর প্রায় নিখুঁত প্রতিধ্বনি।

  • পরীক্ষা E2 — bootstrap confidence interval-এর coverage (← 4.9)। \(\text{Exp}(1)\) থেকে \(n=40\) আকারের নমুনায় গড়ের উপর percentile bootstrap দিয়ে ৯৫% confidence interval বানিয়ে, বহু পুনরাবৃত্ত dataset-এ সেই interval সত্যিকারের \(\theta=1\)-কে কত ভাগ ক্ষেত্রে ধরে — সেই coverage probability মাপা হয়। এখানে প্রাপ্ত empirical coverage ≈ 0.913 — nominal \(0.95\)-এর সামান্য নিচে, যা মাঝারি \(n\)-এ ডান-বাঁক (skew) থাকা distribution-এ percentile bootstrap-এর সামান্য under-coverage-এর তাত্ত্বিক expectation-কেই ফুটিয়ে তোলে।

  • পরীক্ষা E3 — bias–variance tradeoff (← 6.1)। একটা পরিচিত signal-এর উপর ভিন্ন ভিন্ন degree-এর polynomial regression বসিয়ে test error-কে \(\text{Bias}^2\), \(\text{Var}\) ও অপরিবর্তনীয় noise-এ ভাঙা হয়। তত্ত্ব বলে degree বাড়ালে \(\text{Bias}^2\) কমবে কিন্তু \(\text{Var}\) বাড়বে, তাই মোট error একটা U-আকৃতি নেবে; পরীক্ষায় ঠিক তা-ই ঘটে, এবং সর্বনিম্ন মোট error দেয় optimal degree 5

  • পরীক্ষা E4 — MLE-র consistency ও asymptotic normality (← 4.3)। \(\text{Exp}(\lambda=2)\) মডেলে MLE \(\hat\lambda=1/\bar X\)-এর bias ও RMSE \(n\) বাড়ার সাথে কমে কিনা (consistency), এবং standardized estimator-এর distribution \(N(0,1)\)-এ যায় কিনা (asymptotic normality) — তা verify হয়। বড় \(n\)-এ standardized estimator ও \(N(0,1)\)-এর মধ্যে KS-দূরত্ব ≈ 0.0180 পর্যন্ত নেমে আসে, যা asymptotic normality-র দাবিকে দৃঢ়ভাবে সমর্থন করে।

এক বাক্যে। চারটি পরীক্ষা — CLT-হার/Berry–Esseen (← 3.4), bootstrap coverage (← 4.9), bias–variance tradeoff (← 6.1), ও MLE consistency/asymptotic normality (← 4.3) — প্রত্যেকে আগের একটা অধ্যায়ের একটা কেন্দ্রীয় তাত্ত্বিক দাবিকে একটা ডিজাইন-করা মন্টি-কার্লো পরীক্ষায় পুনরুৎপাদন করে verify করে।

১.৪ কেন এটি গুরুত্বপূর্ণ — capstone-এর সমন্বয়কারী ভূমিকা

এই চারটি পরীক্ষা randomly বাছা হয়নি — একসাথে এরা পুরো আরোহণের চারটি স্তম্ভকে স্পর্শ করে: সীমা-theorem (CLT, E1), resampling-ভিত্তিক inference (bootstrap, E2), statistical learning (bias–variance, E3), ও parametric estimation-এর asymptotics (MLE, E4)। একটা capstone অধ্যায় হিসেবে এর কাজ নতুন তত্ত্ব যোগ করা নয়, বরং আগে গড়া বিচ্ছিন্ন যন্ত্রগুলোকে একটা অভিন্ন পরীক্ষামূলক শৃঙ্খলার (experimental discipline) নিচে একত্রে বসানো — যেখানে প্রতিটি দাবি ডিজাইন, replication, seed, সারণি ও তাত্ত্বিক তুলনার একই কাঠামোয় পরীক্ষিত হয়।

এর ফল কেবল চারটি নিশ্চিতকরণ নয়, বরং একটা হস্তান্তরযোগ্য efficiency: একটা তাত্ত্বিক দাবি পেলে তাকে একটা reproducible সিমুলেশন স্টাডিতে অনুবাদ করা, সঠিক factor বেছে নেওয়া, Monte-Carlo standard error দিয়ে ফলের অনিশ্চয়তা মাপা, এবং তাত্ত্বিক expectation-এর সাথে তার সংগতি বিচার করা। এই efficiency-ই পরবর্তী যেকোনো গবেষণা-পথে — যেখানে দাবিটা আর জানা থাকবে না — সবচেয়ে কাজে লাগবে।

এক বাক্যে। এই অধ্যায়ের তাৎপর্য নতুন তত্ত্বে নয়, বরং আগের সব যন্ত্রকে একটা অভিন্ন পরীক্ষামূলক শৃঙ্খলায় একত্রিত করে একটা হস্তান্তরযোগ্য efficiency গড়ায় — জানা দাবিতে verify-করা যে পদ্ধতি অজানা দাবিতেও নির্ভরযোগ্য।

১.৫ এই অধ্যায়ের পথরেখা

  • §২ পরীক্ষা-ডিজাইনের মূল শব্দভাণ্ডার ও পদ্ধতিMonte-Carlo simulation, pseudo-random number generatorseed (reproducibility), replications (\(R\)) ও Monte-Carlo standard error (MC SE), sampling distribution, convergence rate (\(\sim n^{-1/2}\)), coverage probability, bias–variance decomposition, consistencyasymptotic normality, Berry–Esseen theorem, factorial experiment design, এবং variance reduction — প্রতিটির precise সংজ্ঞা ও পরস্পর-সম্পর্ক।
  • §৩ পরীক্ষা E1 — CLT-র convergence rate: KS-দূরত্ব বনাম \(n\), log–log slope ≈ −0.5, এবং Berry–Esseen-এর সাথে তুলনা।
  • §৪ পরীক্ষা E2 — bootstrap coverage: percentile bootstrap CI-র empirical coverage ≈ 0.913, MC SE, ও under-coverage-এর ব্যাখ্যা।
  • §৫ পরীক্ষা E3 — bias–variance tradeoff: degree বনাম \(\text{Bias}^2\)/\(\text{Var}\)/মোট error, U-আকৃতি, ও optimal degree 5।
  • §৬ পরীক্ষা E4 — MLE consistency ও asymptotic normality: bias/RMSE বনাম \(n\), standardized estimator-এর KS ≈ 0.0180।
  • §৭ চার পরীক্ষার সংশ্লেষ, অভিন্ন ডিজাইন-নীতি ও সাধারণ পাঠ; §৮ সীমাবদ্ধতা, সম্প্রসারণ ও অনুশীলন।

এক বাক্যে পথরেখা। §২ পরীক্ষা-ডিজাইনের শব্দভাণ্ডার ও পদ্ধতি → §৩–§৬ চারটি পরীক্ষা (CLT-হার, bootstrap coverage, bias–variance, MLE asymptotics), প্রতিটি ডিজাইন+সারণি+তাত্ত্বিক তুলনা সহ → §৭ সংশ্লেষ ও §৮ সম্প্রসারণ-অনুশীলন।


২ · মূল ধারণা ও পদ্ধতি

এই বিভাগে পরীক্ষা-ডিজাইনের সব formal বস্তুর precise সংজ্ঞা ও পদ্ধতি দেওয়া হয় — সব technical term English-এই রাখা হয়; দরকারে অর্থটি আলাদা বাংলা বাক্যে ব্যাখ্যা করা হয়। কাঠামো §১-এর সুতো ধরে: প্রথমে সিমুলেশনের ইঞ্জিন — Monte-Carlo simulation, pseudo-random number generatorseed (২.১); তারপর একটা পরীক্ষার একক ও তার অনিশ্চয়তা — replicationsMonte-Carlo standard error (২.২); statistic-এর আচরণের ভাষা — sampling distributionconvergence rate (২.৩); চারটি পরীক্ষার তাত্ত্বিক লক্ষ্য-ধারণা — coverage probability, bias–variance decomposition, consistency/asymptotic normality, Berry–Esseen theorem (২.৪–২.৭); শেষে পরীক্ষা সাজানোর কাঠামো — factorial experiment designvariance reduction (২.৮)। জুড়ে সব random তথ্য একটা নির্দিষ্ট seed np.random.default_rng(20260619)-চালিত generator থেকে আসা ধরে নেওয়া হয়, যাতে প্রতিটি ফল হুবহু পুনরুৎপাদনযোগ্য (reproducible)।

২.১ Monte-Carlo simulation, pseudo-random number generator ও seed

সব পরীক্ষার ভিত্তি একটাই ধারণা — জানা random প্রক্রিয়া থেকে বহুবার নমুনা তৈরি করে কোনো রাশির আচরণ পর্যবেক্ষণ করা।

সংজ্ঞা (Monte-Carlo simulation)। একটা Monte-Carlo simulation (মন্টি-কার্লো সিমুলেশন) হলো এমন একটা পদ্ধতি, যেখানে কোনো তাত্ত্বিক রাশি — যেমন expectation, probability, বা একটা statistic-এর distribution — এর আনুমানিক মান বের করা হয় সেই random প্রক্রিয়া থেকে বহুবার কৃত্রিম নমুনা তৈরি করে এবং প্রতিবারের ফল গড় বা সংগ্রহ করে। কোনো বদ্ধ-রূপ (closed-form) সমাধান কঠিন হলেও, বড়-সংখ্যক পুনরাবৃত্তির গড় large-number সূত্রে সত্য মানের দিকে convergent হয়।

কম্পিউটার সত্যিকারের random সংখ্যা তৈরি করে না; বদলে একটা নির্ধারক (deterministic) অ্যালগরিদম random-দর্শনীয় ক্রম উৎপন্ন করে।

সংজ্ঞা (pseudo-random number generator ও seed)। একটা pseudo-random number generator (সিউডো-random সংখ্যা জেনারেটর, সংক্ষেপে PRNG) হলো একটা নির্ধারক অ্যালগরিদম, যা একটা প্রাথমিক অবস্থা থেকে শুরু করে এমন একটা সংখ্যা-ক্রম দেয় যা পরিসংখ্যানগতভাবে random-এর মতো আচরণ করে। এই প্রাথমিক অবস্থা নির্ধারণকারী মানটাই seed (বীজ): একই seed সবসময় হুবহু একই ক্রম দেয়। তাই seed স্থির রাখাই reproducibility (পুনরুৎপাদনযোগ্যতা)-র চাবি — একই কোড, একই seed, একই ফল। এই অধ্যায়ে সর্বত্র generator তৈরি হয় np.random.default_rng(20260619) দিয়ে।

seed-কে একটা সচেতন ডিজাইন-সিদ্ধান্ত হিসেবে দেখা জরুরি: এটা ফলকে "সাজানো" করে না, বরং যেকোনো পাঠককে হুবহু একই সংখ্যা verify করার সুযোগ দেয় — যা একটা জানা-উত্তরের পরীক্ষায় (§১.২) অপরিহার্য।

এক বাক্যে। Monte-Carlo simulation জানা random প্রক্রিয়া থেকে বহুবার নমুনা তৈরি করে রাশির আচরণ মাপে, আর তা চালায় একটা PRNG যার seed (np.random.default_rng(20260619)) স্থির রাখলে প্রতিটি ফল হুবহু reproducible হয়।

২.২ replications ও Monte-Carlo standard error

একটা মন্টি-কার্লো অনুমান নিজেই random — তাই তার নিজস্ব একটা অনিশ্চয়তা আছে, যা পুনরাবৃত্তি-সংখ্যা দিয়ে নিয়ন্ত্রিত হয়।

সংজ্ঞা (replications)। একটা সিমুলেশন পরীক্ষায় replications (পুনরাবৃত্তি, সংখ্যাটি \(R\) দিয়ে চিহ্নিত) হলো independently সম্পন্ন করা পুনরাবৃত্ত পরীক্ষা-চক্রের সংখ্যা — অর্থাৎ পুরো "নমুনা তৈরি করো, statistic হিসাব করো" প্রক্রিয়াটা যতবার independently করা হয়। কোনো রাশির মন্টি-কার্লো অনুমান হলো এই \(R\)টি independent ফলের গড় (বা অনুপাত)।

যেহেতু অনুমানটা \(R\)টি random ফলের গড়, তার নিজস্ব সুনির্দিষ্টতা large-number ও CLT (← 3.4) দিয়ে measurable।

সংজ্ঞা (Monte-Carlo standard error)। একটা মন্টি-কার্লো অনুমানের Monte-Carlo standard error (সংক্ষেপে MC SE) হলো সেই অনুমানের নিজস্ব sampling-অনিশ্চয়তার একটা পরিমাপ। \(R\)টি independent ফলের নমুনা-standard deviation \(s\) হলে একটা গড়-ধরনের অনুমানের ক্ষেত্রে

\[ \text{MC SE}\;\approx\;\frac{s}{\sqrt R}, \]

এবং যখন অনুমানটা একটা অনুপাত (proportion) \(\hat p\) — যেমন coverage — তখন

\[ \text{MC SE}\;\approx\;\sqrt{\frac{\hat p\,(1-\hat p)}{R}}. \]

লক্ষণীয়, দুটোই \(\propto R^{-1/2}\) — তাই অনুমানের সুনির্দিষ্টতা দ্বিগুণ করতে \(R\) চারগুণ করতে হয়।

MC SE-ই বলে দেয় একটা সিমুলেশন-ফল কতটা নির্ভরযোগ্য: E2-তে coverage \(0.913\)-এর পাশে যে MC SE \(\approx 0.0063\), তা জানায় empirical coverage ও nominal \(0.95\)-এর মধ্যকার ব্যবধানটা নিছক মন্টি-কার্লো-শব্দ (noise) নয়, বরং একটা বাস্তব under-coverage।

এক বাক্যে। replications (\(R\)) হলো independent পরীক্ষা-চক্রের সংখ্যা, আর Monte-Carlo standard error (\(\text{MC SE}\approx s/\sqrt R\), অনুপাতে \(\sqrt{\hat p(1-\hat p)/R}\)) মাপে সেই \(R\)-চালিত অনুমানের নিজস্ব অনিশ্চয়তা — যা ছাড়া কোনো সিমুলেশন-ফলের সাথে তত্ত্বের ব্যবধানকে অর্থপূর্ণভাবে বিচার করা যায় না।

২.৩ sampling distribution ও convergence rate

প্রতিটি পরীক্ষা আসলে একটা statistic-এর distribution নিয়ে প্রশ্ন করে — এবং সেই distribution কত দ্রুত একটা সীমায় গোছায়, তা নিয়ে।

সংজ্ঞা (sampling distribution)। একটা statistic \(T_n\) (নমুনা থেকে হিসাব-করা যেকোনো রাশি, যেমন \(\bar X_n\) বা \(\hat\lambda\))-এর sampling distribution (sampling-distribution) হলো পুনরাবৃত্ত sampling-এর অধীনে \(T_n\)-এর distribution — অর্থাৎ একই distribution থেকে একই আকারের নমুনা বারবার নিলে \(T_n\) যে মানগুলো যে probability-এ নেয়, তার distribution। সিমুলেশন এই sampling distribution-কে empirically গড়ে তোলে: \(R\)টি independent নমুনায় \(T_n\)-এর \(R\)টি মান একত্রে তার আনুমানিক sampling distribution।

sampling distribution একটা সীমা-আকৃতির (যেমন \(N(0,1)\)) দিকে যায় — কিন্তু কত দ্রুত?

সংজ্ঞা (convergence rate)। একটা sampling distribution বা তার কোনো ত্রুটি-পরিমাপ যদি নমুনা-আকার \(n\)-এর সাথে \(c\,n^{-\alpha}\)-এর মতো হারে সীমায় নামে, তবে \(\alpha\)-কে বলা হয় সেই convergence-এর convergence rate (convergence rate)। পরিসংখ্যানে সবচেয়ে ঘনঘন দেখা হার \(\alpha=1/2\), অর্থাৎ ত্রুটি \(\sim n^{-1/2}\) — CLT, MLE-asymptotics ও Berry–Esseen সবই এই হারে বাঁধা। একটা log–log ছকে (\(\log(\text{error})\) বনাম \(\log n\)) এই হার একটা ঋণাত্মক slope হিসেবে ফুটে ওঠে, যার মান তত্ত্বে \(-\alpha\)

এই দুই ধারণা সরাসরি E1-এ কাজে লাগে: সেখানে \(Z_n=\sqrt n(\bar X_n-1)\)-এর sampling distribution-কে \(N(0,1)\)-এর সাথে তুলনা করে ত্রুটির convergence rate মাপা হয়, এবং log–log slope ≈ −0.5 পাওয়া মানে ত্রুটি ঠিক \(n^{-1/2}\) হারে কমছে।

এক বাক্যে। একটা sampling distribution হলো পুনরাবৃত্ত sampling-এ একটা statistic-এর distribution, আর convergence rate (\(\sim n^{-1/2}\), log–log ছকে slope ≈ −0.5) মাপে সেই distribution কত দ্রুত তার সীমা-আকৃতিতে গোছায়।

২.৪ coverage probability

confidence interval-এর মান তার nominal স্তরে নয়, তার প্রকৃত ধরে-রাখার হারে — যাকে সিমুলেশন সরাসরি মাপতে পারে।

সংজ্ঞা (coverage probability)। একটা confidence interval-পদ্ধতির coverage probability (আচ্ছাদন-probability) হলো সেই probability যে পদ্ধতিটির তৈরি random interval সত্যিকারের parameter-মানকে ধারণ করে। একটা \(\hat\theta\)-এর interval \([L,U]\) যদি nominal \(95\%\) হয়, তবে আদর্শে coverage হওয়া উচিত \(0.95\); সিমুলেশনে একই distribution থেকে বহু (\(D\)টি) dataset নিয়ে প্রতিবার interval বানিয়ে, সত্য \(\theta\) কত ভাগ interval-এ পড়ল তার অনুপাতই empirical coverage। এই empirical coverage নিজেই একটা অনুপাত-অনুমান, তাই তার MC SE \(\approx\sqrt{\hat p(1-\hat p)/D}\) (২.২)।

coverage-এর তাৎপর্য: nominal ও empirical coverage-এর ব্যবধানই বলে দেয় একটা interval-পদ্ধতি সৎ কিনা। E2-তে \(\text{Exp}(1)\)-এর ডান-বাঁকের কারণে \(n=40\)-তে percentile bootstrap সামান্য under-cover করে — empirical coverage ≈ 0.913, nominal \(0.95\)-এর নিচে — যা কোনো ভুল নয়, বরং মাঝারি \(n\)-এ skew distribution-এ percentile bootstrap-এর একটা জানা, expected আচরণ।

এক বাক্যে। coverage probability হলো একটা confidence interval সত্য parameter ধরার প্রকৃত probability, যা সিমুলেশনে বহু dataset-এ interval বানিয়ে empirically মাপা যায় — এবং nominal থেকে তার deviation-ই (E2-তে ≈ 0.913 বনাম 0.95) পদ্ধতির নির্ভুলতার পরিমাপ।

২.৫ bias–variance decomposition

একটা estimator বা predictor-এর expected ত্রুটি তিনটি অর্থপূর্ণ অংশে ভাঙে — এই বিভাজনই E3-এর ভিত্তি।

সংজ্ঞা (bias–variance decomposition)। একটা fixed বিন্দুতে একটা estimator \(\hat f\) দিয়ে একটা সত্য মান \(f\) অনুমান করলে, তার expected বর্গ-ত্রুটি (expected squared error) তিনটি অংশে ভাঙে:

\[ \mathbb E\big[(\hat f-f)^2\big]\;=\;\underbrace{\big(\mathbb E[\hat f]-f\big)^2}_{\text{Bias}^2}\;+\;\underbrace{\operatorname{Var}(\hat f)}_{\text{Var}}\;+\;\sigma^2, \]

যেখানে \(\text{Bias}^2\) হলো systematic deviation-এর বর্গ, \(\text{Var}\) হলো estimator-এর নমুনা-থেকে-নমুনায় ওঠানামা, এবং \(\sigma^2\) হলো observation-এর অপরিবর্তনীয় (irreducible) noise — যাকে কোনো মডেল দূর করতে পারে না।

এই বিভাজনের মূল শিক্ষা একটা টানাপোড়েন (tradeoff): মডেলের নমনীয়তা (যেমন polynomial-এর degree) বাড়ালে \(\text{Bias}^2\) কমে কিন্তু \(\text{Var}\) বাড়ে, তাই মোট ত্রুটি সাধারণত একটা U-আকৃতি নেয় এবং কোনো একটা মাঝারি জটিলতায় সর্বনিম্ন হয়। E3 ঠিক এই U-আকৃতি সিমুলেশনে ফুটিয়ে তোলে এবং সর্বনিম্ন-error দেওয়া optimal degree 5 চিহ্নিত করে; সেখানে অপরিবর্তনীয় অংশ \(\sigma^2=0.49\) একটা মেঝে হিসেবে থেকে যায়।

এক বাক্যে। bias–variance decomposition\(\mathbb E[(\hat f-f)^2]=\text{Bias}^2+\text{Var}+\sigma^2\) — expected ত্রুটিকে systematic deviation, ওঠানামা ও অপরিবর্তনীয় noise-এ ভাঙে, এবং degree বাড়ালে \(\text{Bias}^2\downarrow\) কিন্তু \(\text{Var}\uparrow\) হওয়ায় মোট ত্রুটির U-আকৃতিই E3-এর optimal degree 5-কে ব্যাখ্যা করে।

২.৬ consistency ও asymptotic normality

একটা estimator বড় নমুনায় সত্য মানে গোছায় কিনা, এবং সেই মানের চারপাশে তার ওঠানামা normal হয় কিনা — দুটোই E4-এর লক্ষ্য।

সংজ্ঞা (consistency)। একটা estimator \(\hat\theta_n\)-কে বলা হয় \(\theta\)-এর জন্য consistent (consistent), যদি নমুনা-আকার \(n\to\infty\)-এ \(\hat\theta_n\) probability-এ \(\theta\)-এর দিকে convergent হয় — অর্থাৎ যত বড় নমুনা, তত নিশ্চিতভাবে \(\hat\theta_n\) সত্য মানের কাছাকাছি। সিমুলেশনে এটি দেখা যায় \(n\) বাড়ার সাথে \(\hat\theta_n\)-এর bias ও RMSE-এর ক্রমশ শূন্যের দিকে নেমে আসায়।

consistency শুধু "কোথায় গোছায়" বলে; পরবর্তী ধাপ বলে "কীভাবে গোছায়" — কোন আকৃতিতে ও কোন হারে।

সংজ্ঞা (asymptotic normality)। একটা estimator \(\hat\theta_n\) asymptotically normal (উপগামীভাবে normal), যদি যথাযথভাবে কেন্দ্রিত ও \(\sqrt n\)-স্কেলে বিবর্ধিত ত্রুটি একটা normal সীমায় যায়:

\[ \sqrt n\,(\hat\theta_n-\theta)\;\Rightarrow\;N\!\Big(0,\ \tfrac{1}{I(\theta)}\Big), \]

যেখানে \(I(\theta)\) হলো Fisher information (← 4.3) এবং "\(\Rightarrow\)" distribution-এ-convergence। অর্থাৎ বড় \(n\)-এ MLE-এর ত্রুটি প্রায় \(N(0,1/(nI(\theta)))\)-বণ্টিত, তাই standardized রাশি \(\sqrt{nI(\theta)}\,(\hat\theta_n-\theta)\) প্রায় \(N(0,1)\)

E4-তে \(\text{Exp}(\lambda=2)\)-এ \(I(\lambda)=1/\lambda^2\), তাই asymptotic standard deviation \(=\lambda=2\); standardized estimator ও \(N(0,1)\)-এর KS-দূরত্ব বড় \(n\)-এ ≈ 0.0180 পর্যন্ত নামে — asymptotic normality-র সরাসরি সংখ্যাগত সাক্ষ্য। (উল্লেখ্য, \(\hat\lambda=1/\bar X\) finite-\(n\)-এ Jensen-এর কারণে সামান্য biased, কিন্তু bias \(n\to\infty\)-এ শূন্যে যায় — তাই consistent।)

এক বাক্যে। consistency মানে \(n\to\infty\)-এ \(\hat\theta_n\to\theta\) (bias ও RMSE শূন্যে নামে), আর asymptotic normality (\(\sqrt n(\hat\theta_n-\theta)\Rightarrow N(0,1/I(\theta))\)) মানে সেই ত্রুটির আকৃতি \(\sqrt n\)-স্কেলে normal — E4-এ KS ≈ 0.0180 যার সাক্ষী।

২.৭ Berry–Esseen theorem

CLT বলে \(Z_n\) শেষমেশ normal হয়; Berry–Esseen সেই convergence-এর হার বেঁধে দেয় — যা E1-এর তাত্ত্বিক মেরুদণ্ড।

theorem (Berry–Esseen)। iid random variable \(X_1,\dots,X_n\)-এর যদি \(\mathbb E[X]=\mu\), \(\operatorname{Var}(X)=\sigma^2\), ও তৃতীয় absolute central moment \(\rho=\mathbb E\lvert X-\mu\rvert^3<\infty\) হয়, তবে standardized গড় \(Z_n\)-এর CDF \(F_n\) ও standard normal CDF \(\Phi\)-এর মধ্যে সর্বোচ্চ ব্যবধান একটা সর্বজনীন বাঁধে আবদ্ধ:

\[ \sup_x\big\lvert F_n(x)-\Phi(x)\big\rvert\;\le\;\frac{C\,\rho}{\sigma^3\,\sqrt n}, \]

যেখানে \(C\) একটা সর্বজনীন ধ্রুবক (distribution-free)। অর্থাৎ CLT-এর convergence-ত্রুটি \(\sim n^{-1/2}\) হারে কমে, এবং তার ধ্রুবক distribution-এর skewness (\(\rho/\sigma^3\))-এর সমানুপাতিক।

এই theorem-ই E1-কে একটা পরিমাণগত ভবিষ্যদ্বাণী দেয়: বাঁ-দিকের KS-দূরত্ব \(\sup_x\lvert F_n(x)-\Phi(x)\rvert\) ঠিক \(n^{-1/2}\) হারে নামবে, তাই log–log slope হওয়া উচিত \(-1/2\)। পরীক্ষায় প্রাপ্ত slope ≈ −0.5 (\(-0.4998\)) সেই ভবিষ্যদ্বাণীর প্রায় নিখুঁত নিশ্চিতকরণ — এবং \(\text{Exp}(1)\)-এর বড় skewness ঠিক সেই কারণেই ছোট \(n\)-এ দূরত্বকে বড় রাখে।

এক বাক্যে। Berry–Esseen theorem\(\sup_x\lvert F_n(x)-\Phi(x)\rvert\le C\rho/(\sigma^3\sqrt n)\) — CLT-convergence-এর ত্রুটিকে \(n^{-1/2}\) হারে ও skewness-সমানুপাতিক ধ্রুবকে বাঁধে, তাই E1-এ log–log slope ≈ −0.5 হওয়া তত্ত্বেরই expectation।

২.৮ factorial experiment design ও variance reduction

শেষ দুই ধারণা তাত্ত্বিক নয়, পদ্ধতিগত — কীভাবে একটা সিমুলেশন পরিষ্কারভাবে সাজানো ও কার্যকরভাবে চালানো যায়।

সংজ্ঞা (factorial experiment design)। একটা factorial experiment design (উৎপাদক পরীক্ষা-নকশা) হলো এমন একটা সাজানো, যেখানে ফলাফলকে প্রভাবিতকারী নিয়ন্ত্রণযোগ্য চলগুলো — factor (উপাদান) — কে পদ্ধতিগতভাবে ভিন্ন ভিন্ন মানে (level) বসিয়ে প্রতিটি সংমিশ্রণে ফল মাপা হয়, যাতে কোন factor-এর কী প্রভাব তা আলাদা করে বোঝা যায়। এই অধ্যায়ের পরীক্ষাগুলোয় মূল factor হলো নমুনা-আকার \(n\) (E1, E4), মডেল-জটিলতা তথা polynomial degree (E3), ও nominal স্তর (E2) — এবং প্রতিটি level-এ replication-সংখ্যা \(R\) ও seed স্থির রেখে ফল সংগ্রহ করা হয়, যাতে একমাত্র factor-ই পরিবর্তনের উৎস থাকে।

একটা ভালো ডিজাইনের পাশে একটা কার্যকারিতা-কৌশলও থাকে — কম replication-এ বেশি সুনির্দিষ্টতা পাওয়ার উপায়।

সংজ্ঞা (variance reduction)। variance reduction (তারতম্য-হ্রাস) হলো এমন কৌশলের সমষ্টি, যা একই replication-সংখ্যায় একটা মন্টি-কার্লো অনুমানের MC SE কমায় — অর্থাৎ কম গণনায় বেশি নির্ভুলতা দেয়। একটা সরল উদাহরণ E3-এ ব্যবহৃত হয়: বিভিন্ন degree-এর তুলনায় প্রতিবার একই noise-উপলব্ধি (common random numbers) ব্যবহার করলে degree-থেকে-degree তুলনায় noise-জনিত অতিরিক্ত তারতম্য বাদ পড়ে, তাই degree-এর প্রকৃত প্রভাব পরিষ্কারভাবে ফুটে ওঠে। (অন্যান্য কৌশল — antithetic variate, control variate — এখানে শুধু উল্লেখমাত্র।)

এই দুই পদ্ধতিগত ধারণা §১-এর শৃঙ্খলাকে concrete করে: প্রতিটি পরীক্ষা একটা স্পষ্ট factor, স্থির \(R\) ও seed, এবং যেখানে সম্ভব একটা variance-reduction কৌশল নিয়ে সাজানো — যাতে ফলটা পরিষ্কার, reproducible ও তাত্ত্বিক expectation-এর সাথে সরাসরি তুলনীয় হয়।

এক বাক্যে। factorial experiment design ফলকে প্রভাবিতকারী factor-গুলোকে (এখানে \(n\), degree, nominal স্তর) পদ্ধতিগতভাবে বদলে প্রতিটির প্রভাব আলাদা করে, আর variance reduction (যেমন E3-এ common random numbers) একই \(R\)-এ MC SE কমিয়ে ফলকে আরও পরিষ্কার করে — দুটোই একটা সিমুলেশন স্টাডিকে শৃঙ্খলিত ও তাত্ত্বিকভাবে-তুলনীয় করে তোলে।


৩ · পূর্ণাঙ্গ উদাহরণ

§১–২-এ simulation study (সিমুলেশন-অধ্যয়ন)-এর গোটা কাঠামোটা গড়া হয়েছে — একটা Monte-Carlo experiment (মন্টি-কার্লো পরীক্ষা) হলো এমন একটা নকশা যেখানে চেনা তত্ত্বকে verify করার জন্য একটা পরিসংখ্যানকে বহুবার (replications, পুনরাবৃত্তি) সিমুলেট করে তার আচরণ পরিমাপ করা হয়, আর সেই পরিমাপ যদি তত্ত্বের prediction (পূর্বানুমান)-এর সঙ্গে মেলে তবে তত্ত্ব ও কোড দুটোই একসঙ্গে বৈধতা পায়। এই অংশের উদ্দেশ্য সেই বিমূর্ত নীতিকে হাতে-কলমে, কংক্রিট নকশা ও কংক্রিট সংখ্যা দিয়ে ছুঁয়ে দেখা — চারটি ধ্রুপদী পরীক্ষার প্রতিটিকে একটা পূর্ণাঙ্গ ডিজাইন হিসেবে খুলে দেখা: (ক) নকশা (design) — কোন estimand/দাবি verify হচ্ছে, কোন factor (নিয়ামক) ঘোরানো হচ্ছে (যেমন নমুনা-আকার \(n\)), কতগুলো replication, স্থির বীজ (seed np.random.default_rng(20260619)), আর কোন statistic মাপা হচ্ছে; (খ) সেই নকশা যে theoretical prediction নিশ্চিত করার কথা; (গ) প্রকৃত সিমুলেশন-স্টাডির ফলাফল-সারণি (results table); আর (ঘ) পাঠোদ্ধার (read-off) — সংখ্যাগুলোকে তত্ত্বের পাশে বসিয়ে ব্যাখ্যা। চারটি পরীক্ষা যথাক্রমে CLT-র convergence rate (Berry–Esseen), bootstrap CI-র coverage, bias–variance tradeoff, আর MLE-র consistency ও asymptotic normality — Parts 0–VII-এ শেখা তত্ত্বের চারটি স্তম্ভকে সিমুলেশনে পুনরুৎপাদন করে দেখানো। প্রতিটি নকশায় একটাই নীতি নিঃশব্দে কাজ করছে: একটা simulation study তত্ত্বকে প্রমাণ করে না, তত্ত্বের সঙ্গে সংখ্যাগত consistency (agreement) দেখিয়ে তত্ত্ব ও কোড দুটোকেই আস্থাযোগ্য করে তোলে। সব পরীক্ষা একই বীজে চালানো, যাতে সংখ্যাগুলো reproducible (পুনরুৎপাদনযোগ্য) থাকে। সব technical term English-এই রাখা হয়েছে; দরকারে অর্থটি আলাদা বাংলা বাক্যে ব্যাখ্যা করা হয়েছে।


৩.১ · CLT-র convergence rate — Berry–Esseen (Exp(1))

নকশা। estimand/দাবি: iid \(X_1,\dots,X_n\sim\text{Exp}(1)\) (গড় \(\mu=1\), standard deviation \(\sigma=1\), skewness \(\gamma=2\)) থেকে মানক নমুনা-গড় (standardized sample mean) \(Z_n=\sqrt n\,(\bar X_n-1)\)-এর distribution \(n\to\infty\)-এ \(N(0,1)\)-তে যায় (CLT, ← ৩.৪), কিন্তু কত দ্রুত? এখানে verifiable দাবি Berry–Esseen theorem (বেরি–এসিন theorem) — এই convergence-এর হার \(O(n^{-1/2})\)factor: নমুনা-আকার \(n\in\{5,10,20,40,80,160,320\}\) (সাত-স্তরের grid, যাতে \(n\)-এর ওপর হারের নির্ভরতা দেখা যায়)। replication: প্রতি \(n\)-এ \(R=60000\) পুনরাবৃত্তি — অর্থাৎ প্রতি \(n\)-এ \(60000\)টা independent \(Z_n\) তৈরি হয়। statistic: empirical CDF \(F_n\)\(N(0,1)\)-এর CDF \(\Phi\)-এর মধ্যে Kolmogorov–Smirnov distance (K–S দূরত্ব)

\[ \text{KS}(n)=\sup_x\lvert F_n(x)-\Phi(x)\rvert . \]

এই একটি সংখ্যা পুরো distribution-ফারাকের সর্বোচ্চ মান ধরে — তাই CLT-convergence-এর একটা পরিষ্কার একমাত্রিক মাপকাঠি।

তাত্ত্বিক পূর্বানুমান। Berry–Esseen বলে \(\sup_x\lvert F_n(x)-\Phi(x)\rvert\le \dfrac{C\,\rho}{\sigma^3\sqrt n}\), যেখানে \(\rho=\mathbb E\lvert X-\mu\rvert^3\) — অর্থাৎ K–S দূরত্ব \(\sim n^{-1/2}\) হারে শূন্যে নামে। এর অর্থ log-স্কেলে \(\log\text{KS}(n)\) বনাম \(\log n\) একটা সরলরেখা হওয়া উচিত, যার slope ঠিক \(-\tfrac12=-0.5\)। যদি সিমুলেশনে মাপা slope \(-0.5\)-এর কাছে দাঁড়ায়, তবে Berry–Esseen-এর হার-দাবি সংখ্যায় নিশ্চিত।

ফলাফল-সারণি।

\(n\) \(\text{KS}(n)=\sup_x\lvert F_n(x)-\Phi(x)\rvert\)
\(5\) \(0.0590\)
\(10\) \(0.0417\)
\(20\) \(0.0285\)
\(40\) \(0.0225\)
\(80\) \(0.0148\)
\(160\) \(0.0108\)
\(320\) \(0.0071\)

log-log linear-ফিটে মাপা slope \(=-0.4998\) (তত্ত্ব \(-0.5\)), আর ধ্রুবক \(C=e^{\text{intercept}}=0.1326\)

পাঠোদ্ধার। সারণিতে \(n\) প্রতিবার দ্বিগুণ হলে \(\text{KS}(n)\) মোটামুটি \(\tfrac{1}{\sqrt 2}\approx0.707\) গুণ হয়ে নামছে — যেমন \(n{:}5\to10\)-এ \(0.0590\to0.0417\) (অনুপাত \(0.707\)), আবার \(n{:}160\to320\)-এ \(0.0108\to0.0071\) (অনুপাত \(0.657\)) — ঠিক \(n^{-1/2}\)-হারের স্বাক্ষর। মাপা log-log slope \(-0.4998\) তাত্ত্বিক \(-0.5\)-এর সঙ্গে চতুর্থ দশমিক পর্যন্ত মেলে — Berry–Esseen-এর \(O(n^{-1/2})\) হার সংখ্যায় নিশ্চিত (এই আচরণ চিত্র 8-2-clt-rate §৬-এ log-log অক্ষে সরলরেখা হিসেবে দেখা যাবে)। একটা সূক্ষ্ম কিন্তু গুরুত্বপূর্ণ নকশা-প্রশ্ন: \(R\) এত বড় (\(60000\)) কেন? কারণ \(\text{KS}(n)\) নিজেই একটা estimate — এটা \(R\)টা সসীম নমুনা থেকে মাপা, তাই এর নিজস্ব Monte-Carlo noise (মন্টি-কার্লো ত্রুটি) আছে, যার মাপ Dvoretzky–Kiefer–Wolfowitz সীমা-অনুসারে \(\sim 1/\sqrt R\)। বড় \(n\)-এ প্রকৃত \(\text{KS}(n)\) খুবই ছোট (\(0.007\)-এর ঘরে), তাই যদি \(R\) ছোট হতো, এই MC-ত্রুটি (\(\sim 1/\sqrt R\)) সংকেতটাকেই ডুবিয়ে দিত — slope-অনুমান নড়বড়ে হতো। \(R=60000\)-এ MC-ত্রুটি \(\sim 1/\sqrt{60000}\approx0.0041\)-এর ঘরে নেমে আসে, তাই ছোট \(\text{KS}\)-মানগুলোও নির্ভরযোগ্যভাবে মাপা যায় — এটাই একটা ভালো simulation study-র নকশা-নীতি: যে সংকেত মাপছ তার আকারের তুলনায় তোমার MC-ত্রুটি অনেক ছোট রাখো।

এক বাক্যে — Exp(1)-এর মানক নমুনা-গড়ের K–S দূরত্ব \(n\)-এর সঙ্গে log-log slope \(-0.4998\approx-0.5\)-এ নামে, যা Berry–Esseen-এর \(O(n^{-1/2})\) convergence rateকে সংখ্যায় নিশ্চিত করে — শর্ত: \(R\) যথেষ্ট বড় (\(60000\)) যাতে K–S-এর নিজস্ব MC-ত্রুটি (\(\sim 1/\sqrt R\)) সংকেতের চেয়ে ঢের ছোট থাকে।


৩.২ · Bootstrap CI-র coverage (Exp(1))

নকশা। estimand/দাবি: iid \(X_1,\dots,X_n\sim\text{Exp}(1)\)-এর প্রকৃত গড় \(\theta=1\)-এর জন্য percentile bootstrap (পার্সেন্টাইল বুটস্ট্র্যাপ) পদ্ধতিতে বানানো \(95\%\) confidence interval (আস্থা-ব্যবধি, CI)-এর প্রকৃত coverage (আচ্ছাদন) — অর্থাৎ কত ভগ্নাংশ CI প্রকৃত \(\theta=1\)-কে ধরে — সেটা কি nominal \(0.95\)-এর সমান? (bootstrap-এর ভিত্তি ← ৪.৯।) factor: এখানে \(n\) স্থির — \(n=40\) (একটা "মাঝারি" নমুনা, যেখানে asymptotic তত্ত্ব সবে কাজ শুরু করে)। replication: \(D=2000\)টা independent dataset (উপাত্ত-সেট), প্রতিটি \(n=40\)-এর; আর প্রতিটি dataset-এর ভেতরে \(B=1000\)টা resample (পুনঃনমুনা) — অর্থাৎ এটা একটা nested (নিহিত) দুই-স্তরের সিমুলেশন: বাইরের \(2000\) CI-র coverage মাপে, ভেতরের \(1000\) প্রতিটি CI বানায়। statistic: empirical coverage \(=\frac{1}{D}\sum_{d=1}^{D}\mathbf 1\{\theta\in \text{CI}_d\}\), সঙ্গে গড় CI-প্রস্থ।

তাত্ত্বিক পূর্বানুমান। সঠিকভাবে গঠিত \(95\%\) CI-র coverage \(\approx 0.95\) হওয়া উচিত। কিন্তু percentile bootstrap-এর একটা পরিচিত সীমাবদ্ধতা: যখন মূল distribution skewed (asymmetric)\(n\) মাঝারি, তখন এটা সামান্য under-cover (কম-আচ্ছাদন) করে — কারণ percentile-পদ্ধতি নমুনা-গড়ের distribution-এর asymmetry ও bias-কে পুরোপুরি সংশোধন করে না। \(\text{Exp}(1)\) প্রবলভাবে ডান-হেলানো (skewness \(2\)), তাই \(n=40\)-এ coverage-এর মান \(0.95\)-এর সামান্য নিচে থাকার পূর্বানুমান।

ফলাফল-সারণি।

পরিমাণ মান মন্তব্য
nominal coverage \(0.9500\) লক্ষ্য
empirical coverage \(0.9130\) সামান্য নিচে
Monte-Carlo SE \(0.0063\) coverage-অনুমানের ত্রুটি
গড় CI-প্রস্থ \(0.5869\)

পাঠোদ্ধার। মাপা coverage \(0.9130\), nominal \(0.95\)-এর চেয়ে \(0.037\) কম। এটা কি কেবল random-ওঠানামা, নাকি প্রকৃত under-coverage? এখানেই Monte-Carlo SE (মন্টি-কার্লো সম্ভাব্য-ত্রুটি) \(=0.0063\) কাজে লাগে — এটা \(D=2000\)টা random-দ্বিপদ (Bernoulli) ফলাফল থেকে coverage-অনুমানের নিজস্ব ত্রুটি, \(\sqrt{p(1-p)/D}=\sqrt{0.95\cdot0.05/2000}\approx0.0049\)-এর ঘরে (মাপা \(0.0063\))। ফারাক \(0.037\) এই SE-র প্রায় ৬ গুণ — অর্থাৎ এটা পরিসংখ্যানগতভাবে অর্থপূর্ণ, নিছক random নয়। তাই সিদ্ধান্ত: percentile bootstrap \(n=40\)-এ সত্যিই সামান্য under-cover করছে, ঠিক যেমন skew-জনিত পূর্বানুমান বলেছিল। এটা bootstrap-এর ব্যর্থতা নয় — এটা এর সীমার একটা সৎ মানচিত্র: মাঝারি \(n\) ও skewed উপাত্তে percentile-CI কিছুটা সংকীর্ণ (গড় প্রস্থ \(0.5869\)), তাই কিছু ক্ষেত্রে \(\theta\) ফসকে যায় (এই আচরণ চিত্র 8-2-coverage §৬-এ প্রতিটি CI-কে \(\theta=1\)-এর সাপেক্ষে সাজিয়ে দেখা যাবে)। নকশা-শিক্ষা: coverage-এর মতো একটা probability মাপতে হলে তার MC-SE-ও রিপোর্ট করো — নইলে "\(0.91\) বনাম \(0.95\)" অর্থপূর্ণ ফারাক না random noise, তা বলা অসম্ভব।

এক বাক্যে — \(\text{Exp}(1)\), \(n=40\)-এ percentile bootstrap-এর \(95\%\) CI-র empirical coverage \(0.9130\) (MC-SE \(0.0063\)), যা nominal \(0.95\)-এর প্রায় ৬-SE নিচে — অর্থাৎ মাঝারি \(n\) ও ডান-হেলানো distribution-এ percentile bootstrap সৎভাবে সামান্য under-cover করে, ঠিক তত্ত্বের পূর্বানুমান মতো।


৩.৩ · Bias–variance tradeoff (polynomial regression)

নকশা। estimand/দাবি: একটা supervised-learning মডেলের test error (পরীক্ষা-ত্রুটি) তিন ভাগে ভাঙে — \(\text{Total}=\text{Bias}^2+\text{Variance}+\sigma^2\) (bias–variance decomposition, ← ৬.১) — আর মডেল-জটিলতা বাড়ালে \(\text{Bias}^2\) কমে কিন্তু \(\text{Variance}\) বাড়ে, তাই মোট ত্রুটি U-আকৃতির হয়ে একটা optimal জটিলতায় ন্যূনতম হয়। সেটআপ: প্রকৃত signal \(f(x)=\sin(1.5x)+0.5x\), পরিসর \([-3,3]\); noise (কোলাহল) standard deviation \(\sigma=0.7\) (অর্থাৎ irreducible \(\sigma^2=0.4900\)); মডেল = degree-\(d\) polynomial regression (বহুপদী নির্ভরণ)factor: বহুপদীর মাত্রা \(d=1,2,\dots,12\) (জটিলতার একমাত্রিক knob)। replication: \(R=500\)টা প্রশিক্ষণ-সেট, প্রতিটি \(n_{\text{train}}=30\) (স্থির design-বিন্দু)। নকশার মূল কৌশল: প্রতিটি \(d\)-এর জন্য একই noise-realization ব্যবহার করা হয় — অর্থাৎ কেবল \(d\)-ই বদলায়, random-অংশ নয় — যাতে ত্রুটির পার্থক্য বিশুদ্ধভাবে \(d\)-জনিত, random-ওঠানামা-জনিত নয়। statistic: প্রতি \(d\)-তে \(\text{Bias}^2\), \(\text{Variance}\), ও \(\text{Total}\) test error।

তাত্ত্বিক পূর্বানুমান। \(d\) ছোট হলে বহুপদী \(f\)-কে ধরতে পারে না (underfit, উচ্চ bias); \(d\) বড় হলে প্রতিটি প্রশিক্ষণ-সেটের noise-ও শিখে ফেলে (overfit, উচ্চ variance)। তাই \(\text{Bias}^2\) \(d\)-এর সঙ্গে কমবে, \(\text{Variance}\) বাড়বে, আর \(\text{Total}=\text{Bias}^2+\text{Variance}+0.49\) কোনো মাঝামাঝি \(d\)-তে ন্যূনতম হবে — এটাই bias–variance tradeoff। যেহেতু \(\sin\)-এর Taylor expansion-এ বিজোড় পদ লাগে, \(d\) বিজোড় মানে (বিশেষত \(3\)\(5\)-এ) bias-এ বড় পতন expected।

ফলাফল-সারণি।

degree \(d\) \(\text{Bias}^2\) \(\text{Variance}\) \(\text{Total}\)
\(1\) \(0.4812\) \(0.0305\) \(1.0016\)
\(2\) \(0.4812\) \(0.0450\) \(1.0162\)
\(3\) \(0.0741\) \(0.0598\) \(0.6239\)
\(4\) \(0.0742\) \(0.0737\) \(0.6378\)
\(5\) \(0.0020\) \(0.0865\) \(0.5784\) ← ন্যূনতম
\(6\) \(0.0019\) \(0.1001\) \(0.5920\)
\(7\) \(0.0002\) \(0.1131\) \(0.6033\)
\(8\) \(0.0004\) \(0.1288\) \(0.6192\)
\(9\) \(0.0004\) \(0.1455\) \(0.6359\)
\(10\) \(0.0004\) \(0.1641\) \(0.6545\)
\(11\) \(0.0004\) \(0.1826\) \(0.6731\)
\(12\) \(0.0006\) \(0.2041\) \(0.6947\)

irreducible \(\sigma^2=0.4900\); optimal degree \(=5\), ন্যূনতম মোট test error \(=0.5784\)

পাঠোদ্ধার। সারণি তিনটি ভবিষ্যদ্বাণী একসঙ্গে নিশ্চিত করে। প্রথমত, \(\text{Variance}\) কড়াভাবে monotone-বর্ধমান\(0.0305\) (\(d{=}1\)) থেকে \(0.2041\) (\(d{=}12\)) পর্যন্ত প্রতি ধাপে বাড়ে, যা "বেশি জটিল মডেল noise-এর প্রতি বেশি সংবেদনশীল"-কে সংখ্যায় দেখায়। দ্বিতীয়ত, \(\text{Bias}^2\) ধাপে-ধাপে পড়ে, আর পতন দুটো জায়গায় নাটকীয়: \(d{:}2\to3\)-এ \(0.4812\to0.0741\) (কারণ \(\sin\)-এর জন্য বিজোড় ঘন-পদ দরকার, যা \(d{=}3\)-এ প্রথম আসে) এবং \(d{:}4\to5\)-এ \(0.0742\to0.0020\) (পরবর্তী বিজোড় পদ) — ঠিক \(\sin\)-এর গঠন-জনিত পূর্বানুমান মতো। তৃতীয়ত, \(\text{Total}\) U-আকৃতির: \(1.0016\) থেকে নামতে-নামতে \(d{=}5\)-এ ন্যূনতম \(0.5784\), তারপর আবার ধীরে ওঠে (\(d{=}12\)-এ \(0.6947\))। ন্যূনতম-বিন্দু \(d{=}5\)-এই bias প্রায় নিঃশেষ (\(0.0020\)) অথচ variance এখনো সংযত (\(0.0865\)) — এটাই sweet spot। লক্ষণীয়, প্রতিটি সারিতে \(\text{Bias}^2+\text{Variance}+\sigma^2\approx\text{Total}\) প্রায় মেলে (যেমন \(d{=}5\): \(0.0020+0.0865+0.4900=0.5785\approx0.5784\)) — এই যোগফল-অভেদই bias–variance decomposition-এর সংখ্যাগত স্বাক্ষর, আর \(0.49\) হলো সেই irreducible মেঝে যা কোনো মডেলই পেরোতে পারে না (এই U-বক্ররেখা চিত্র 8-2-bias-variance §৬-এ তিন-বক্ররেখায় দেখা যাবে)। নকশা-শিক্ষা: সব \(d\)-তে একই noise ব্যবহার করলে \(d\)-জনিত সূক্ষ্ম পার্থক্যও random noise-এ হারায় না — variance reduction-এর একটা মিতব্যয়ী কৌশল (paired/common-random-numbers design)।

এক বাক্যে — degree বাড়ালে \(\text{Bias}^2\) পড়ে (\(\sin\)-এর বিজোড়-পদ চাহিদায় \(3\)\(5\)-এ নাটকীয় পতন) আর \(\text{Variance}\) monotone বাড়ে, ফলে \(\text{Total}\) test error U-আকৃতিতে \(d{=}5\)-এ ন্যূনতম \(0.5784\) (irreducible \(\sigma^2{=}0.49\)) — bias–variance tradeoff ও তার decomposition সংখ্যায় হুবহু পুনরুৎপাদিত।


৩.৪ · MLE-র consistency ও asymptotic normality (Exp(rate λ))

নকশা। estimand/দাবি: মডেল \(\text{Exp}(\text{rate }\lambda=2)\)-এর maximum likelihood estimator (MLE) \(\hat\lambda=1/\bar X\) দুটো ধ্রুপদী ধর্ম দেখায় (← ৪.৩): (ক) consistency\(n\to\infty\)-এ \(\hat\lambda\to\lambda\) (bias ও RMSE শূন্যে যায়), আর (খ) asymptotic normality\(\sqrt n(\hat\lambda-\lambda)\xrightarrow{d}N(0,\,1/I(\lambda))\)। এখানে Fisher information (ফিশার তথ্য) \(I(\lambda)=1/\lambda^2\), তাই asymptotic standard deviation \(=\lambda=2\)। এটা আসলে দুটো আলাদা simulation study, তাই দুটো নকশা:

(ক) consistency-নকশা। factor: \(n\in\{10,40,160,640\}\) (প্রতিবার \(4\)-গুণ)। replication: প্রতি \(n\)-এ \(R=4000\)statistic: \(\hat\lambda\)-এর bias (\(=\mathbb E[\hat\lambda]-\lambda\)) ও RMSE (মূল-গড়-বর্গ-ত্রুটি)।

(খ) asymptotic-normality-নকশা। factor: স্থির \(n=200\)replication: \(R=40000\) (K–S ভালোভাবে মাপতে বড় দরকার — ৩.১-এর একই যুক্তি)। statistic: standardized পরিমাণ \(S=\dfrac{\sqrt n\,(\hat\lambda-\lambda)}{\lambda}\)-এর গড়, standard deviation, ও \(N(0,1)\)-এর সঙ্গে \(\text{KS}(S,N(0,1))\)

তাত্ত্বিক পূর্বানুমান। (ক) consistency মানে RMSE \(\sim n^{-1/2}\) হারে নামবে — log-log slope \(\approx-0.5\)। তবে \(\hat\lambda=1/\bar X\) একটা convex রূপান্তর, তাই Jensen-এর inequality-অনুসারে \(\mathbb E[1/\bar X]>1/\mathbb E[\bar X]=\lambda\) — অর্থাৎ MLE সসীম \(n\)-এ ধনাত্মক-biased (positively biased), কিন্তু bias \(\to0\), তাই এটি consistent থাকে। (খ) asymptotic normality মানে standardized \(S\)-এর গড় \(\approx0\), standard deviation \(\approx1\), আর \(\text{KS}(S,N(0,1))\) ছোট হওয়া উচিত।

ফলাফল-সারণি (ক) — consistency।

\(n\) bias RMSE
\(10\) \(+0.2182\) \(0.7965\)
\(40\) \(+0.0484\) \(0.3404\)
\(160\) \(+0.0114\) \(0.1639\)
\(640\) \(+0.0028\) \(0.0775\)

RMSE-র log-log slope \(=-0.5570\) (তত্ত্ব \(-0.5\))।

ফলাফল-সারণি (খ) — asymptotic normality (\(n=200\), \(R=40000\))।

পরিমাণ মান তত্ত্ব
asymptotic standard deviation \(=\lambda\) \(2.0000\) \(2\)
standardized \(S\)-এর গড় \(+0.0663\) \(0\)
standardized \(S\)-এর standard deviation \(1.0091\) \(1\)
\(\text{KS}(S,N(0,1))\) \(0.0180\) \(\to0\)

পাঠোদ্ধার। (ক) consistency নিশ্চিত: bias \(+0.2182\to+0.0484\to+0.0114\to+0.0028\) — সবসময় ধনাত্মক (Jensen যেমন বলেছিল, \(1/\bar X\) উপরের দিকে biased) অথচ দ্রুত শূন্যে নামছে; আর RMSE \(0.7965\to0.0775\), প্রতিবার \(n\) \(4\)-গুণ হলে RMSE মোটামুটি অর্ধেক (\(\sqrt 4=2\) গুণ কমে) — ঠিক \(n^{-1/2}\)-হার। মাপা log-log slope \(-0.5570\) তাত্ত্বিক \(-0.5\)-এর কাছে (সামান্য খাড়া, কারণ ছোট \(n\)-এ bias-অংশ RMSE-কে একটু বাড়িয়ে রাখে, বড় \(n\)-এ তা মিলিয়ে যায়) — তবু বার্তা স্পষ্ট: \(\hat\lambda\) consistent, ভুল শূন্যে যায় (এই পতন চিত্র 8-2-mle-asymptotics §৬-এ log-log অক্ষে দেখা যাবে)। (খ) asymptotic normality নিশ্চিত: \(n=200\)-এ standardized \(S\)-এর গড় \(+0.0663\) (\(\approx0\), ক্ষুদ্র অবশিষ্ট bias-এর ছাপ), standard deviation \(1.0091\) (\(\approx1\) — তত্ত্বের asymptotic sd \(=\lambda=2\)-কে \(\lambda\) দিয়ে ভাগ করায় ঠিক \(1\)-এ আসা উচিত, আর তা-ই এসেছে), আর সবচেয়ে জোরালো সাক্ষ্য \(\text{KS}(S,N(0,1))=0.0180\) — এত ছোট যে \(S\)-এর empirical distribution ও \(N(0,1)\) প্রায় অভিন্ন। দুই নকশা একসঙ্গে MLE-তত্ত্বের দুটো স্তম্ভ — consistency + \(\sqrt n\)-হারে \(N(0,1/I(\lambda))\)-এ asymptotic normality — পুনরুৎপাদন করে, এমনকি \(\hat\lambda=1/\bar X\) সসীম-\(n\)-এ biased হওয়া সত্ত্বেও। নকশা-শিক্ষা: একটা estimator-কে verify করতে হলে দুটো আলাদা প্রশ্ন দুটো আলাদা নকশায় ধরো — "ভুল কি শূন্যে যায়?" (consistency-grid) আর "মানক-ভুলের আকৃতি কি Normal?" (fixed-\(n\), বড়-\(R\), K–S)।

এক বাক্যে — \(\text{Exp}(\lambda{=}2)\)-এর MLE \(\hat\lambda=1/\bar X\) Jensen-জনিত ধনাত্মক-bias সত্ত্বেও consistent (RMSE log-log slope \(-0.5570\approx-0.5\)) এবং \(n{=}200\)-এ asymptotically Normal (standardized \(S\): গড় \(+0.0663\), sd \(1.0091\), \(\text{KS}=0.0180\)) — MLE-তত্ত্বের consistency ও asymptotic normality দুটোই সংখ্যায় নিশ্চিত।


৩.৫ · সংশ্লেষ — চারটি নকশার এক সুর

চারটি পরীক্ষা আলাদা তত্ত্ব verify করলেও একই simulation-study পদ্ধতি অনুসরণ করে, আর সেই অভিন্ন কাঠামোই এদের প্রকৃত পাঠ। প্রতিটিতে একটা পরিষ্কার estimand/দাবি, ঘোরানোর জন্য এক বা একাধিক factor, সচেতনভাবে বাছা replication-সংখ্যা, একটাই স্থির বীজ (np.random.default_rng(20260619)), একটা মাপা statistic, একটা তাত্ত্বিক prediction, আর শেষে সংখ্যা-বনাম-তত্ত্বের পাঠোদ্ধার

পরীক্ষা দাবি/তত্ত্ব মূল factor replication মূল statistic তাত্ত্বিক পূর্বানুমান মাপা ফল
৩.১ CLT-হার Berry–Esseen \(O(n^{-1/2})\) \(n\in\{5..320\}\) \(R=60000\) \(\sup_x\lvert F_n-\Phi\rvert\) log-log slope \(-0.5\) slope \(-0.4998\)
৩.২ Bootstrap coverage ৯৫% CI-র coverage \(n=40\) (স্থির) \(D{=}2000,B{=}1000\) empirical coverage \(\approx0.95\) (skew-এ সামান্য কম) \(0.9130\) (SE \(0.0063\))
৩.৩ Bias–variance U-আকৃতির test error degree \(d\in\{1..12\}\) \(R=500\) \(\text{Bias}^2,\text{Var},\text{Total}\) মাঝামাঝি \(d\)-তে ন্যূনতম optimal \(d{=}5\), min \(0.5784\)
৩.৪ MLE consistency + asymptotic normality \(n\in\{10..640\}\); \(n{=}200\) \(R{=}4000\); \(R{=}40000\) bias, RMSE; \(\text{KS}(S,N(0,1))\) RMSE slope \(-0.5\); \(S\sim N(0,1)\) slope \(-0.5570\); \(\text{KS}=0.0180\)

চারটিতেই একটা সাধারণ নকশা-বিচক্ষণতা ফিরে আসে — যে সংকেত মাপছ, তার আকারের তুলনায় Monte-Carlo ত্রুটি ছোট রাখা। ৩.১ ও ৩.৪(খ)-এ তাই \(R\) বিশাল (\(60000\), \(40000\)), কারণ K–S-অনুমানের নিজস্ব ত্রুটি \(\sim 1/\sqrt R\); ৩.২-এ coverage-অনুমানের সঙ্গে তার MC-SE রিপোর্ট করা হয় যাতে "\(0.91\) বনাম \(0.95\)" অর্থপূর্ণ কিনা বিচার করা যায়; ৩.৩-এ সব degree-তে একই noise (common random numbers) ব্যবহার করে \(d\)-জনিত সূক্ষ্ম পার্থক্যকে random noise থেকে আলাদা রাখা হয়। এই চারটি একসঙ্গে দেখায় কীভাবে Parts 0–VII-এর তত্ত্ব — CLT (← ৩.৪), MLE (← ৪.৩), bootstrap (← ৪.৯), bias–variance (← ৬.১) — সিমুলেশনে হুবহু পুনরুৎপাদিত হয়, আর এই পুনরুৎপাদনই একজন শিক্ষার্থীকে তত্ত্বের ভোক্তা থেকে পরীক্ষা-নকশাকার-এ রূপান্তরিত করে — যা Part VIII capstone-এর মূল লক্ষ্য।

এক বাক্যে — চারটি পরীক্ষা (CLT-হার, bootstrap-coverage, bias–variance, MLE) একই estimand→factor→replication→statistic→prediction→পাঠোদ্ধার কাঠামোয় চারটি ধ্রুপদী তত্ত্বকে সংখ্যায় পুনরুৎপাদন করে, আর সবেতেই একটাই নকশা-নীতি নিহিত: Monte-Carlo ত্রুটিকে মাপা-সংকেতের চেয়ে ছোট রাখা।


৪ · পদ্ধতি ও যুক্তি

এই অংশ অধ্যায়ের বৌদ্ধিক কেন্দ্র — চারটি পরীক্ষার (E1–E4) পেছনের experiment design (পরীক্ষা-নকশা)-এর যুক্তি। এখানে নতুন কোনো theorem প্রমাণ হয় না; বরং দেখানো হয় একটা Monte-Carlo simulation (মন্টি-কার্লো সিমুলেশন) কীভাবে নকশা করলে তার ফল বিশ্বাসযোগ্য হয় — কোন seed (বীজ) স্থির রাখতে হবে, কতগুলো replication (পুনরাবৃত্তি) লাগবে, কোন factor (নিয়ামক) একবারে বদলানো যাবে, আর ফলের সঙ্গে কোন অনিশ্চয়তা-মাপ (Monte-Carlo standard error) না-দিলে ফলটা অসম্পূর্ণ। মূল সুরটা একটাই: একটা সিমুলেশন-গবেষণা মানে এমন এক পরীক্ষা যা কোনো পরিচিত তাত্ত্বিক ফল পুনরুৎপাদন করে, আর সেই পুনরুৎপাদন একইসঙ্গে (i) তত্ত্বকে সংখ্যায় নিশ্চিত করে এবং (ii) সিমুলেশন-কোডকে verify করে।

সংকেত-স্মরণ: চারটি পরীক্ষা যথাক্রমে — E1 CLT-convergence-এর হার (Berry–Esseen), E2 bootstrap CI-এর coverage, E3 bias–variance tradeoff, এবং E4 MLE-এর consistency ও asymptotic normality। প্রতিটি পরীক্ষা np.random.default_rng(20260619) বীজে চলে, একটি ফলাফল-সারণি ছাপে, আর একটি তাত্ত্বিক পূর্বানুমান নিশ্চিত করে। নিচের প্রতিটি উপ-অংশ নকশার একটি করে নীতি ব্যাখ্যা করে।


৪.১ কেন seed স্থির রাখা হয় — reproducibility

যেকোনো Monte-Carlo ফল pseudo-random (ছদ্ম-random) সংখ্যার একটি নির্দিষ্ট ধারার ওপর দাঁড়িয়ে; সেই ধারা সম্পূর্ণভাবে নির্ধারণ করে একটিমাত্র পূর্ণসংখ্যা — seed। বীজ স্থির রাখলে (এখানে সর্বত্র np.random.default_rng(20260619)) একই কোড যেকোনো মেশিনে, যেকোনো সময়ে হুবহু একই সংখ্যা দেয় — এটাই reproducibility (পুনরুৎপাদনযোগ্যতা), যা ছাড়া কোনো সংখ্যাগত দাবি independently verify করা যায় না। এই অধ্যায়ের canonical মানগুলো (যেমন slope \(-0.4998\), coverage \(0.9130\)) ঠিক এই কারণেই নির্দিষ্ট সংখ্যা, "আনুমানিক" নয়।

একটি সূক্ষ্ম কিন্তু বাস্তব সতর্কতা: NumPy-র আধুনিক default_rng (PCG64 জেনারেটর) ব্যবহারে ফল কেবল বীজের ওপর নয়, draw-order-এর (সংখ্যা-টানার ক্রম) ওপরও নির্ভর করে। অর্থাৎ একই বীজ থেকে যদি সংখ্যাগুলো ভিন্ন ক্রমে বা ভিন্ন আকারের ব্লকে টানা হয় (যেমন লুপে এক-এক করে বনাম একবারে size=(R,n) অ্যারে), তবে প্রাপ্ত মানও ভিন্ন হতে পারে। তাই canonical সংখ্যা মেলাতে হলে কেবল বীজ নয়, টানার ক্রম ও আকারও কোডের সঙ্গে অভিন্ন রাখতে হয়। এজন্য প্রতিটি পরীক্ষায় একটিমাত্র rng অবজেক্ট তৈরি করে ধারাবাহিকভাবে ব্যবহার করা হয়, মাঝপথে পুনরায় বীজ দেওয়া হয় না।

এক বাক্যে: বীজ default_rng(20260619) স্থির রাখা মানে ফলের পুনরুৎপাদনযোগ্যতা নিশ্চিত করা, তবে মিল পেতে বীজের পাশাপাশি সংখ্যা-টানার ক্রম ও আকারও অভিন্ন রাখতে হয় (draw-order dependence)।


৪.২ কতগুলো replication — Monte-Carlo standard error দিয়ে নির্ধারণ

একটা সিমুলেশন যতগুলো replication \(R\)-এ চলে, তার ফল ততই নিখুঁত — কিন্তু কতটা? এর উত্তর দেয় Monte-Carlo standard error (MC SE): সিমুলেশন-অনুমানটির নিজস্ব random ওঠানামা। ধরা যাক আগ্রহের রাশি একটি গড়\(R\)টি independent replication থেকে \(\hat\theta=\frac1R\sum_{r=1}^R g_r\)। যেহেতু \(g_r\)-গুলো iid (একই বীজ-ধারা থেকে independent টান), নমুনা-গড়ের standard error-এর সূত্র সরাসরি দেয়

\[ \operatorname{MC\,SE}(\hat\theta)\ \approx\ \frac{s}{\sqrt{R}},\qquad s^2=\frac{1}{R-1}\sum_{r=1}^R\bigl(g_r-\hat\theta\bigr)^2, \]

যেখানে \(s\) হলো replication-গুলোর নমুনা-আদর্শ deviation (← 3.4)। আগ্রহের রাশি যদি একটি অনুপাত হয় (যেমন coverage — কতভাগ CI সত্য মান ঢাকল), তবে প্রতিটি replication একটি Bernoulli ফল, তাই

\[ \operatorname{MC\,SE}(\hat p)\ \approx\ \sqrt{\frac{\hat p\,(1-\hat p)}{R}}. \]

E2-তে ঠিক এই সূত্র প্রযোজ্য: coverage \(\hat p=0.9130\), replication-সংখ্যা \(D=2000\), তাই

\[ \operatorname{MC\,SE}=\sqrt{\frac{0.9130\times0.0870}{2000}}\ =\ 0.0063, \]

যা §৩-এর canonical মানের সঙ্গে হুবহু মেলে।

এই সূত্রের একটি সিদ্ধান্তমূলক ফল: MC SE কমে \(1/\sqrt{R}\) হারে, তাই MC SE অর্ধেক করতে হলে \(R\) চারগুণ করতে হয়। অর্থাৎ নির্ভুলতা ব্যয়বহুল — একটা দশমিক ঘর বাড়াতে replication প্রায় শতগুণ লাগে। তাই \(R\) বাছা হয় লক্ষ্য MC SE থেকে পিছিয়ে হিসাব করে: প্রয়োজনীয় নির্ভুলতা স্থির করে \(R\gtrsim \bigl(s/\text{target MC SE}\bigr)^2\) (গড়) বা \(R\gtrsim \hat p(1-\hat p)/(\text{target MC SE})^2\) (অনুপাত) বসিয়ে।

E1-এ কেন \(R=60000\) — একটি সূক্ষ্ম নকশা-সীমা। E1-তে প্রতিটি \(n\)-এ replication-সংখ্যা \(R=60000\), যা E2-এর \(D=2000\)-এর তুলনায় অনেক বড় — এবং এটি কাকতালীয় নয়। এখানে মাপা রাশি হলো Kolmogorov–Smirnov distance \(D_n=\sup_x\lvert F_n(x)-\Phi(x)\rvert\), যেখানে \(F_n\) হলো \(R\)টি মানক নমুনা-গড়ের empirical CDF। এই KS-অনুমানের নিজস্ব নমুনা-কোলাহল (sampling noise) হ্রাস পায় \(\sim 1/\sqrt{R}\) হারে, আর মাপতে-চাওয়া প্রকৃত সংকেত — Berry–Esseen-ঘোষিত সত্য KS — হ্রাস পায় \(\sim 1/\sqrt{n}\) হারে। সবচেয়ে বড় \(n=320\)-তে সত্য সংকেত সবচেয়ে ছোট (\(D_n\approx0.0071\)); সেই ক্ষীণ সংকেতকে কোলাহলের নিচে হারিয়ে না-ফেলতে হলে অনুমানের কোলাহল \(1/\sqrt{R}\)-কে সংকেত \(1/\sqrt{n}\)-এর যথেষ্ট নিচে রাখতে হয়। এজন্যই \(R\) বড় \(n\)-এর তুলনায় অনেক বড় নিতে হয় — নয়তো log-log slope-এর অনুমান কোলাহলে দুলে \(-0.5\) থেকে সরে যেত। তাই \(R=60000\) একটি সচেতন নকশা-সিদ্ধান্ত, খামখেয়াল নয়।

এক বাক্যে: replication-সংখ্যা \(R\) ঠিক হয় লক্ষ্য MC SE থেকে (\(\text{MC SE}\approx s/\sqrt R\) গড়ে, \(\sqrt{p(1-p)/R}\) অনুপাতে; অর্ধেক করতে \(R\) চারগুণ), আর E1-এ \(R=60000\) কারণ KS-অনুমানের কোলাহল \(1/\sqrt R\)-কে বৃহত্তম \(n\)-এর Berry–Esseen সংকেত \(1/\sqrt n\)-এর নিচে রাখতে হয়।


৪.৩ ফলের সঙ্গে Monte-Carlo standard error জানানো

একটি Monte-Carlo সংখ্যা তার MC SE ছাড়া অসম্পূর্ণ — কারণ পাঠক তখন জানে না ফলটি কতটা নির্ভরযোগ্য, বা দুটি ফলের পার্থক্য প্রকৃত না নিছক সিমুলেশন-কোলাহল। উদাহরণে E2-এর coverage সঠিকভাবে লেখা হয় "\(0.9130\)" নয়, বরং "\(0.9130\) (MC SE \(0.0063\))" রূপে। এই MC SE-ই বলে দেয় ৯৫% নামমাত্র মানের (\(0.95\)) সঙ্গে পর্যবেক্ষিত \(0.9130\)-এর পার্থক্য অর্থপূর্ণ কি না: পার্থক্য \(0.95-0.9130=0.0370\) হলো MC SE-এর প্রায় ছয়গুণ, তাই under-coverage-টি বাস্তব প্রভাব, সিমুলেশন-দুর্ঘটনা নয়।

একই যুক্তিতে E1-এর slope \(-0.4998\) বা E4-এর slope \(-0.5570\)-কে "\(-0.5\)-এর সমান বা ভিন্ন" বলার আগে সেই অনুমানগুলোর নিজস্ব অনিশ্চয়তা মাথায় রাখা দরকার — একটা log-log linear ফিটের slope-এরও একটি standard error আছে (regression-এর slope SE, ← 5.2)। নীতিটি সর্বজনীন: প্রতিটি সিমুলেশন-সংখ্যা একটি অনুমান, আর প্রতিটি অনুমানের সঙ্গে তার অনিশ্চয়তা জানানো বৈজ্ঞানিক সততার শর্ত।

এক বাক্যে: MC SE ছাড়া সিমুলেশন-ফল অসম্পূর্ণ — এটিই ঠিক করে দেয় coverage \(0.9130\)-এর নামমাত্র \(0.95\) থেকে deviation অর্থপূর্ণ (প্রায় ছয় MC SE) নাকি নিছক কোলাহল।


৪.৪ একবারে একটিমাত্র factor বদলানো — common random numbers

একটি পরিষ্কার পরীক্ষার প্রথম শর্ত: ফলের পার্থক্য যেন একটিমাত্র কারণে দায়ী করা যায়। তাই সিমুলেশনে একবারে একটিমাত্র factor পরিবর্তন করা হয়, বাকি সব স্থির রেখে।

  • E1 ও E4-তে একমাত্র পরিবর্তনশীল factor হলো নমুনা-আকার \(n\) (E1-এ \(n\in\{5,10,20,40,80,160,320\}\), E4-এ \(n\in\{10,40,160,640\}\))। অন্য সব — ভিত্তি-distribution, replication-সংখ্যা, বীজ — অপরিবর্তিত; তাই KS বা RMSE-এর পরিবর্তন সম্পূর্ণভাবে \(n\)-এর ফল, আর log-log slope সরাসরি convergence rate পরিমাপ করে।
  • E3-তে পরিবর্তনশীল factor হলো polynomial regression-এর degree \(d\in\{1,\dots,12\}\)। এখানে একটি সূক্ষ্ম কৌশল ব্যবহৃত: একই noise realisation প্রতিটি degree-এ পুনর্ব্যবহার করা হয় (SAME noise across degrees)। অর্থাৎ একই \(R=500\)টি প্রশিক্ষণ-সেটের random ত্রুটি সব degree-এ অভিন্ন রাখা হয়, কেবল fit-করা বহুপদীর degree বদলায়। ফলে দুটি degree-এর মধ্যে total error-এর পার্থক্য কেবল degree-এর ফল — একই random ওঠানামা দুই পাশে থাকায় তা বিয়োগে কাটাকাটি যায়।

এই কৌশলটির নাম common random numbers (CRN, সাধারণ random সংখ্যা), যা একটি variance reduction (ভেদ-হ্রাস) কৌশল: তুলনীয় শর্তগুলোতে একই random ইনপুট ব্যবহার করলে তুলনার (পার্থক্যের) ভেদ কমে, কারণ সাধারণ কোলাহল উভয় পক্ষে ধনাত্মকভাবে সহ-সম্পর্কিত হয়ে বিয়োগে মুছে যায়। E3-এর U-আকৃতির bias–variance বক্ররেখাটি এতে অনেক মসৃণ ও তুলনাযোগ্য হয়।

এক বাক্যে: পরিষ্কার কার্যকারণের জন্য একবারে একটিমাত্র factor বদলানো হয় (E1/E4-এ \(n\), E3-এ degree), আর E3-এ প্রতিটি degree-এ একই noise পুনর্ব্যবহার (common random numbers) পার্থক্যকে কেবল degree-এর ফল করে তোলে — একটি variance-reduction কৌশল।


৪.৫ factorial design ও variance reduction — সাধারণ নীতি

উপরের নকশা-ভাবনাগুলো সিমুলেশন-গবেষণার দুটি প্রতিষ্ঠিত নীতির বিশেষ রূপ।

Factorial design (গুণক-নকশা)। যখন একাধিক factor একসঙ্গে প্রভাব ফেলে, তখন প্রতিটি factor-এর সব স্তরের সব সমন্বয় পরীক্ষা করলে কেবল মূল-প্রভাব (main effect) নয়, তাদের interaction (পারস্পরিক ক্রিয়া)-ও ধরা যায়। এই অধ্যায়ের পরীক্ষাগুলো ইচ্ছাকৃতভাবে এক-factor (one-factor-at-a-time) নকশায় সীমাবদ্ধ — E1/E4-এ কেবল \(n\), E3-এ কেবল degree — কারণ প্রতিটির লক্ষ্য একটি করে নির্দিষ্ট তাত্ত্বিক হার বা বক্ররেখা বিচ্ছিন্নভাবে পরিমাপ করা; পূর্ণ factorial নকশা এখানে অপ্রয়োজনীয় জটিলতা যোগ করত।

Variance reduction (ভেদ-হ্রাস)। একই MC SE কম replication-এ পেতে বেশ কিছু কৌশল আছে; দুটি প্রধান —

  • Common random numbers (§৪.৪): তুলনীয় শর্তে একই random ইনপুট; E3 এটি ব্যবহার করে degree-গুলোর তুলনা তীক্ষ্ণ করতে।
  • Antithetic variates (প্রতিমুখী রাশি): প্রতিটি random টান \(U\)-এর পাশাপাশি তার "আয়না" \(1-U\) (বা \(-Z\)) ব্যবহার করে ঋণাত্মক সহ-সম্পর্ক তৈরি করা, যাতে গড়ের ভেদ কমে। এই অধ্যায়ের চারটি পরীক্ষার কোনোটিই antithetic variates ব্যবহার করে না (প্রতিটিতে independent টানই যথেষ্ট), তবে নীতিটি সাধারণ ভেদ-হ্রাস-কৌশল হিসেবে জানা থাকা দরকার।

সংক্ষেপে: E1, E2, E4 independent replication-এর সরল নকশায় চলে; কেবল E3 common-random-numbers-জাত variance reduction ব্যবহার করে, আর কোনো পরীক্ষাই পূর্ণ factorial নকশা বা antithetic variates-এ যায় না — কারণ প্রতিটির উদ্দেশ্য একটিমাত্র হার/বক্ররেখা পরিষ্কারভাবে দেখানো।

এক বাক্যে: সাধারণ নীতি হিসেবে factorial design একাধিক factor-এর interaction ধরে আর variance reduction (common random numbers, antithetic variates) কম replication-এ একই নির্ভুলতা দেয়; এই অধ্যায়ে কেবল E3 common random numbers ব্যবহার করে, বাকিরা সরল independent-replication নকশায়।


৪.৬ তত্ত্ব-verification-কে কোড-verify হিসেবে ব্যবহার

একটি সিমুলেশন-গবেষণার গভীরতম উদ্দেশ্য দ্বৈত। একটি পরিচিত তাত্ত্বিক ফল পুনরুৎপাদন করলে একই কাজ দুটি জিনিস প্রমাণ করে: (i) তত্ত্বটি সংখ্যায় সত্য — যেমন E1-এ log-log slope \(-0.4998\) Berry–Esseen-এর তাত্ত্বিক \(-0.5\)-এর সঙ্গে মেলা নিশ্চিত করে CLT-convergence প্রকৃতই \(1/\sqrt n\) হারে; এবং (ii) সিমুলেশন-pipeline (কোড, sampling, পরিসংখ্যান-গণনা) ঠিকঠাক কাজ করছে।

এই দ্বিতীয় দিকটিই সবচেয়ে ব্যবহারিক। ধরা যাক E1-এর slope \(-0.5\)-এর কাছে না-এসে, ধরুন, \(-0.25\) বা \(0\) বেরোত। তত্ত্ব (Berry–Esseen) সুপ্রতিষ্ঠিত ও প্রমাণিত (← Part VII); তাই inconsistency-এর সবচেয়ে সম্ভাব্য কারণ তত্ত্বের ভুল নয়, কোডের বাগ — হয়তো মানক-করণে \(\sqrt n\) ভুল জায়গায়, বা KS-গণনায় ভুল রেফারেন্স-distribution, বা draw-order-জনিত সংখ্যা-দূষণ। এভাবে একটি জানা উত্তরের বিপরীতে কোড চালানো একটি built-in verification (built-in sanity check): মিল পেলে pipeline-এ আস্থা বাড়ে, না-মিললে বাগ-সন্ধান শুরু হয় কোড থেকে, তত্ত্ব থেকে নয়।

ঠিক এ কারণেই capstone-এর পরীক্ষাগুলো ইচ্ছাকৃতভাবে পরিচিত ফল (CLT-হার, ৯৫% coverage-এর কাছাকাছি, U-আকৃতি bias–variance, MLE-এর \(1/\sqrt n\) RMSE) বেছে নেয় — অজানা কিছু আবিষ্কারের জন্য নয়, বরং তত্ত্ব ও কোড উভয়কে একসঙ্গে verify করে তবেই কোনো নতুন প্রশ্নে সেই verified সরঞ্জাম প্রয়োগের যোগ্যতা অর্জনের জন্য। এটিই একজন শিক্ষার্থীকে theorem-এর ভোক্তা থেকে পরীক্ষার নকশাকার-এ রূপান্তরিত করে (→ 8.3)।

এক বাক্যে: একটা জানা ফল পুনরুৎপাদন একই সঙ্গে তত্ত্বকে সংখ্যায় নিশ্চিত করে ও সিমুলেশন-pipeline verify করে — E1-এর slope \(-0.5\) না-এলে সন্দেহটা প্রথমে কোডের বাগে, CLT-তে নয়।


৫ · কোড ল্যাব (Python)

এই অধ্যায়ের কেন্দ্রীয় ধারণা — simulation study (সিমুলেশন-অধ্যয়ন): এমন Monte-Carlo experiment (মন্টি-কার্লো পরীক্ষা) নকশা করা যা একটা পরিচিত তাত্ত্বিক ফলকে সংখ্যায় পুনরুৎপাদন (reproduce) করে — যাতে তত্ত্ব ও pipeline দুই-ই বিশ্বাসের আগে verify হয়। গোটা ল্যাবটা একটাই runnable স্ক্রিপ্ট — part-8-capstone/_code/lab_8-2.py — চারটে স্বতন্ত্র পরীক্ষায় ভাগ করা, প্রতিটি একটি করে জানা ফলকে ফিরিয়ে আনে: (E1) CLT-convergence-এর হার — Berry–Esseen bound বলে standardized গড়ের KS-দূরত্ব \(\sim C/\sqrt n\), তাই log-log slope হওয়া উচিত \(\approx-0.5\); (E2) bootstrap CI-এর coverage — nominal \(95\%\) percentile-bootstrap CI-এর empirical coverage তত্ত্ব-মতে \(\approx0.95\); (E3) bias–variance tradeoff — polynomial degree বাড়ালে total test error একটা U-আকৃতির বক্ররেখা, ভেতরে optimal degree; (E4) MLE consistency ও asymptotic normality\(\text{Exp}(\lambda)\)-এর MLE \(\widehat\lambda=1/\bar X\)-এর RMSE \(\sim1/\sqrt n\), আর standardized ভুল \(\to N(0,1)\)। নির্ভরতা শুধু numpyscipy, বাড়তি কোনো library নয়।

স্ক্রিপ্টের কাঠামো ও পুনরুৎপাদনযোগ্যতা (reproducibility)

সব random draw একটিমাত্র generator থেকে আসে — np.random.default_rng(20260619) — কিন্তু প্রতিটি পরীক্ষা শুরুতে সেই একই seed-এ reset করা হয়। তাই চারটি block independently পুনরুৎপাদনযোগ্য ও পরস্পরের ক্রমের উপর নির্ভরশীল নয়: E2 আগে না E3 আগে চালানো হলো তাতে কোনো block-এর সংখ্যা বদলায় না (একটি block-এর ভেতরে অবশ্য draw-ক্রম স্থির)। বিশেষত E3-এ প্রতিটি degree-এর আগে generator-টা আবার একই seed-এ reset হয়, যাতে সব degree হুবহু একই noise realisation দেখে — ফলে degree-ই একমাত্র পরিবর্তনশীল factor হিসেবে বিচ্ছিন্ন থাকে। নিচের set-up লাইনগুলো গোটা স্ক্রিপ্টে একবারই চলে, আর প্রতিটি পরীক্ষা নিজের ভেতরে rng = np.random.default_rng(SEED) দিয়ে শুরু করে—

import numpy as np
from scipy import stats

np.set_printoptions(precision=4, suppress=True)

SEED = 20260619

প্রতিটি block এই একই SEED-এ ফিরে যায়, তাই নিচের সব সংখ্যা — চারটি পরীক্ষার প্রতিটির — হুবহু পুনরুৎপাদনযোগ্য।

৫.১ · E1 — CLT-convergence-এর হার (Berry–Esseen)

প্রথম পরীক্ষা CLT-এর statement নয়, হার মাপে। নাও iid \(X_i\sim\text{Exp}(1)\) (গড় \(1\), ভেদ \(1\), কিন্তু skewness \(2\) — তীব্র ডান-বঙ্কিম); standardized গড় \(Z_n=\sqrt n\,(\bar X_n-1)\)। প্রতিটি sample-আকার \(n\in\{5,10,20,40,80,160,320\}\)-এ \(R=60000\) independent কপি \(Z_n\) থেকে \(N(0,1)\)-CDF-এর Kolmogorov–Smirnov (KS) দূরত্ব \(\sup_x\lvert F_R(x)-\Phi(x)\rvert\) মাপা হয়। Berry–Esseen bound বলে \(\sup_x\lvert F-\Phi\rvert\le C\rho/(\sigma^3\sqrt n)\), অর্থাৎ \(\sim n^{-1/2}\); তাই \(\log(\text{KS})\)-এর ওপর \(\log n\)-এর linear fit-এর slope হওয়া উচিত \(\approx-0.5\)

ns_clt = np.array([5, 10, 20, 40, 80, 160, 320])
R1 = 60_000                                 # replications of Z_n per n
ks_vals = np.empty(len(ns_clt))

for j, n in enumerate(ns_clt):
    x = rng.standard_exponential(size=(R1, n))      # Exp(rate 1)
    Z = np.sqrt(n) * (x.mean(axis=1) - 1.0)         # standardized mean
    ks_vals[j] = stats.kstest(Z, "norm").statistic  # sup|F_R - Phi|

# log-log least-squares fit: log(KS) = a + b log(n); Berry-Esseen => b ~ -0.5
slope, intercept = np.polyfit(np.log(ns_clt.astype(float)), np.log(ks_vals), 1)
EXPERIMENT 1 -- CLT convergence rate (Berry-Esseen, KS ~ C/sqrt(n))
  base = Exp(1) (skewness 2);  Z_n = sqrt(n)(Xbar_n - 1);  R = 60000 reps/n
      n |   KS dist | C/sqrt(n) fit
  ----------------------------------
      5 |    0.0590 |        0.0593
     10 |    0.0417 |        0.0419
     20 |    0.0285 |        0.0297
     40 |    0.0225 |        0.0210
     80 |    0.0148 |        0.0148
    160 |    0.0108 |        0.0105
    320 |    0.0071 |        0.0074
  log-log fit:  slope = -0.4998   (Berry-Esseen predicts -0.5)
                C = e^intercept = 0.1326

পাঠোদ্ধার (read-off)।

  • slope ঠিক \(-\tfrac12\)-এ। log-log fit-এর slope \(\mathbf{-0.4998}\) — Berry–Esseen-এর ভবিষ্যদ্বাণী \(-0.5\)-এর কার্যত অভিন্ন। অর্থাৎ KS-দূরত্ব sample-আকারের সাথে ঠিক \(n^{-1/2}\)-হারে নামে: \(n\) চারগুণ করলে দূরত্ব প্রায় অর্ধেক (\(0.0590\) থেকে \(n=20\)-এ \(0.0285\), তারপর \(n=80\)-এ \(0.0148\))।
  • fit-করা \(C/\sqrt n\) প্রতিটি \(n\)-এ মাপা KS-কে মেলায়। ডানের কলামে \(C/\sqrt n\) (যেখানে \(C=e^{\text{intercept}}=\mathbf{0.1326}\)) মাপা KS-দূরত্বের প্রায় সমান — অর্থাৎ পুরো টেবিলটা একটাই power-law \(0.1326\,n^{-1/2}\)-এর ওপর বসে। এই মিলই দেখায় Berry–Esseen-এর \(1/\sqrt n\) হার শুধু ওপরের সীমা নয়, এখানে সত্যিকারের হার
  • base তীব্র-বঙ্কিম বলেই হারটা মাপা গেল। skewness \(2\)-এর Exp(1) বেছে নেওয়ায় KS-সংকেত (\(\sim1/\sqrt n\)) বড় থাকে, আর \(R=60000\) rep-এর নিজস্ব Monte-Carlo গোলমাল (\(\sim1/\sqrt R\)) সবচেয়ে বড় \(n=320\)-তেও তার নিচে থাকে — তাই slope বিশ্বাসযোগ্যভাবে \(-0.5\)-এ থিতু হয়।

এক বাক্যে। standardized বঙ্কিম গড়ের \(N(0,1)\)-থেকে KS-দূরত্ব \(n^{-1/2}\)-হারে নামে (slope \(-0.4998\approx-0.5\)), যা Berry–Esseen-এর হারকে সংখ্যায় পুনরুৎপাদন করে।

৫.২ · E2 — bootstrap CI-এর coverage (nominal ৯৫%)

দ্বিতীয় পরীক্ষা একটা inference-পদ্ধতির নির্ভুলতা verify করে। সত্য মডেল \(X\sim\text{Exp}(1)\), তাই population গড় \(\theta=1\)\(D=2000\)টি dataset (প্রতিটি \(n=40\)) থেকে প্রতিটির জন্য গড়ের একটা \(95\%\) percentile bootstrap CI (\(B=1000\) resample থেকে) গড়া হয়, তারপর জিজ্ঞাসা — \(\theta=1\) কি সেই CI-এর ভেতরে? যত ভগ্নাংশ dataset-এর CI সত্যকে ঢাকে, সেটাই empirical coverage; bootstrap-consistency তত্ত্ব বলে তা \(\approx0.95\) হওয়া উচিত (skewed data-য় মাঝারি \(n\)-এ সাধারণত সামান্য কম)। নিজের অনিশ্চয়তা মাপতে Monte-Carlo standard error \(\sqrt{p(1-p)/D}\) ছাপা হয়।

n2 = 40; D = 2000; B = 1000; theta_true = 1.0
covered = np.zeros(D, dtype=bool); widths = np.empty(D)
for d in range(D):
    data = rng.standard_exponential(size=n2)             # one Exp(1) dataset
    idx = rng.integers(0, n2, size=(B, n2))              # B bootstrap resamples
    boot_means = data[idx].mean(axis=1)                  # bootstrap dist of mean
    lo, hi = np.percentile(boot_means, [2.5, 97.5])      # 95% percentile CI
    covered[d] = (lo <= theta_true <= hi); widths[d] = hi - lo

coverage = covered.mean()
mc_se = np.sqrt(coverage * (1 - coverage) / D)           # MC std error of coverage
EXPERIMENT 2 -- bootstrap CI coverage (nominal 95%)
  base = Exp(1), true mean = 1;  n = 40,  D = 2000 datasets,  B = 1000 resamples
  statistic = sample mean;  method = percentile bootstrap
  empirical coverage = 0.9130   (nominal 0.95)
  Monte-Carlo SE     = 0.0063
  mean CI width      = 0.5869

পাঠোদ্ধার (read-off)।

  • empirical coverage \(\approx0.91\), nominal-এর সামান্য নিচে। মাপা coverage \(\mathbf{0.9130}\) — লক্ষ্য \(0.95\)-এর কাছাকাছি কিন্তু একটু কম। কারণটা তত্ত্বসম্মত: Exp(1) ডান-বঙ্কিম, আর \(n=40\) মাঝারি — percentile bootstrap এই পরিস্থিতিতে একটু under-cover করে (skew-এর জন্য bias-সংশোধন ছাড়া percentile CI তুলনামূলক অসামঞ্জস্যপূর্ণ)।
  • Monte-Carlo SE বলছে ব্যবধানটা বাস্তব, দুর্ঘটনা নয়। MC standard error মাত্র \(\mathbf{0.0063}\), তাই \(0.9130\)\(0.95\)-এর মধ্যে \(0.037\)-এর ফাঁক \(\approx6\) standard error — অর্থাৎ under-coverage-টা সিমুলেশন-গোলমাল নয়, পদ্ধতির প্রকৃত ধর্ম। \(D=2000\) dataset ঠিক এই আত্মবিশ্বাসটুকু দেয়।
  • CI-প্রস্থ যুক্তিসঙ্গত। গড় CI-প্রস্থ \(\mathbf{0.5869}\)\(n=40\)-এ গড়ের standard error \(\approx\sigma/\sqrt n=1/\sqrt{40}\approx0.158\)-এর প্রায় \(3.7\) গুণ, যা \(\approx\pm1.96\) SE দুই-পাশের একটা normal-সদৃশ \(95\%\) CI-প্রস্থের (\(\approx0.62\)) কাছাকাছি — অর্থাৎ bootstrap CI বাস্তবসম্মত পরিসরই দিচ্ছে।

এক বাক্যে। \(95\%\) percentile-bootstrap CI-এর empirical coverage \(0.9130\) (MC-SE \(0.0063\)) nominal \(0.95\)-এর সামান্য নিচে — bootstrap-consistency-র ভবিষ্যদ্বাণী এবং skewed data-য় মাঝারি \(n\)-এর expected under-coverage দুই-ই সংখ্যায় ধরা পড়ে।

৫.৩ · E3 — bias–variance tradeoff (polynomial regression)

তৃতীয় পরীক্ষা learning theory-র কেন্দ্রীয় সমঝোতা পুনরুৎপাদন করে। স্থির মসৃণ signal \(f(x)=\sin(1.5x)+0.5x\) on \([-3,3]\); পর্যবেক্ষণ \(y=f(x)+N(0,\sigma^2)\), \(\sigma=0.7\) (তাই \(\sigma^2=0.4900\))। \(d=1,\dots,12\) degree-এর polynomial regression \(R=500\) independent training set-এ (\(n_{\text{train}}=30\), স্থির design) fit করে, dense test-grid-এ প্রতিটি বিন্দুতে Monte-Carlo \(\text{Bias}^2=(\overline{\widehat f}-f)^2\)\(\text{Var}=\operatorname{var}(\widehat f)\) মাপা হয়। grid-জুড়ে গড় করে total test error \((d)\approx\text{Bias}^2(d)+\text{Var}(d)+\sigma^2\)। নিম্ন \(d\) underfit করে (উচ্চ bias), উচ্চ \(d\) overfit করে (উচ্চ variance); ন্যূনতম total error একটা ভেতরের optimal degree-এ বসে।

sigma = 0.7; degrees = np.arange(1, 13); n_train = 30; R3 = 500
x_train = np.linspace(-3, 3, n_train)        # FIXED design
x_test = np.linspace(-3, 3, 200)
f_train, f_test = signal(x_train), signal(x_test)

for k, d in enumerate(degrees):
    rng_d = np.random.default_rng(SEED)      # identical noise across degrees
    Vd, Vt = np.vander(x_train, d + 1), np.vander(x_test, d + 1)
    preds = np.empty((R3, len(x_test)))
    for r in range(R3):
        y = f_train + sigma * rng_d.standard_normal(n_train)
        coef, *_ = np.linalg.lstsq(Vd, y, rcond=None)
        preds[r] = Vt @ coef
    bias2[k] = np.mean((preds.mean(axis=0) - f_test) ** 2)   # avg over grid
    variance[k] = np.mean(preds.var(axis=0))
    total_err[k] = bias2[k] + variance[k] + sigma ** 2       # expected test MSE
EXPERIMENT 3 -- bias-variance tradeoff (polynomial regression)
  signal = sin(1.5x)+0.5x, noise sd = 0.7;  R = 500 train sets,  n_train = 30
   deg |   Bias^2 |      Var |    Total
  --------------------------------------
     1 |   0.4812 |   0.0305 |   1.0016
     2 |   0.4812 |   0.0450 |   1.0162
     3 |   0.0741 |   0.0598 |   0.6239
     4 |   0.0742 |   0.0737 |   0.6378
     5 |   0.0020 |   0.0865 |   0.5784  <- min
     6 |   0.0019 |   0.1001 |   0.5920
     7 |   0.0002 |   0.1131 |   0.6033
     8 |   0.0004 |   0.1288 |   0.6192
     9 |   0.0004 |   0.1455 |   0.6359
    10 |   0.0004 |   0.1641 |   0.6545
    11 |   0.0004 |   0.1826 |   0.6731
    12 |   0.0006 |   0.2041 |   0.6947
  irreducible noise sigma^2 = 0.4900
  optimal degree = 5   (min total test error = 0.5784)

পাঠোদ্ধার (read-off)।

  • \(\text{Bias}^2\) ধাপে-ধাপে নামে, signal-এর গঠন মেনে। \(d=1,2\)-এ \(\text{Bias}^2\approx\mathbf{0.4812}\) (বড় — সরলরেখা \(\sin\)-কে ধরতে পারে না), তারপর \(d{=}3\)-এ হঠাৎ \(\mathbf{0.0741}\)-এ নামে (\(\sin\)-এর জন্য বিজোড় পদ লাগে), আবার \(d{=}5\)-এ \(\mathbf{0.0020}\)-এ — কারণ \(\sin(1.5x)\)-এর Taylor expansion-এ \(x^3,x^5\) পদ প্রধান। degree signal-এর প্রকৃত জটিলতায় পৌঁছালেই bias কার্যত মুছে যায়।
  • Variance monotonically বাড়ে। \(\text{Var}\) \(d{=}1\)-এ \(\mathbf{0.0305}\) থেকে \(d{=}12\)-এ \(\mathbf{0.2041}\) পর্যন্ত ক্রমাগত চড়ে — প্রতিটি বাড়তি parameter একই \(n_{\text{train}}=30\) data-কে আরও শক্ত করে fit করে, তাই noise-এর প্রতি সংবেদনশীলতা বাড়ে। এটাই overfitting-এর সংখ্যিক স্বাক্ষর।
  • Total error U-আকৃতির, ন্যূনতম \(d=5\)-এ। \(\text{Bias}^2+\text{Var}+\sigma^2\) প্রথমে নামে (bias-পতন প্রধান), তারপর ওঠে (variance-বৃদ্ধি প্রধান), সর্বনিম্ন \(\mathbf{0.5784}\) degree ৫-এ। irreducible \(\sigma^2=\mathbf{0.4900}\) একটা মেঝে — কোনো model তার নিচে যেতে পারে না, তাই সেরা total error \(0.5784\) সেই মেঝের ঠিক ওপরে (অবশিষ্ট \(\approx0.088\) bias+variance)।

এক বাক্যে। polynomial degree বাড়ালে \(\text{Bias}^2\) নামে ও \(\text{Var}\) ওঠে, তাই total test error U-আকৃতিতে degree ৫-এ (মান \(0.5784\), irreducible \(\sigma^2=0.4900\)-এর ঠিক ওপরে) সর্বনিম্ন — bias–variance decomposition-এর হুবহু চিত্র।

৫.৪ · E4 — MLE-এর consistency ও asymptotic normality

চতুর্থ পরীক্ষা estimation-তত্ত্বের দুই স্তম্ভ verify করে। মডেল \(X\sim\text{Exponential}(\text{rate }\lambda=2)\); MLE \(\widehat\lambda=1/\bar X\)। Fisher information \(I(\lambda)=1/\lambda^2\), তাই asymptotic ভেদ \(1/I(\lambda)=\lambda^2\), অর্থাৎ asymptotic sd \(=\lambda=2\)। দুই অংশ: (ক) consistency\(n\in\{10,40,160,640\}\) (\(R=4000\))-এ \(\widehat\lambda\)-এর empirical bias ও RMSE ছাপা হয়; RMSE-এর \(n^{-1/2}\)-হারে নামা উচিত। (খ) asymptotic normality\(n=200\) (\(R=40000\))-এ standardized statistic \(S=\sqrt n\,(\widehat\lambda-\lambda)/\lambda\) গড়া হয় ও \(N(0,1)\)-এর বিরুদ্ধে KS-test করা হয়; §৬-এ এর histogram।

lam_true = 2.0; ns_mle = np.array([10, 40, 160, 640]); R4 = 4000
for j, n in enumerate(ns_mle):
    x = rng.exponential(scale=1.0 / lam_true, size=(R4, n))  # Exp(rate 2)
    lam_hat = 1.0 / x.mean(axis=1)                           # MLE = 1/Xbar
    bias_mle[j] = lam_hat.mean() - lam_true
    rmse_mle[j] = np.sqrt(np.mean((lam_hat - lam_true) ** 2))
sl_rmse, ic_rmse = np.polyfit(np.log(ns_mle.astype(float)), np.log(rmse_mle), 1)

# asymptotic normality at n = 200
x = rng.exponential(scale=1.0 / lam_true, size=(40000, 200))
lam_hat_an = 1.0 / x.mean(axis=1)
S = np.sqrt(200) * (lam_hat_an - lam_true) / lam_true        # -> N(0,1)
ks_an = stats.kstest(S, "norm").statistic
EXPERIMENT 4 -- MLE consistency & asymptotic normality
  model = Exp(rate lambda=2.0); MLE lambda_hat = 1/Xbar;  I(lambda)=1/lambda^2
  (a) consistency:  R = 4000 reps/n
      n |      bias |      RMSE |  C/sqrt(n)
  ----------------------------------------
     10 |   +0.2182 |    0.7965 |     0.8795
     40 |   +0.0484 |    0.3404 |     0.4397
    160 |   +0.0114 |    0.1639 |     0.2199
    640 |   +0.0028 |    0.0775 |     0.1099
  RMSE log-log slope = -0.5570   (consistency predicts -0.5)
  (b) asymptotic normality at n = 200  (R = 40000):
      asymptotic sd = lambda = 2.0000  (from 1/I(lambda) = lambda^2)
      standardized S = sqrt(n)(lam_hat-lambda)/lambda:  mean = +0.0663, sd = 1.0091
      KS(S, N(0,1)) = 0.0180   (small => Normal limit holds)

পাঠোদ্ধার (read-off)।

  • RMSE \(n^{-1/2}\)-হারে নামে — consistency দৃশ্যমান। RMSE \(n{=}10\)-এ \(\mathbf{0.7965}\) থেকে \(n{=}640\)-তে \(\mathbf{0.0775}\)-এ নামে; \(n\) চারগুণ করলে RMSE প্রায় অর্ধেক (\(0.7965\to0.3404\to0.1639\to0.0775\))। log-log slope \(\mathbf{-0.5570}\) — তত্ত্বের \(-0.5\)-এর কাছে (ছোট \(n\)-এ bias-এর অবদান slope-কে সামান্য খাড়া করে)। \(\widehat\lambda\xrightarrow{p}\lambda\) — অর্থাৎ estimator consistent
  • bias ধনাত্মক কিন্তু \(\to0\) bias \(n{=}10\)-এ \(\mathbf{+0.2182}\) থেকে \(n{=}640\)-তে \(\mathbf{+0.0028}\)-এ নামে — সবসময় ধনাত্মক, কারণ \(\widehat\lambda=1/\bar X\) একটা convex রূপান্তর, তাই Jensen-inequality-এ \(\mathbb E[1/\bar X]>1/\mathbb E[\bar X]=\lambda\) (সসীম \(n\)-এ biased)। তবু \(n\to\infty\)-এ bias শূন্যে যায় — consistency-র সাথে consistent।
  • standardized ভুল \(N(0,1)\)-এ থিতু — asymptotic normality। \(n{=}200\)-এ \(S=\sqrt n(\widehat\lambda-\lambda)/\lambda\)-এর গড় \(\mathbf{+0.0663}\) (\(\approx0\)) ও sd \(\mathbf{1.0091}\) (\(\approx1\)); asymptotic sd ঠিক \(\lambda=\mathbf{2.0000}\) (\(=\sqrt{1/I(\lambda)}\))। \(N(0,1)\)-থেকে KS-দূরত্ব মাত্র \(\mathbf{0.0180}\) — এত ছোট যে limiting normal রূপ ধরে নেওয়া যায়। অর্থাৎ \(\sqrt n(\widehat\lambda-\lambda)\Rightarrow N(0,\lambda^2)\) সংখ্যায় নিশ্চিত।

এক বাক্যে। \(\text{Exp}(\lambda)\)-এর MLE \(1/\bar X\)-এর RMSE \(n^{-0.557}\approx n^{-1/2}\)-হারে নামে (consistency) আর \(n=200\)-এ standardized ভুল \(N(0,1)\)-এর কাছে (KS \(0.0180\), asymptotic sd \(=\lambda=2\)) — consistency ও asymptotic normality দুই-ই পুনরুৎপাদিত।

সারসংক্ষেপ

চারটি পরীক্ষা মিলে simulation study-র মূল ধারণাকে সংখ্যায় স্পর্শযোগ্য করল — প্রতিটি একটা জানা তাত্ত্বিক ফলকে নকশা-করা Monte-Carlo-তে ফিরিয়ে এনে তত্ত্ব ও কোড দুই-ই verify করল। §৫.১ CLT-এর হার মাপল: বঙ্কিম Exp(1)-এর standardized গড়ের KS-দূরত্ব \(n^{-1/2}\)-হারে নামে (slope \(-0.4998\)), ঠিক Berry–Esseen-এর মতো। §৫.২ একটা inference-পদ্ধতির নির্ভুলতা verify করল: percentile-bootstrap CI-এর empirical coverage \(0.9130\) (MC-SE \(0.0063\)) — nominal \(0.95\)-এর সামান্য নিচে, skewed data-য় মাঝারি \(n\)-এ as expected। §৫.৩ learning theory-র সমঝোতা ফিরিয়ে আনল: polynomial degree বাড়ালে \(\text{Bias}^2\) নামে, \(\text{Var}\) ওঠে, total error U-আকৃতিতে degree ৫-এ (\(0.5784\)) সর্বনিম্ন। আর §৫.৪ estimation-তত্ত্বের দুই স্তম্ভ দেখাল: MLE \(1/\bar X\)-এর RMSE \(n^{-1/2}\)-হারে নামে (consistency, slope \(-0.5570\)) আর standardized ভুল \(N(0,1)\)-এ থিতু (asymptotic normality, KS \(0.0180\))। প্রতিটি ক্ষেত্রে একটা স্পষ্ট design (factor, replication-সংখ্যা, স্থির seed \(20260619\)), একটা ছাপা ফলাফল-টেবিল, আর সেটি যে তাত্ত্বিক ভবিষ্যদ্বাণী নিশ্চিত করে — এই ত্রিভুজই একটা simulation study-কে বিশ্বাসযোগ্য করে তোলে।


৬ · ভিজ্যুয়ালাইজেশন

চারটি পরীক্ষার প্রতিটির জন্য একটি করে figure — চারটি জানা ফলকে চোখে দেখা। প্রথম figure CLT-convergence-এর হার দেখায় log-log অক্ষে; দ্বিতীয়টি bootstrap CI-গুলো কীভাবে সত্যকে ঘিরে ধরে ও empirical coverage কত; তৃতীয়টি bias–variance-এর U-বক্ররেখা; চতুর্থটি MLE-এর asymptotic normal রূপ। প্রতিটি figure-এর নিচে ঠিক যে ধারণায় সেটি আঁকা তার একটা সংক্ষিপ্ত code-অংশ দেওয়া; সম্পূর্ণ script part-8-capstone/_code/figs_8-2.py-তে, seed np.random.default_rng(20260619)

৬.১ · CLT-convergence-এর হার — log-log অক্ষে Berry–Esseen লাইন

এই figure §৫.১-এর সংখ্যাগুলোকে ছবিতে আনে: সাতটি sample-আকার \(n\)-এর KS-দূরত্ব দুই-অক্ষই log স্কেলে আঁকা, আর তার ভেতর দিয়ে টানা একটা −১/২-slope-এর guide-লাইন (Berry–Esseen-হার)। তাত্ত্বিক কথাটা — \(\sim n^{-1/2}\) হার একটা power-law, তাই log-log-এ তা সরলরেখা, আর মাপা বিন্দুগুলো সেই রেখার ওপর বসে। fit-করা slope \(-0.4998\) কার্যত \(-1/2\)-এর অভিন্ন।

ax.loglog(ns, ks_vals, "o", label="empirical KS")   # measured points
guide = np.exp(intercept) / np.sqrt(ns)              # C * n^{-1/2} line
ax.loglog(ns, guide, "k--", label=r"slope $-1/2$ (Berry-Esseen)")
ax.set_xlabel("n"); ax.set_ylabel(r"$\sup_x\lvert F_n(x)-\Phi(x)\rvert$")
ax.set_title(f"CLT rate: slope = {slope:.4f}")

CLT convergence rate: KS distance vs n on log-log axes for Exp(1) standardized mean, empirical points on a slope -1/2 Berry-Esseen line

লক্ষণীয় — বিন্দুগুলো guide-লাইন থেকে সামান্যও সরে না, যা দেখায় \(1/\sqrt n\) শুধু একটা ওপরের bound নয়, এখানে প্রকৃত convergence rate; slope-ই (\(-0.4998\)) সেই হারের সংখ্যিক শংসাপত্র।

৬.২ · Bootstrap CI-এর coverage — সত্যকে ঘিরে ধরা CI

এই figure §৫.২-কে দৃশ্যমান করে: প্রথম \(100\)টি dataset-এর প্রতিটির \(95\%\) percentile CI একটা করে উল্লম্ব দণ্ড হিসেবে আঁকা, সত্য গড় \(1\)-কে ঢাকলে এক রঙে, না-ঢাকলে অন্য রঙে; পাশের panel-এ একটা bar দেখায় empirical coverage \(0.913\) বনাম nominal \(0.95\)। তাত্ত্বিক কথাটা — coverage মানে "কত ভগ্নাংশ CI সত্যকে ধরে", আর ছবিতে না-ঢাকা (অন্য-রঙা) দণ্ডের অনুপাতই সেই \(\approx8.7\%\) ব্যর্থতা।

for k in range(100):                                 # first 100 datasets
    color = "C0" if covered[k] else "C3"             # covers truth? colour
    ax.plot([k, k], [los[k], his[k]], color=color, lw=1.2)
ax.axhline(1.0, ls="--", color="k")                  # true mean theta = 1
axbar.bar(["empirical", "nominal"], [coverage, 0.95])

Bootstrap 95% percentile CIs for the mean across 100 datasets, coloured by whether they cover the true mean 1; right panel bar shows empirical coverage 0.913 vs nominal 0.95

লক্ষণীয় — বেশিরভাগ দণ্ড সত্য-রেখা \(1\)-কে অতিক্রম করে (ঢাকে), কিন্তু কিছু নিচে বা ওপরে থেকে যায়; সেই না-ঢাকা ভগ্নাংশ nominal \(5\%\)-এর চেয়ে সামান্য বেশি, ঠিক \(0.913\) coverage-এর সাথে consistent — skewed data-য় percentile bootstrap-এর মৃদু under-coverage।

৬.৩ · Bias–variance — U-আকৃতির test error

এই figure §৫.৩-এর টেবিলটাকে বক্ররেখায় আনে: degree-এর বিপরীতে তিনটি curve — \(\text{Bias}^2\) (degree বাড়লে নামে), \(\text{Var}\) (ওঠে), আর total test error (তাদের যোগ + \(\sigma^2\))। তাত্ত্বিক কথাটা — bias-পতন ও variance-বৃদ্ধির প্রতিযোগিতাই total-কে U-আকৃতি দেয়, আর ন্যূনতম বিন্দুই optimal degree।

ax.plot(degrees, bias2, "o-", label=r"$\mathrm{Bias}^2$")   # falls with d
ax.plot(degrees, variance, "s-", label="Variance")          # rises with d
ax.plot(degrees, total_err, "^-", label="Total test error") # U-shaped
ax.axvline(best, ls="--")                                    # optimal degree = 5
ax.set_xlabel("polynomial degree"); ax.set_ylabel("error")

Bias-squared, variance and total test error vs polynomial degree; total error is U-shaped with minimum at degree 5

লক্ষণীয় — \(\text{Bias}^2\)\(\text{Var}\)-এর curve দুটি degree ৫-এর কাছে পরস্পরকে ছেদ করে, আর ঠিক সেখানেই total-বক্ররেখার তলদেশ; এই ছেদ-বিন্দুই "underfit বনাম overfit"-এর ভারসাম্য, model-নির্বাচনের কেন্দ্রীয় স্বজ্ঞা।

৬.৪ · MLE-এর asymptotic normality — histogram বনাম limiting Normal

এই figure §৫.৪-কে সম্পূর্ণ করে: \(n=200\)-এ \(\sqrt n(\widehat\lambda-\lambda)\)-এর histogram-এর ওপর limiting \(N(0,\lambda^2)\) density আঁকা (\(\lambda^2=4\)); একটা inset-এ RMSE বনাম \(n\) (log-log) দেখায় \(\sim n^{-1/2}\) consistency। তাত্ত্বিক কথাটা — asymptotic normality মানে scaled ভুলের distribution একটা নির্দিষ্ট Gaussian-এ থিতু হয়, আর histogram-density-র মিলই তা চোখে দেখায়।

scaled = np.sqrt(n_an) * (lam_hat_an - lam_true)     # sqrt(n)(lam_hat - lambda)
ax.hist(scaled, bins=60, density=True, alpha=0.55)
g = np.linspace(-6, 6, 400)
ax.plot(g, stats.norm.pdf(g, 0, lam_true), "k--",    # N(0, lambda^2) density
        label=r"$N(0,\lambda^2)$")
axin.loglog(ns_mle, rmse_mle, "o-")                  # inset: RMSE ~ n^{-1/2}

Histogram of sqrt(n)(lambda_hat - lambda) for the Exp-rate MLE at n=200 against the limiting N(0, lambda^2) density; inset shows RMSE ~ n^-1/2 consistency

লক্ষণীয় — histogram limiting bell-curve-এর সাথে প্রায় নিখুঁত মেলে (KS মাত্র \(0.0180\)), আর inset-এর সরল-linear log-log পতন consistency-র \(n^{-1/2}\)-হার নিশ্চিত করে; একই ছবিতে দুই asymptotic ধর্ম একসাথে।

চারটি figure একসূত্রে বাঁধা: log-log রেখা (৬.১) CLT-হার, রঙিন CI-দণ্ড (৬.২) coverage, U-বক্ররেখা (৬.৩) bias–variance, আর histogram+inset (৬.৪) MLE-asymptotics — চারটি জানা ফল, চারটি ছবিতে পুনরুৎপাদিত, ঠিক যা একটা simulation study-র লক্ষ্য।


৭ · অনুশীলনী

নিচের অনুশীলনীগুলো এই অধ্যায়ের কেন্দ্রীয় efficiency verify করে: একটি Monte-Carlo simulation কীভাবে নকশা করলে তা একটি পরিচিত তাত্ত্বিক ফল পুনরুৎপাদন করে — আর সেই পুনরুৎপাদন কীভাবে একই সঙ্গে তত্ত্ব ও কোড উভয়কে verify করে। প্রশ্নগুলো চারটি পরীক্ষার (E1 CLT-হার, E2 bootstrap coverage, E3 bias–variance, E4 MLE-asymptotics) নকশা-যুক্তি, তাদের Monte-Carlo standard error, replication-সংখ্যা বাছাই, এবং common random numbers-এর মতো variance-reduction কৌশল ছুঁয়ে দেখে। সমস্যাগুলো চার দলে সাজানো — (ধারণাগত), (গণনামূলক), (প্রমাণ/ডিজাইন-ভিত্তিক), (কোডিং)। প্রতিটির শিরোনামে কঠিনতা-চিহ্ন (difficulty tag): মৌলিক, প্রথম পাঠেই বোঝা উচিত; ★★ মাঝারি, একটু কৌশল লাগে; ★★★ গভীর, প্রথম পাঠে কিছু অংশ এড়িয়ে যাওয়া যায়। প্রতিটিতে একটি Hint: দেওয়া আছে।

পূর্ণাঙ্গ সমাধান (ধাপে-ধাপে, কোডসহ): _solutions/08-02-simulation-study-solutions.md। আগে নিজে চেষ্টা করুন, তারপর মেলান।

প্রসঙ্গত সব সিমুলেশন বীজ np.random.default_rng(20260619)-এ চালানো; প্রয়োজনীয় import import numpy as np, from scipy import stats। KS-দূরত্ব সর্বত্র \(D_n=\sup_x\lvert F_n(x)-\Phi(x)\rvert\) (empirical CDF ও রেফারেন্স-CDF-এর সর্বোচ্চ ব্যবধান)। canonical মান: E1 — CLT log-log slope \(-0.4998\) (Berry–Esseen পূর্বানুমান \(-0.5\)), \(C=0.1326\), KS \(n=5\to0.0590\), \(n=40\to0.0225\), \(n=160\to0.0108\), \(n=320\to0.0071\); E2 — bootstrap coverage \(0.9130\) (MC SE \(0.0063\)), গড় CI-প্রস্থ \(0.5869\), নামমাত্র \(0.95\); E3 — optimal degree \(5\), ন্যূনতম total test error \(0.5784\), irreducible \(\sigma^2=0.4900\); E4 — asymptotic sd \(=\lambda=2.0000\), standardized-KS \(0.0180\) (\(n=200\), \(R=40000\)), RMSE log-log slope \(-0.5570\) (consistency পূর্বানুমান \(-0.5\)), bias ধনাত্মক কিন্তু \(\to0\)


ক · ধারণাগত

অনুশীলন ১ (★)

পুনরুৎপাদন কেন pipeline verify করে। একটি সিমুলেশন-গবেষণায় প্রায়ই একটি পরিচিত তাত্ত্বিক ফল ইচ্ছাকৃতভাবে পুনরুৎপাদন করা হয়। (ক) এক-দুই বাক্যে ব্যাখ্যা করুন কেন একটি জানা ফল পুনরুৎপাদন একই সঙ্গে দুটি জিনিস প্রমাণ করে — (i) তত্ত্বটি সংখ্যায় সত্য এবং (ii) সিমুলেশন-pipeline ঠিকঠাক (← §৪.৬)। (খ) E1-এ log-log slope যদি \(-0.5\)-এর বদলে \(-0.25\) বেরোত, তবে প্রথম সন্দেহ কোথায় করা উচিত — তত্ত্বে (Berry–Esseen) নাকি কোডে — এবং কেন, এক বাক্যে। (গ) এক বাক্যে: কেন capstone-এর চারটি পরীক্ষাই অজানা কিছু নয়, বরং পরিচিত ফল বেছে নেয়।

Hint: (ক) Berry–Esseen প্রমাণিত, তাই মিল পেলে তত্ত্ব নিশ্চিত এবং কোড/sampling/পরিসংখ্যান-গণনা নির্ভুল বলে ধরা যায়। (খ) তত্ত্ব সুপ্রতিষ্ঠিত ⇒ inconsistency-এর সম্ভাব্য উৎস কোডের বাগ (যেমন \(\sqrt n\) ভুল জায়গায়, ভুল রেফারেন্স-distribution)। (গ) জানা উত্তরই একমাত্র যা তত্ত্ব ও কোড উভয়কে একসঙ্গে verify করতে দেয়, তবেই নতুন প্রশ্নে সেই সরঞ্জাম বিশ্বাসযোগ্য। (← §৪.৬)

অনুশীলন ২ (★★)

Berry–Esseen ও log-log slope-এর পূর্বানুমান। E1 CLT-convergence-এর হার মাপে KS-দূরত্ব বনাম \(n\)-এর log-log slope দিয়ে। (ক) Berry–Esseen theorem-টি বিবৃত করুন: iid, সসীম তৃতীয় absolute moment \(\rho=\mathbb E\lvert X-\mu\rvert^3\), ভেদ \(\sigma^2\) হলে \(\sup_x\lvert F_n(x)-\Phi(x)\rvert\le C\rho/(\sigma^3\sqrt n)\)। (খ) এই সীমা থেকে দেখান KS \(\approx C'\,n^{-1/2}\), তাই \(\log(\mathrm{KS})\) বনাম \(\log n\)-এ slope \(-\tfrac12\) পূর্বানুমিত — canonical \(-0.4998\) যার সঙ্গে মেলে। (গ) এক বাক্যে: base distribution Exp(1)-এর skewness \(2\) (ধনাত্মক) কীভাবে ধ্রুবক \(C'\)-কে (অর্থাৎ intercept, canonical \(C=0.1326\)) প্রভাবিত করে, কিন্তু slope-কে নয়।

Hint: (ক) সীমার ডান পাশে একমাত্র \(n\)-নির্ভরতা \(1/\sqrt n\); বাকি সব (\(C,\rho,\sigma\)) \(n\)-নিরপেক্ষ ধ্রুবক। (খ) \(\log(\mathrm{KS})=\log C'-\tfrac12\log n\) — সরলরেখা, slope \(-\tfrac12\)। (গ) skewness বড় হলে \(\rho/\sigma^3\) বড়, তাই \(C'\) (উচ্চতা) বাড়ে, কিন্তু \(n\)-এর ঘাত \(-\tfrac12\) অপরিবর্তিত — হার distribution-free, কেবল ধ্রুবক distribution-নির্ভর। (← §৪.২, ← 3.4)

অনুশীলন ৩ (★★)

asymmetric ডেটায় bootstrap coverage কেন নামমাত্রের নিচে। E2-তে percentile bootstrap-এর empirical coverage \(0.9130\), নামমাত্র \(0.95\)-এর সামান্য নিচে। (ক) এক-দুই বাক্যে ব্যাখ্যা করুন কেন base distribution Exp(1) right-skewed হওয়ায় ও \(n=40\) মাঝারি হওয়ায় percentile bootstrap সামান্য under-cover করে (নমুনা-গড়ের distribution তখনও পুরোপুরি symmetric নয়, ← 4.9)। (খ) এক বাক্যে: \(n\) বাড়ালে (CLT-এর ফলে নমুনা-গড় ক্রমে normal) coverage-এর কী হওয়ার কথা। (গ) এক বাক্যে: পার্থক্য \(0.95-0.9130=0.0370\) MC SE \(0.0063\)-এর প্রায় ছয়গুণ — এটি কেন under-coverage-কে "প্রকৃত প্রভাব, সিমুলেশন-কোলাহল নয়" বলে নিশ্চিত করে।

Hint: (ক) skewness নমুনা-গড়ের distribution-কে asymmetric রাখে; percentile পদ্ধতি সেই asymmetry ঠিকভাবে ধরতে না-পারায় উভয় প্রান্ত সমান-ভাবে ঢাকে না ⇒ সামান্য কম coverage। (খ) \(n\to\infty\)-এ নমুনা-গড় normal ⇒ coverage \(\to0.95\)-এ উঠে আসার কথা। (গ) \(0.0370/0.0063\approx5.9\) — এত বড় ব্যবধান random ওঠানামায় ব্যাখ্যাযোগ্য নয়। (← 4.9, ← §৪.৩)

অনুশীলন ৪ (★★)

bias–variance বিয়োজন ও U-আকৃতি। E3-তে total test error degree-এর সাপেক্ষে U-আকৃতির, ন্যূনতম degree \(5\)-এ (\(0.5784\))। (ক) expected prediction error-এর bias–variance বিয়োজন লিখুন: \(\mathbb E[(y-\hat f(x))^2]=\operatorname{Bias}^2+\operatorname{Var}+\sigma^2\), যেখানে \(\sigma^2\) irreducible ত্রুটি (canonical \(0.4900\))। (খ) এক-দুই বাক্যে বলুন কেন degree বাড়লে \(\operatorname{Bias}^2\) কমে কিন্তু \(\operatorname{Var}\) বাড়ে, তাই মোট ত্রুটি U-আকৃতির এবং একটি optimal degree-এ ন্যূনতম (← 6.1)। (গ) এক বাক্যে: canonical সারণিতে \(\operatorname{Bias}^2\) কেন \(2\to3\)-এ হঠাৎ পড়ে (\(0.4812\to0.0741\)) — signal \(f(x)=\sin(1.5x)+0.5x\)-এর সঙ্গে এর সম্পর্ক কী।

Hint: (ক) তিন অংশ — নমনীয়তা কম হলে বড় bias, বেশি হলে বড় variance, আর \(\sigma^2\) কমানো অসম্ভব (noise sd \(0.7\), \(\sigma^2=0.49\))। (খ) সরল মডেল signal ধরতে পারে না (under-fit, বড় bias); জটিল মডেল noise ধরে ফেলে (over-fit, বড় variance); সমতা-বিন্দুতে মোট ন্যূনতম। (গ) \(\sin\)-এর প্রসারণে বিজোড় (odd) পদ লাগে, তাই degree \(3\) প্রথম বড় bias-হ্রাস আনে (এবং ফের \(4\to5\)-এ, \(0.0742\to0.0020\))। (← 6.1)


খ · গণনামূলক

অনুশীলন ৫ (★)

coverage-অনুমানের Monte-Carlo standard error গণনা। E2-তে \(D=2000\)টি ডেটাসেটের ওপর empirical coverage \(\hat p=0.9130\)। (ক) অনুপাত-অনুমানের সূত্র \(\operatorname{MC\,SE}(\hat p)=\sqrt{\hat p(1-\hat p)/D}\) ব্যবহার করে MC SE গণনা করুন এবং canonical \(0.0063\)-এর সঙ্গে মেলান। (খ) একটি আনুমানিক ৯৫% Monte-Carlo interval \(\hat p\pm1.96\,\operatorname{MC\,SE}\) লিখুন এবং দেখান নামমাত্র \(0.95\) এর বাইরে পড়ে। (গ) এক বাক্যে: MC SE \(0.0063\) থেকে অর্ধেক (\(0.00315\)) করতে \(D\) কতগুণ বাড়াতে হবে ও কেন।

Hint: (ক) \(\sqrt{0.9130\times0.0870/2000}=\sqrt{0.079431/2000}=\sqrt{3.97\times10^{-5}}\approx0.0063\)। (খ) \(0.9130\pm1.96\times0.0063=0.9130\pm0.0123=[0.9007,\,0.9253]\)\(0.95\) এর বাইরে ⇒ under-coverage তাৎপর্যপূর্ণ। (গ) MC SE \(\propto1/\sqrt D\) ⇒ অর্ধেক করতে \(D\) চারগুণ (\(8000\)), কারণ \(\sqrt4=2\)। (← §৪.২, ← §৪.৩)

অনুশীলন ৬ (★★)

Exp-rate MLE-এর asymptotic variance। E4-তে মডেল Exp(rate \(\lambda\)), MLE \(\hat\lambda=1/\bar X\), Fisher information \(I(\lambda)=1/\lambda^2\)। (ক) asymptotic normality-র সাধারণ ফল \(\sqrt n(\hat\lambda-\lambda)\xrightarrow{d}N\bigl(0,\,1/I(\lambda)\bigr)\) ব্যবহার করে দেখান asymptotic variance \(=1/I(\lambda)=\lambda^2\), তাই asymptotic sd \(=\lambda\) (← 4.3)। (খ) \(\lambda=2\) বসিয়ে asymptotic sd-এর সংখ্যাগত মান দিন এবং canonical \(2.0000\)-এর সঙ্গে মেলান। (গ) এক বাক্যে: \(n=200\)-এ standardized রাশি \(S=\sqrt n(\hat\lambda-\lambda)/\lambda\)-এর নমুনা-sd canonical \(1.0091\) (\(\approx1\)) হওয়া কীভাবে এই তত্ত্বকে সমর্থন করে।

Hint: (ক) \(1/I(\lambda)=1/(1/\lambda^2)=\lambda^2\); বর্গমূল নিয়ে sd \(=\lambda\)। (খ) \(\lambda=2\Rightarrow\) asymptotic sd \(=2.0000\)। (গ) \(S\)-কে \(\lambda\) দিয়ে ভাগ করায় তার তাত্ত্বিক sd \(\approx1\); পর্যবেক্ষিত \(1.0091\) প্রায় \(1\)\(N(0,1)\)-সীমা ঠিক (KS \(0.0180\)-ও ছোট)। (← 4.3, ← §৪.৬)

অনুশীলন ৭ (★)

KS-দূরত্ব \(n=40\) থেকে \(n=160\)-এ কীভাবে স্কেল করে। E1-এ KS \(\approx C'\,n^{-1/2}\) (Berry–Esseen)। (ক) এই স্কেলিং ব্যবহার করে \(n=40\)-এর canonical KS \(0.0225\) থেকে \(n=160\)-এর KS পূর্বানুমান করুন (ইঙ্গিত: \(n\) চারগুণ হলে \(n^{-1/2}\) অর্ধেক)। (খ) আপনার পূর্বানুমান canonical \(0.0108\)-এর সঙ্গে তুলনা করুন এবং মন্তব্য করুন কেন হুবহু \(0.01125\) নয় (finite-\(n\) সংশোধন, \(o(1/\sqrt n)\)-পদ)। (গ) এক বাক্যে: \(n=5\to0.0590\) থেকে \(n=320\to0.0071\) — এই সাত-বিন্দু ধারা log-log-এ প্রায়-সরলরেখা কেন।

Hint: (ক) \(n:40\to160\) চারগুণ, তাই KS \(\approx0.0225/2=0.01125\)। (খ) পূর্বানুমান \(0.01125\) বনাম প্রকৃত \(0.0108\) — খুব কাছাকাছি; পার্থক্য উচ্চতর-ক্রম সংশোধনের (\(o(n^{-1/2})\)) জন্য, যা মাঝারি \(n\)-এ ক্ষীণ। (গ) \(\log(\mathrm{KS})\)\(\log n\)-এর সম্পর্ক প্রায়-linear (slope \(-0.4998\)), কারণ প্রধান পদ \(n^{-1/2}\)-ই আধিপত্য করে। (← §৪.২)


গ · প্রমাণ/ডিজাইন-ভিত্তিক

অনুশীলন ৮ (★★)

নমুনা-ভেদের distribution verification-এর সিমুলেশন নকশা করুন। তত্ত্ব বলে iid \(X_i\sim N(\mu,\sigma^2)\) হলে \(\dfrac{(n-1)s^2}{\sigma^2}\sim\chi^2_{n-1}\), যেখানে \(s^2\) নমুনা-ভেদ (← 4.1)। (ক) এই দাবি verify করতে একটি Monte-Carlo পরীক্ষা নকশা করুন: কোন factor স্থির (\(\mu,\sigma,n\)), কী replication-সংখ্যা \(R\), প্রতিটি replication-এ কী গণনা করা হবে (\(T_r=(n-1)s_r^2/\sigma^2\)), আর কীভাবে \(\{T_r\}\)-এর empirical distribution-কে \(\chi^2_{n-1}\)-এর সঙ্গে মেলাবেন (KS-দূরত্ব, বা মিলিয়ে-নেওয়া mean \(=n-1\) ও var \(=2(n-1)\))। (খ) নকশায় বীজ default_rng(20260619) স্থির রাখা কেন জরুরি — এক বাক্যে (← §৪.১)। (গ) এক বাক্যে: এই পরীক্ষাটিও কেন একটি "জানা ফল পুনরুৎপাদন করে pipeline verify"-এর দৃষ্টান্ত (← §৪.৬)।

Hint: (ক) স্থির করুন \(\mu=0,\sigma=1,n\) (যেমন \(10\)); বড় \(R\) (যেমন \(50000\)); প্রতিটিতে s2 = X.var(ddof=1), T = (n-1)*s2/sigma**2; তারপর stats.kstest(T, 'chi2', args=(n-1,)).statistic ছোট কি না, বা T.mean()\(\approx n-1\)T.var()\(\approx2(n-1)\) দেখুন। (খ) না-হলে ফল পুনরুৎপাদনযোগ্য নয়, canonical-মিল অসম্ভব। (গ) \(\chi^2_{n-1}\)-ফল প্রমাণিত; মিল পেলে তত্ত্ব নমুনা-ভেদ-গণনা কোড উভয় verify হয়। (← 4.1, ← §৪.১, ← §৪.৬)

অনুশীলন ৯ (★★)

E3-এ common random numbers কেন — independent noise হলে কী বদলাত। E3-তে প্রতিটি polynomial degree-এ একই noise realisation পুনর্ব্যবহার করা হয় (← §৪.৪)। (ক) এক-দুই বাক্যে ব্যাখ্যা করুন কেন এটি একটি variance reduction কৌশল (common random numbers) — অর্থাৎ দুই degree-এর total-error-এর পার্থক্য কেন কম ভেদ পায় যখন উভয়ে একই random ইনপুট। (খ) এক বাক্যে: যদি প্রতিটি degree-এ independent noise ব্যবহার করা হতো, তবে U-আকৃতি বক্ররেখা ও optimal-degree সিদ্ধান্তের কী ক্ষতি হতো। (গ) এক বাক্যে: এই কৌশল কেন factor-বিচ্ছিন্নকরণের (isolating one factor) নীতির সরাসরি প্রয়োগ — এখানে একমাত্র পরিবর্তনশীল factor degree, noise নয়।

Hint: (ক) \(\operatorname{Var}(A-B)=\operatorname{Var}A+\operatorname{Var}B-2\operatorname{Cov}(A,B)\); সাধারণ random ইনপুটে \(\operatorname{Cov}(A,B)>0\), তাই পার্থক্যের ভেদ কমে ⇒ degree-তুলনা তীক্ষ্ণ। (খ) independent noise-এ প্রতিটি degree-এর কোলাহল আলাদা ⇒ বক্ররেখা অমসৃণ, দুই কাছাকাছি degree-এর পার্থক্য কোলাহলে ঢেকে যেতে পারে, optimal-degree অস্থির। (গ) noise স্থির থাকায় total-error-এর পরিবর্তন কেবল degree-এর ফল — ঠিক এক-factor নকশা। (← §৪.৪, ← §৪.৫)

অনুশীলন ১০ (★★★)

delta method দিয়ে \(\sqrt n(\hat\lambda-\lambda)\to N(0,\lambda^2)\)-এর রূপরেখা। E4-এর Exp-rate MLE \(\hat\lambda=1/\bar X\); দেখান কেন এর asymptotic ভেদ \(\lambda^2\)। (ক) CLT দিয়ে বলুন \(\bar X\)-এর asymptotic distribution: \(X_i\sim\text{Exp}(\lambda)\)-এ \(\mathbb E[X]=1/\lambda\), \(\operatorname{Var}(X)=1/\lambda^2\), তাই \(\sqrt n\bigl(\bar X-\tfrac1\lambda\bigr)\xrightarrow{d}N\bigl(0,\tfrac1{\lambda^2}\bigr)\) (← 3.4)। (খ) delta method প্রয়োগ করুন \(g(t)=1/t\)-এ (\(\hat\lambda=g(\bar X)\)): \(g'(t)=-1/t^2\), তাই \(t=1/\lambda\)-তে \(g'(1/\lambda)=-\lambda^2\); দেখান \(\sqrt n(\hat\lambda-\lambda)\xrightarrow{d}N\bigl(0,\,[g'(1/\lambda)]^2\cdot\tfrac1{\lambda^2}\bigr)=N(0,\lambda^2)\)। (গ) এক বাক্যে: এই \(\lambda^2\) কেন ঠিক Fisher-তথ্যভিত্তিক \(1/I(\lambda)\)-এর সমান, এবং RMSE-এর log-log slope কেন তাই \(-\tfrac12\) (consistency, canonical \(-0.5570\))।

Hint: (ক) Exp(\(\lambda\))-এর গড় \(1/\lambda\), ভেদ \(1/\lambda^2\); সরাসরি CLT। (খ) \([g'(1/\lambda)]^2\cdot\tfrac1{\lambda^2}=\lambda^4\cdot\tfrac1{\lambda^2}=\lambda^2\); delta-method ভেদ \(=(g')^2\times\) (মূল ভেদ)। (গ) \(I(\lambda)=1/\lambda^2\Rightarrow1/I=\lambda^2\) — asymptotic-efficiency মিলে যায়; RMSE \(\propto\lambda/\sqrt n\), তাই \(\log(\mathrm{RMSE})\) বনাম \(\log n\)-এ slope \(-\tfrac12\)। (← 3.4, ← 4.3)


ঘ · কোডিং

সব স্নিপেট বীজ np.random.default_rng(20260619)-এ চালানো; সংখ্যাগত উত্তর reproducible। প্রয়োজনীয় import: import numpy as np, from scipy import stats। মনে রাখবেন সংখ্যা-টানার ক্রম ও size অভিন্ন না-হলে canonical মান হুবহু নাও মিলতে পারে (draw-order dependence, ← §৪.১)।

অনুশীলন ১১ (★★)

E1 পুনরুৎপাদন — CLT log-log slope \(-0.4998\) মেলান। iid \(X_i\sim\text{Exp}(1)\) (mean \(1\), sd \(1\), skewness \(2\))-এ \(Z_n=\sqrt n(\bar X_n-1)\) মানক করে \(N(0,1)\)-এর সাপেক্ষে KS-দূরত্ব মাপুন এবং \(n\)-এর সাপেক্ষে log-log slope বের করুন। (ক) default_rng(20260619) দিয়ে \(n\in\{5,10,20,40,80,160,320\}\), প্রতিটিতে \(R=60000\) replication-এ KS গণনা করুন। (খ) canonical লক্ষ্য-এর সঙ্গে মেলান: KS \(n=5\to0.0590\), \(n=40\to0.0225\), \(n=160\to0.0108\), \(n=320\to0.0071\); আর \(\log(\mathrm{KS})\)-বনাম-\(\log n\) linear ফিটের slope \(-0.4998\) (\(\approx-0.5\), Berry–Esseen)। (গ) এক বাক্যে: slope \(-0.5\)-এর এত কাছে আসা কীভাবে তত্ত্ব pipeline দুটোই verify করে (← §৪.৬)।

Hint: for n in [5,10,20,40,80,160,320]: X=rng.exponential(1.0,size=(60000,n)); Zn=np.sqrt(n)*(X.mean(1)-1.0); ks=stats.kstest(Zn,'norm').statistic; KS তালিকা সংগ্রহ করে np.polyfit(np.log(ns), np.log(ks_list), 1)[0]\(\approx-0.4998\)। প্রতিটি \(n\)-এ \(R=60000\) বড় রাখুন যাতে KS-অনুমানের কোলাহল সংকেত ঢেকে না-ফেলে। (canonical)

অনুশীলন ১২ (★★)

E2 পুনরুৎপাদন — bootstrap coverage \(0.9130\) (MC SE \(0.0063\)) মেলান। Exp(1) থেকে সত্য গড় \(\theta=1\); \(n=40\); \(D=2000\) ডেটাসেট; প্রতিটিতে \(B=1000\) resample-এর percentile bootstrap CI নমুনা-গড়ের ওপর। (ক) default_rng(20260619) দিয়ে প্রতিটি ডেটাসেটে ৯৫% percentile CI বানিয়ে দেখুন তা \(\theta=1\) ঢাকে কি না, আর empirical coverage গণনা করুন। (খ) canonical-এর সঙ্গে মেলান: coverage \(0.9130\), MC SE \(\sqrt{0.9130\times0.0870/2000}=0.0063\), গড় CI-প্রস্থ \(0.5869\)। (গ) এক বাক্যে: coverage নামমাত্র \(0.95\)-এর নিচে কেন, এবং MC SE \(0.0063\) দিয়ে বলুন এই under-coverage তাৎপর্যপূর্ণ কি না।

Hint: প্রতিটি ডেটাসেট data=rng.exponential(1.0,size=n); resample idx=rng.integers(0,n,size=(B,n)); means=data[idx].mean(1); CI lo,hi=np.percentile(means,[2.5,97.5]); covered = (lo<=1.0<=hi); সব ডেটাসেটে গড় নিয়ে coverage\(\approx0.9130\), প্রস্থ(hi-lo)-এর গড়\(\approx0.5869\)। Exp(1) right-skewed ⇒ \(n=40\)-এ সামান্য under-cover; \(0.95-0.9130\approx5.9\times\)MC SE ⇒ তাৎপর্যপূর্ণ। (canonical)

অনুশীলন ১৩ (★★)

E3 পুনরুৎপাদন — optimal degree \(5\) মেলান। signal \(f(x)=\sin(1.5x)+0.5x\) on \([-3,3]\), noise sd \(\sigma=0.7\) (\(\sigma^2=0.4900\)); polynomial regression degree \(d=1,\dots,12\); \(n_{\text{train}}=30\) (স্থির design); \(R=500\) প্রশিক্ষণ-সেট, প্রতিটি degree-এ একই noise (common random numbers)। (ক) default_rng(20260619) দিয়ে প্রতিটি degree-এ \(\operatorname{Bias}^2\), \(\operatorname{Var}\), total test error গণনা করুন। (খ) canonical-এর সঙ্গে মেলান: optimal degree \(5\), ন্যূনতম total test error \(0.5784\), irreducible \(\sigma^2=0.4900\); আর Total যে U-আকৃতির তা দেখান। (গ) এক বাক্যে: degree-জুড়ে একই noise ব্যবহার কীভাবে optimal-degree সিদ্ধান্তকে তীক্ষ্ণ করে (← §৪.৪)।

Hint: একবার noise = rng.normal(0, 0.7, size=(R, n_train)) তৈরি করে সব degree-এ পুনর্ব্যবহার করুন (নতুন করে টানবেন না); প্রতিটি \(d\)-তে np.polyfit(x_train, y_r, d) ফিট করে একটি স্থির টেস্ট-গ্রিডে \(\operatorname{Bias}^2\) (গড় ভবিষ্যদ্বাণী \(-f\))\(^2\)\(\operatorname{Var}\) (ভবিষ্যদ্বাণীর ভেদ) হিসাব করুন, Total \(=\operatorname{Bias}^2+\operatorname{Var}+0.49\); ন্যূনতম Total degree \(5\)-এ (\(0.5784\))। (canonical)

অনুশীলন ১৪ (★★)

E4 পুনরুৎপাদন — asymptotic KS \(0.0180\) ও RMSE slope \(-0.5570\) মেলান। মডেল Exp(rate \(\lambda=2\)), MLE \(\hat\lambda=1/\bar X\), Fisher information \(I(\lambda)=1/\lambda^2\) ⇒ asymptotic sd \(=\lambda=2\)। (ক) Consistency: default_rng(20260619) দিয়ে \(n\in\{10,40,160,640\}\), \(R=4000\)-এ bias ও RMSE গণনা করুন এবং \(\log(\mathrm{RMSE})\)-বনাম-\(\log n\) slope বের করুন। (খ) Asymptotic normality: \(n=200\), \(R=40000\)-এ standardized \(S=\sqrt n(\hat\lambda-\lambda)/\lambda\) গণনা করে \(N(0,1)\)-এর সাপেক্ষে KS মাপুন। (গ) canonical-এর সঙ্গে মেলান: asymptotic sd \(=2.0000\); RMSE slope \(-0.5570\) (\(\approx-0.5\), consistency); standardized-KS \(0.0180\) (ছোট ⇒ Normal-সীমা ঠিক); bias ধনাত্মক কিন্তু \(\to0\) (\(n=10\to+0.2182\), \(n=640\to+0.0028\))। এক বাক্যে বলুন কেন bias ধনাত্মক (\(\hat\lambda=1/\bar X\) Jensen-এ biased) অথচ \(n\to\infty\)-এ consistent।

Hint: (ক) প্রতিটি \(n\)-এ X=rng.exponential(1/lam, size=(4000,n)); lamhat=1.0/X.mean(1); bias=lamhat.mean()-lam, rmse=np.sqrt(((lamhat-lam)**2).mean()); slope np.polyfit(np.log(ns), np.log(rmses),1)[0]\(\approx-0.5570\)। (খ) X=rng.exponential(1/lam,size=(40000,200)); lamhat=1.0/X.mean(1); S=np.sqrt(200)*(lamhat-lam)/lam; stats.kstest(S,'norm').statistic\(\approx0.0180\)। (গ) \(1/\bar X\) convex ফাংশন ⇒ \(\mathbb E[1/\bar X]>1/\mathbb E[\bar X]=\lambda\) (Jensen), তাই সসীম \(n\)-এ ধনাত্মক bias; কিন্তু \(\bar X\to1/\lambda\)\(\hat\lambda\to\lambda\), তাই consistent। (canonical)


৮ · সারসংক্ষেপ ও সংযোগ

এই অধ্যায় Part VIII capstone-এর প্রথম হাতে-কলমে অধ্যায় — এখানে scratch→PhD যাত্রার তত্ত্ব আর ব্যবহারিক pipeline একত্রে একটা simulation study-তে verify হলো। চলুন যুক্তি-শৃঙ্খলটা গেঁথে নিই।

৮.১ যুক্তি-শৃঙ্খলের পুনরাবৃত্তি।

  • simulation study কী, আর কেন। একটা simulation study = এমন Monte-Carlo experiment নকশা করা যা একটা পরিচিত তাত্ত্বিক ফলকে সংখ্যায় পুনরুৎপাদন করে। এর দুই লক্ষ্য: (i) তত্ত্বটা সত্যিই যা বলে তা ঘটে কিনা দেখা, আর (ii) নিজের কোড/pipeline নির্ভুল কিনা verify — কারণ যে pipeline একটা জানা ফল ফিরিয়ে আনতে পারে না, তাকে অজানা সমস্যায় বিশ্বাস করা যায় না। প্রতিটি পরীক্ষার তিনটি অঙ্গ: স্পষ্ট design (factor, replication-সংখ্যা, স্থির seed \(20260619\)), ছাপা ফলাফল-টেবিল, আর সেটি যে তাত্ত্বিক ভবিষ্যদ্বাণী নিশ্চিত করে।
  • E1 — CLT-convergence-এর হার। বঙ্কিম Exp(1)-এর standardized গড় \(Z_n=\sqrt n(\bar X_n-1)\)-এর \(N(0,1)\)-থেকে KS-দূরত্ব sample-আকারের সাথে কীভাবে নামে? log-log fit-এর slope \(\mathbf{-0.4998}\approx-0.5\)Berry–Esseen-এর \(n^{-1/2}\) হার নিশ্চিত (\(C=0.1326\))।
  • E2 — bootstrap CI-এর coverage। \(95\%\) percentile-bootstrap CI সত্য গড় \(1\)-কে কত ভগ্নাংশ সময় ঢাকে? empirical coverage \(\mathbf{0.9130}\) (MC-SE \(0.0063\)) — nominal \(0.95\)-এর সামান্য নিচে, skewed data-য় মাঝারি \(n=40\)-এ expected মৃদু under-coverage।
  • E3 — bias–variance tradeoff। polynomial degree বাড়ালে test error কী করে? \(\text{Bias}^2\) নামে, \(\text{Var}\) ওঠে, তাই total error U-আকৃতিতে degree ৫-এ সর্বনিম্ন (\(0.5784\), irreducible \(\sigma^2=0.4900\)-এর ঠিক ওপরে) — bias–variance decomposition-এর হুবহু চিত্র।
  • E4 — MLE consistency ও asymptotic normality। \(\text{Exp}(\lambda{=}2)\)-এর MLE \(\widehat\lambda=1/\bar X\): RMSE log-log slope \(\mathbf{-0.5570}\approx-0.5\) (consistency, bias ধনাত্মক কিন্তু \(\to0\)), আর \(n=200\)-এ standardized ভুলের \(N(0,1)\)-থেকে KS মাত্র \(\mathbf{0.0180}\) (asymptotic normality, asymptotic sd \(=\lambda=2\))।

৮.২ মূল theorem/তথ্য (mini-list)।

  • Monte-Carlo standard error। একটা অনুপাত-অনুমানে (যেমন coverage \(p\)) \(\text{SE}=\sqrt{p(1-p)/D}\); একটা গড়-অনুমানে \(\text{SE}=s/\sqrt R\) — সিমুলেশনের নিজস্ব অনিশ্চয়তা, যা তাত্ত্বিক সংকেতের নিচে রাখতে হয়।
  • Berry–Esseen rate। iid, সসীম তৃতীয় moment ⇒ \(\sup_x\lvert F_n(x)-\Phi(x)\rvert\le C\rho/(\sigma^3\sqrt n)\), অর্থাৎ CLT-convergence \(\sim n^{-1/2}\); log-log slope \(\approx-0.5\)
  • percentile bootstrap CI। resample-distribution-এর \(2.5\)\(97.5\) percentile থেকে CI; consistent, কিন্তু skewed data-য় সসীম \(n\)-এ সামান্য under-cover করতে পারে।
  • bias–variance decomposition। একটা test-বিন্দুতে expected MSE \(=\text{Bias}^2+\text{Var}+\sigma^2\); \(\sigma^2\) irreducible, তাই কোনো model তার নিচে যেতে পারে না, আর total-error U-আকৃতির।
  • consistency ও asymptotic normality। নিয়মিত মডেলে MLE \(\widehat\theta\xrightarrow{p}\theta\) (RMSE \(\sim n^{-1/2}\)) এবং \(\sqrt n(\widehat\theta-\theta)\Rightarrow N(0,1/I(\theta))\); Exp-rate-এ \(I(\lambda)=1/\lambda^2\), তাই asymptotic sd \(=\lambda\)
  • canonical সংখ্যা। E1: KS-slope \(-0.4998\), \(C=0.1326\); E2: coverage \(0.9130\), MC-SE \(0.0063\), প্রস্থ \(0.5869\); E3: optimal degree \(5\), min total \(0.5784\), \(\sigma^2=0.4900\); E4: RMSE-slope \(-0.5570\), asymptotic sd \(2.0000\), KS \(0.0180\); seed default_rng(20260619)

৮.৩ সংযোগ — পেছনে ও সামনে।

  • ← 3.4 (Central Limit Theorem — এখন মাপা)। সেখানে CLT একটা স্বজ্ঞা/theorem ছিল; এখানে তার convergence rate সংখ্যায় মাপা হলো (E1, slope \(-0.4998\)) — "\(n=30\) যথেষ্ট" নিয়মের পেছনের \(n^{-1/2}\) হার Berry–Esseen-রূপে দৃশ্যমান।
  • ← 4.3 (Maximum Likelihood Estimation)। MLE-এর দুই মূল asymptotic ধর্ম — consistencyasymptotic normality — E4-এ সংখ্যায় দেখা গেল (\(\widehat\lambda=1/\bar X\)-এর RMSE \(\sim n^{-1/2}\), standardized ভুল \(\to N(0,1)\)), Fisher information \(I(\lambda)\) থেকে asymptotic sd সহ।
  • ← 4.9 (Bootstrap ও resampling)। bootstrap CI-এর যে coverage-গ্যারান্টি সেখানে দাবি করা হয়েছিল, E2 তাকে হাতে-কলমে verify করল (empirical \(0.9130\) বনাম nominal \(0.95\)) — পদ্ধতিটা কতটা নির্ভুল, তা সিমুলেশনেই ধরা পড়ে।
  • ← 6.1 (learning theory: bias–variance)। model-complexity বাড়ালে underfit→overfit-এর যে U-বক্ররেখা সেখানে তত্ত্বে এসেছিল, E3 তাকে polynomial regression-এ পুনরুৎপাদন করল (optimal degree ৫)।
  • ← 4.1 / 4.6 (sampling distributions ও confidence intervals)। চারটি পরীক্ষার প্রতিটিই আসলে একটা statistic-এর sampling distribution-কে বহু-replication-এ পুনর্গঠন করে (KS-দূরত্ব, coverage, bias/variance, standardized ভুল) — sampling-distribution ও CI-এর ভিত্তিধারণারই ব্যবহারিক প্রয়োগ।
  • → 8.3 (পরবর্তী capstone অধ্যায়)। simulation study যেমন নিজের নকশা-করা পরীক্ষায় তত্ত্ব verify করে, পরের ধাপ তেমনি একটা প্রকাশিত ফল/গবেষণাপত্রের পুনরুৎপাদন — বাইরের দাবিকে নিজের হাতে verify করে বিশ্বাসযোগ্যতা প্রতিষ্ঠা।

উৎস। এটি একটি capstone সংশ্লেষণ-অধ্যায়, তাই কোনো একক উৎস নয় — Part 0–VII-এ গড়া সরঞ্জাম এখানে একত্রে প্রয়োগ। সাধারণ পটভূমির জন্য: Wasserman, All of Statistics (Ch.8 bootstrap, Ch.9 parametric inference/MLE — asymptotic normality ও Fisher information; সিমুলেশন-ভিত্তিক verification-এর দৃষ্টিভঙ্গি); Efron & Tibshirani, An Introduction to the Bootstrap (percentile CI ও coverage-অধ্যয়নের নকশা); Rice, Mathematical Statistics and Data Analysis (Monte-Carlo standard error, sampling distribution ও CI-এর ব্যবহারিক উপস্থাপনা); bias–variance decomposition-এর জন্য Hastie–Tibshirani–Friedman, The Elements of Statistical Learning (Ch.7)।

এক বাক্যে। একটা simulation study হলো নকশা-করা Monte-Carlo পরীক্ষায় জানা ফল পুনরুৎপাদন করে তত্ত্ব ও pipeline একসাথে verify করা — চারটি পরীক্ষায় এখানে Berry–Esseen হার (slope \(-0.4998\)), bootstrap coverage (\(0.9130\)), bias–variance U-বক্ররেখা (optimal degree ৫) ও MLE-এর consistency+asymptotic normality (RMSE-slope \(-0.5570\), KS \(0.0180\)) সংখ্যায় ফিরে এসে scratch→PhD যাত্রার তত্ত্বকে হাতে-কলমে প্রমাণ করল।