পাঠ ১০ · ৩০-এর মধ্যে · মডিউল ২

Sampling ও Central Limit Theorem

Sampling techniques & CLT
৭ মিনিট পড়া শুরু · Beginner NumPy কোডসহ

এই পাঠে যা শিখবেন

  • Population, sample, parameter, statistic — বেসিক vocabulary
  • ৩টি sampling পদ্ধতি — কখন কোনটা, bias-variance trade-off
  • Sampling distribution — sample-এর "sample"
  • CLT — কেন statistical inference সম্ভব

১ · Population vs Sample

PopulationPopulationআমরা যাদের সম্পর্কে inference করতে চাই — পুরো গোষ্ঠী। প্রায়ই inaccessible (পুরো বাংলাদেশ-এর সব ভোটার)। প্যারামিটার (μ, σ) population-এর বৈশিষ্ট্য। = সম্পূর্ণ আগ্রহের গোষ্ঠী (যেমন: বাংলাদেশের সব Daraz user)। Sample = সেই population থেকে নেওয়া ছোট subset (১০০০ user)।

Parameter: population-এর true value (যেমন: $\mu$ = সব user-এর গড় order value)। জানা যায় না সাধারণত।
Statistic: sample থেকে গণনা (যেমন: $\bar{x}$ = sample-এর গড়)। parameter-এর estimate।

কেন sample?

১) Cost: পুরো population সবসময় access করা যায় না।
২) Time: ৫ কোটি user survey অসম্ভব।
৩) Sufficient: ভাল sample → population সম্পর্কে নির্ভরযোগ্য inference।

২ · Random sampling

Simple random samplingSimple Random Sampling (SRS)প্রতিটি unit-এর সমান probability of selection। Lottery-r মতো — তাত্ত্বিকভাবে আদর্শ। Practical-এ তালিকা প্রয়োজন।: প্রতিটি unit-এর সমান probability। Lottery-র মতো।

সুবিধা: Bias নেই; গাণিতিক treatment সহজ।
সমস্যা: Sub-group under-represent হতে পারে। Practical-এ পুরো তালিকা চাই।

উদাহরণ: Daraz-এর ৫ কোটি user থেকে ১০০০ random user বাছুন — তাদের satisfaction জিজ্ঞাসা করুন।

৩ · Stratified sampling

Stratified samplingStratified SamplingPopulation-কে homogeneous sub-group-এ ভাগ (strata) — প্রতিটি থেকে আলাদা random sample। Variance reduction-এর প্রধান উপায় যখন strata-এ outcome ভিন্ন।: population-কে আগে stratum-এ ভাগ — তারপর প্রতি stratum থেকে আনুপাতিক random sample।

উদাহরণ: বাংলাদেশের বিভাগ অনুযায়ী stratify — ঢাকা ৩০%, চট্টগ্রাম ২০%, রাজশাহী ১০%, ... — তারপর প্রতিটি থেকে proportional sample।

সুবিধা: প্রতিটি sub-group represent; variance কমে যায়।
সমস্যা: Stratum information আগে চাই।

৪ · Cluster sampling

Cluster (যেমন: এলাকা, স্কুল) random-ভাবে বাছুন — তারপর সেই cluster-এর সবাইকে নিন।

উদাহরণ: বাংলাদেশের ৬৪ জেলা থেকে ১০ জেলা random — সেই জেলার সব Pathao driver সমীক্ষা।

সুবিধা: Logistically সহজ। Field survey-এ cost-effective।
সমস্যা: একই cluster-এর সদস্যরা similar — variance বাড়ে। Design effect বিবেচনা করতে হয়।

Convenience sampling এড়িয়ে চলুন — "বন্ধুদের জিজ্ঞাসা", "আশেপাশের মানুষ" — এতে বিশাল selection bias। ১৯৩৬-এ Literary Digest poll Roosevelt-Landon-এ ১,০০,০০,০০০ sample দিয়েও ভুল predict — কারণ phone-owner ও magazine subscriber মধ্যবিত্ত ও উচ্চবিত্ত-দের overrepresented।

৫ · Sampling distribution

Sampling distributionSampling Distributionএকই process থেকে অনেকবার sample নিলে — sample statistic (যেমন: mean) যে distribution তৈরি করে। Inferential statistics-এর core concept। = একই size-এর অনেক sample নিলে — sample statistic-এর (mean, median) distribution।

উদাহরণ: Daraz population mean = ৫০০ BDT। আপনি ১০০-size-এর ১০০০টি sample নিলেন। প্রতিটি sample-এর mean ভিন্ন। সেই ১০০০টি mean-এর distribution = sampling distribution।

Standard error = sampling distribution-এর std। $\text{SE}(\bar{x}) = \sigma / \sqrt{n}$।

Sample যত বড়, SE তত ছোট — sample mean true mean-এর কাছাকাছি। কিন্তু $\sqrt{n}$ — তাই precision দ্বিগুণ করতে sample চারগুণ লাগে।

৬ · Central Limit Theorem (CLT)

Central Limit TheoremCentral Limit TheoremDe Moivre (১৭৩৩) ও Laplace (১৮১২)-এর কাজ; modern form Lyapunov (১৯০১)। Sample size যথেষ্ট হলে — sample mean approximately normal, যেকোনো source distribution থেকে।: যদি population-এর mean $\mu$ এবং finite variance $\sigma^2$ থাকে — sample size $n$ যথেষ্ট হলে:

$$\bar{X} \sim \mathcal{N}\left(\mu, \frac{\sigma^2}{n}\right) \quad \text{approximately}$$

মূল কথা: source distribution যাই হোক — exponential, log-normal, uniform, anything — sample mean-এর distribution normal-এর কাছাকাছি যাবে।

"যথেষ্ট n" কত?

  • Source close to normal → n = ১০-ই কাজ করে।
  • Mildly skewed → n = ৩০ enough।
  • Heavily skewed (income, click count) → n = ১০০-৩০০ লাগতে পারে।
  • Cauchy distribution-এ CLT কাজ করে না (no finite variance)।

৭ · CLT কেন এত গুরুত্বপূর্ণ

  • Confidence interval সম্ভব — sample mean-এর CI normal-ভিত্তিক।
  • t-test, ANOVA — সব sample mean-এর normality assume।
  • A/B test — conversion rate-এর difference normal হিসেবে ধরে।
  • Regression coefficient-এর CI।

একে বলা হয় "statistical theory-র crown jewel" — কারণ এটাই inference-কে সম্ভব করে।

Central Limit Theorem — যেকোনো source → sample mean normal Source population (skewed) income, latency Take many samples size n = 30, repeat 1000× sample₁: x̄ = 4.8 sample₂: x̄ = 5.2 sample₃: x̄ = 4.9 ⋮ sample₁₀₀₀: 5.1 Sampling distribution of x̄ ≈ Normal! centered at μ, SE = σ/√n এই magic-ই করে inference সম্ভব CI, t-test, regression — সব sample mean-এর normality-র উপর "যথেষ্ট" n: source-এর shape-এর উপর — সাধারণত ৩০+
CLT-র সারসংক্ষেপ — যেকোনো (finite-variance) population থেকে অনেক sample নিলে, sample mean-এর distribution normal-এর কাছে যায়। এটাই inferential statistics-এর ভিত্তি।

৮ · CLT সিমুলেশন (NumPy)

Python · NumPy
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(42)

# Skewed source: exponential distribution
population = np.random.exponential(scale=2.0, size=100_000)
mu = population.mean()

# Sample mean simulation
sample_size = 30
n_simulations = 5000
sample_means = np.array([
    np.random.choice(population, sample_size, replace=False).mean()
    for _ in range(n_simulations)
])

# Compare
fig, axes = plt.subplots(1, 2, figsize=(11, 4))
axes[0].hist(population, bins=60, color="#dc2626", alpha=0.6)
axes[0].set_title(f"Population (skewed) — μ={mu:.2f}")

axes[1].hist(sample_means, bins=40, color="#059669", alpha=0.6)
axes[1].axvline(mu, color="black", linestyle="--", label=f"μ={mu:.2f}")
axes[1].set_title(f"Sample means (n={sample_size}) — looks normal!")
axes[1].legend()
plt.tight_layout()
plt.show()

print(f"Population mean   : {mu:.3f}")
print(f"Sample-means mean : {sample_means.mean():.3f}")
print(f"Theoretical SE    : {population.std()/np.sqrt(sample_size):.3f}")
print(f"Empirical   SE    : {sample_means.std():.3f}")

    
Population heavily right-skewed (exponential)। কিন্তু sample mean (n=৩০) — বেল-শেপ। Theoretical ও empirical SE প্রায় একই। CLT কাজ করছে।

৯ · Stratified vs random — বাস্তব তুলনা

Python · pandas + NumPy
import numpy as np
import pandas as pd

np.random.seed(0)
# Population: ৩ বিভাগ — ভিন্ন গড় order value
df = pd.DataFrame({
    "div": np.repeat(["Dhaka","Ctg","Sylhet"], [6000, 3000, 1000]),
    "ord": np.concatenate([
        np.random.normal(800, 150, 6000),
        np.random.normal(500, 100, 3000),
        np.random.normal(400, 80, 1000),
    ])
})
true_mean = df["ord"].mean()

# Random sample
random_sample = df.sample(n=200, random_state=1)

# Stratified sample (proportional to division)
stratified = df.groupby("div", group_keys=False).apply(
    lambda g: g.sample(int(np.round(len(g)/len(df) * 200)), random_state=1)
)

print(f"True population mean   : {true_mean:.1f}")
print(f"Random sample   mean   : {random_sample['ord'].mean():.1f}")
print(f"Stratified      mean   : {stratified['ord'].mean():.1f}")

    
Stratified sample সাধারণত true mean-এর কাছে — কারণ division-অনুপাত সংরক্ষিত। বহুবার চালালে stratified-এর variance কম। এটাই national survey-তে ব্যবহৃত।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ আপনি ঢাকা শহরে Pathao satisfaction survey করতে চান। ১০০০ user-কে বাছবেন। Random, stratified, ও cluster — কোনটি কোন situation-এ সেরা? Trade-off কী?

এই বাছাইটি research design-এর core decision — এবং প্রায়ই survey-এর সফলতা/ব্যর্থতা এতে নির্ভর।

Simple Random:

  • Pathao-এর সমস্ত user-এর তালিকা থেকে ১০০০ randomly।
  • প্লাস: Bias-free (যদি list complete)। Mathematical treatment সহজ।
  • মাইনাস: Sub-group represent না হতে পারে (যেমন: রাত-শিফট driver, পুরান ঢাকার user)। সর্বশেষ — যদি ১০০ গ্রামাঞ্চল-active user থাকেন, random-এ ৫-১০ পেতে পারেন — যা নির্ভরযোগ্য না।

Stratified:

  • User-দের stratum-এ ভাগ করুন: bike-rider vs car, monthly active vs occasional, ঢাকা/চট্টগ্রাম। প্রতিটি stratum থেকে proportional।
  • প্লাস: প্রতিটি sub-group represent। Variance কম। Sub-group analysis (যেমন: "নতুন user কী বলে") পরিষ্কার।
  • মাইনাস: Stratum information আগে চাই। Stratum বাছাই itself a decision (geography? user-tier? ride-type?)।
  • সেরা যখন: Sub-group-এর মধ্যে outcome ভিন্ন হবে। যেমন: ride-type অনুসারে satisfaction different।

Cluster:

  • ৩০০ এলাকা থেকে ১০টি random — সেই এলাকার সব Pathao user।
  • প্লাস: Field operation cost কম (in-person interview)। Logistically simple।
  • মাইনাস: Cluster-এর মধ্যে correlation — design effect-এ effective sample size কম। Variance বেশি।
  • সেরা যখন: Field survey, সম্পূর্ণ list নেই, in-person data collection।

Pathao-specific recommendation:

  • App-based survey পাঠাবেন? — Stratified by user-tier ও ride-frequency।
  • Phone interview? — Random with quota।
  • In-person at hubs? — Cluster + random within cluster।
  • Multi-mode? — দু'টি combine — best practice।

Important caveats:

  • Non-response bias: যারা respond করেন, যারা করেন না — তারা ভিন্ন। Weighting ব্যবহার করুন।
  • Selection bias: শুধু active user থেকে → churn-cause miss।
  • Survivorship bias: যারা এখনো platform-এ আছেন — তারা ভিন্ন voice।

মূল উপলব্ধি: Sampling design — research-এর প্রথম এবং সবচেয়ে গুরুত্বপূর্ণ decision। ভুল sample বহু analysis fix করবে না।

প্র ০২ "Sample size $\sqrt{n}$-এ precision বাড়ে" — এর মানে কী? Confidence interval অর্ধেক করতে কত গুণ sample লাগে?

এই $\sqrt{n}$ rule statistics-এর সবচেয়ে important practical rule।

গাণিতিক ভিত্তি:

  • Standard Error = $\sigma / \sqrt{n}$।
  • ৯৫% CI = $\bar{x} \pm 1.96 \cdot \text{SE}$।
  • CI width $\propto 1/\sqrt{n}$।

সংখ্যায়:

  • n = ১০০ → SE = σ/১০।
  • n = ৪০০ → SE = σ/২০। (অর্ধেক)
  • n = ১৬০০ → SE = σ/৪০। (এক-চতুর্থাংশ)
  • n = ১০,০০০ → SE = σ/১০০। (দশ ভাগের এক)

Implications:

  • CI অর্ধেক করতে — sample চারগুণ চাই।
  • CI এক-তৃতীয়াংশ করতে — সাত-আট গুণ।
  • ৩ digit precision চাইলে — হাজার-হাজার sample।

Cost-benefit reality:

  • n = ৫০ → CI ±১০। Survey cost: ৫০,০০০ টাকা।
  • n = ২০০ → CI ±৫। Survey cost: ২,০০,০০০।
  • n = ৮০০ → CI ±২.৫। Survey cost: ৮,০০,০০০।
  • প্রতিটি precision doubling-এ cost ৪×।

"Diminishing returns"-এর কারণ:

  • প্রথম ১০০ sample অনেক information add করে।
  • পরবর্তী ১০০ কম। তার পরের ১০০ আরো কম।
  • n = ১০,০০০-এর বেশি — practical-এ rare cases ছাড়া অপ্রয়োজনীয়।

Practical guidance:

  • National poll: n ≈ ১০০০ → CI ±৩ percentage point।
  • A/B test: n ≈ ১০,০০০ per arm → 1% effect detectable।
  • Medical trial: n ≈ ৫০০ — কারণ effect বড় লক্ষ্য।

"Big data" misconception:

  • n = ১০ লাখ থাকলেও — যদি bias থাকে, precision বাড়লেও accuracy বাড়ে না।
  • Literary Digest poll (১৯৩৬) — ১০ মিলিয়ন sample, কিন্তু wrong winner predict।

মূল উপলব্ধি: $\sqrt{n}$ rule — sample size doubling বহুদূর নয়। Precision বনাম cost-এর ভারসাম্য survey design-এর core decision।

প্র ০৩ CLT কাজ করে "যেকোনো" distribution-এ — কিন্তু কিছু exception আছে। কোন সব distribution-এ CLT ভেঙে পড়ে এবং কেন?

CLT-র "যেকোনো" — actually finite-variance distribution। কিছু সাধারণ exception আছে।

(১) Cauchy distribution:

  • Heavy tail — variance অসীম।
  • Sample mean-এর distribution Cauchy-ই থাকে — কখনোই normal হয় না।
  • "কোনো central limit নেই" — n বাড়ালেও।
  • Practical-এ rare — finance-এর কিছু extreme model-এ।

(২) Power-law / Pareto (heavy tail):

  • City population, wealth, internet traffic — অনেক power-law follow।
  • α < 2 হলে variance অসীম — CLT applies না।
  • α > 2 হলে CLT কাজ করে কিন্তু খুব slow convergence — n = ১০,০০০-এও কাজ নাও করতে পারে।

(৩) Strongly correlated samples:

  • Time series, network data — independence ভঙ্গ।
  • Effective sample size আসল n-এর চেয়ে অনেক কম।
  • Block bootstrap বা GLS-এর মতো corrections দরকার।

(৪) Mixture distributions:

  • Bimodal বা multi-modal — যেমন: পুরুষ + নারী উচ্চতা mixed।
  • CLT কাজ করে কিন্তু sample mean-এর interpretation কঠিন।

(৫) Discrete with extreme imbalance:

  • Click rate ০.০১% হলে — n = ১০০-এ অধিকাংশ sample mean = ০।
  • Normal approximation ভাঙে — Poisson-ই বরং সঠিক।
  • Rule: $np \geq 10$ এবং $n(1-p) \geq 10$ — তবেই normal approximation।

(৬) Infinite-variance source:

  • Stable distributions ($\alpha < 2$) — Lévy stable।
  • Generalized CLT কাজ করে — কিন্তু limit Lévy stable, not normal।

কীভাবে detect:

  • Tail behavior দেখুন — log-log plot-এ straight line = power-law।
  • Sample mean বাড়ার সাথে stabilize হচ্ছে কি? — নয়তো heavy tail।
  • Sample variance n-এর সাথে stable হচ্ছে কি? — নয়তো infinite variance।

Bangladesh-এ relevant:

  • Wealth distribution — Pareto-এর কাছাকাছি, mean inadequate।
  • Daraz transaction — extreme event (১০ লাখ-এর order) heavy tail বাড়ায়।
  • Earthquake, flood — power-law।

মূল উপলব্ধি: CLT magical — but not universal। Heavy-tail data-এ alternative inference (median, bootstrap, robust statistics) দরকার।

প্র ০৪ আপনি Daraz-এ একটি ১০ লাখ user-এর dataset পেয়েছেন। মডেল train-এর জন্য কি পুরো ডেটা ব্যবহার করবেন, নাকি sample? কী trade-off?

এটি modern data science-এর একটি practical দ্বন্দ্ব — "big data" আছে বলে কি সব ব্যবহার করতে হবে?

পুরো ব্যবহারের সুবিধা:

  • Maximum statistical power — rare event detect সম্ভব।
  • Sub-group performance — ছোট group-ও sufficient sample।
  • Production deployment ready — distribution shift কম।

পুরো ব্যবহারের অসুবিধা:

  • Training time — ১০ লাখ row-এর XGBoost ৩-৪ ঘণ্টা; ১ লাখ-এ ৫ মিনিট।
  • Iteration speed — হঠাৎ feature engineering trial করা অসম্ভব।
  • Memory cost — RAM-এ fit না হতে পারে।
  • Compute cost — cloud bill।
  • Diminishing returns — ১ লাখ থেকে ১০ লাখে accuracy ০.৫% বাড়ে।

Sample-এ কখন:

  • Exploration phase — দ্রুত iterate।
  • Hyperparameter search — হাজার hyperparameter combo।
  • Prototype demo।
  • Resource constrained (free Colab)।

Best practice — phased approach:

  1. Phase 1 — Exploration (n = ১০-৫০ হাজার): Stratified random sample। Feature engineering, modeling experimentation।
  2. Phase 2 — Validation (n = ১-২ লাখ): পছন্দের approach refine।
  3. Phase 3 — Final training (full n বা ৫ লাখ): Production-ready model।

Sampling-এ সাবধানতা:

  • Stratified — class imbalance preserve।
  • Time-based — train past, validate future (no leakage)।
  • Group-based — same user-এর sample একই split-এ।

"More data > better model"-এর সত্য:

  • Halevy, Norvig, Pereira (২০০৯): "The Unreasonable Effectiveness of Data" — Google's discovery।
  • Simple models + huge data > complex models + small data — কখনো কখনো।
  • কিন্তু — একটি ৫% sample-এ যদি ৯৮% accuracy পাওয়া যায়, full data-এ ৯৮.৫% — extra ৯৫% data সবসময় worth না।

Modern reality — DL-এর exception:

  • Deep learning data-hungry — large scale benefits significantly।
  • LLM, vision model — billion-scale needed।
  • Tabular ML (Daraz-এর fraud detection) — মাঝারি scale-ই enough।

Pragmatic recommendation:

  • Tabular: ২ লাখ stratified sample → final ৫ লাখে train।
  • Image/text: চাইলে full ব্যবহার, কিন্তু validation set আলাদা।
  • Track learning curve — extra data-এ accuracy plateau হলে stop।

মূল উপলব্ধি: Big data-এর যুগেও sample-এর ভূমিকা আছে। Speed of iteration প্রায়ই accuracy-এর চেয়ে গুরুত্বপূর্ণ — সেটাই "ML productivity"।

অনুশীলন

  1. SE হিসাব: bKash transaction-এর σ = ১,০০০ BDT। আপনি n = ১০০ sample নিলে SE কত? n = ৪০০-এ কত? CI half করতে কত sample লাগবে?
    • n = ১০০ → SE = ১০০০/√১০০ = ১০০।
    • n = ৪০০ → SE = ১০০০/√৪০০ = ৫০।
    • CI half মানে SE half — n চারগুণ চাই (১০০ → ৪০০)।
  2. CLT সিমুলেশন: NumPy দিয়ে — uniform(0, 1) থেকে n=৫০ size-এর ১০০০ sample, প্রতিটির mean — histogram দেখুন।
    import numpy as np, matplotlib.pyplot as plt
    means = [np.random.uniform(0, 1, 50).mean() for _ in range(1000)]
    plt.hist(means, bins=40); plt.title("Sample means → bell shape"); plt.show()

    Uniform-এর mean ০.৫, std = √(1/12) ≈ ০.২৮৯ → SE ≈ ০.০৪১। Histogram normal-এর কাছাকাছি।

  3. ভাবুন: বাংলাদেশের ৬৪ জেলা থেকে education survey করতে হবে। Random vs stratified vs cluster — কোনটি বেছে নেবেন এবং কেন?

    সাধারণত stratified (বিভাগ অনুপাতে) + cluster (জেলার মধ্যে স্কুল)। Field cost কমে কিন্তু representation নিশ্চিত। প্র ০১-এ details।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

কোড রানার কাজ না করলে? ব্রাউজারে কাজ না করলে Google Colab ব্যবহার করুন — Google-এর ফ্রি অনলাইন Python পরিবেশ, শুধু Gmail অ্যাকাউন্ট লাগে।
পূর্ববর্তী পাঠ
পাঠ ০৯ · Distribution ও Normality