সমাধান — অধ্যায় ৪.৭ · Hypothesis Testing¶
অধ্যায় ফাইল:
part-4-inference/04-07-hypothesis-testing.md(§৭ অনুশীলনী)। সংখ্যাগত উত্তরnumpy/scipyদিয়ে যাচাইযোগ্য (seed উল্লেখ থাকলে reproducible)। মূল বস্তু — \(H_0\)/\(H_1\), test statistic \(T\), type I error \(\alpha=P(\text{reject}\mid H_0)\), type II error \(\beta=P(\text{fail to reject}\mid H_1)\), power \(=1-\beta\), p-value \(=P(\text{at least as extreme}\mid H_0)\), rejection region \(R\), এবং Neyman–Pearson optimality। z-test \(T=\frac{\bar x-\mu_0}{\sigma/\sqrt n}\) (\(\sigma\) জানা); t-test \(T=\frac{\bar x-\mu_0}{s/\sqrt n}\sim t_{n-1}\) (\(\sigma\) অজানা); proportion test \(T=\frac{\hat p-p_0}{\sqrt{p_0(1-p_0)/n}}\)। চলমান উদাহরণ: E1 z-test; E2 t-test; E3 proportion test; E4 Neyman–Pearson। (\(z_{0.05}=1.6449\), \(z_{0.025}=1.95996\approx1.96\), \(z_{0.005}=2.5758\)।)
ক · ধারণাগত (conceptual)¶
সমাধান ১ (★)¶
- null hypothesis \(H_0\) — "কিছু বদলায়নি"/status-quo দাবি, যা আমরা চ্যালেঞ্জ করছি (যেমন \(\mu=\mu_0\))। test-এর সব হিসাব \(H_0\) সত্যি ধরে শুরু হয়।
- alternative hypothesis \(H_1\) — গবেষণা-দাবি/বিকল্প, যা \(H_0\) ভুল হলে সত্যি (two-sided \(\mu\neq\mu_0\), বা one-sided \(\mu>\mu_0\)/\(\mu<\mu_0\))।
- test statistic \(T\) — data-কে একটা সংখ্যায় চাপানো হয়, যার null distribution জানা (যেমন \(z=\frac{\bar x-\mu_0}{\sigma/\sqrt n}\sim\mathcal{N}(0,1)\))। \(T\) মাপে data \(H_0\) থেকে কত দূরে।
- rejection region \(R\) — \(T\)-এর সেই মানগুলোর সেট যেখানে আমরা \(H_0\) বাতিল করি।
- significance level \(\alpha\) — type I error-এর ঊর্ধ্বসীমা: \(\alpha=P(T\in R\mid H_0)\), আগে থেকে বেছে নেওয়া (যেমন \(0.05\))।
- power — \(P(T\in R\mid H_1)=1-\beta\): সত্যিকারের effect থাকলে তা ধরতে পারার সম্ভাবনা।
right-tailed z-test, \(\alpha=0.05\): \(R=\{T>z_{0.05}\}=\{T>1.6449\}\) (stats.norm.ppf(0.95)=1.6449)। অর্থাৎ \(T\) যদি \(1.645\)-এর বড় হয়, \(H_0\) বাতিল — কারণ তখন nullের ডান লেজে মাত্র \(5\%\) ভর (Figure 1)।
সমাধান ২ (★★) — [p-value-এর সঠিক ব্যাখ্যা]¶
কেন বাক্যটা ভুল। p-value সংজ্ঞাগতভাবে \(H_0\) সত্যি ধরে (\(\mid H_0\)) হিসাব করা একটা tail-probability: \(p=P(T\text{ আরও চরম}\mid H_0)\)। শর্তটাই "\(H_0\) সত্যি" — তাই এটা কখনোই "\(H_0\) সত্যি হওয়ার সম্ভাবনা" হতে পারে না; দুটো যুক্তিগতভাবে উল্টো শর্তসাপেক্ষ (\(P(\text{data}\mid H_0)\) বনাম \(P(H_0\mid\text{data})\) — Bayes ছাড়া এদের সমান ধরা হলো base-rate fallacy)। তাছাড়া frequentist কাঠামোয় \(H_0\) একটা স্থির সত্য/মিথ্যা বিবৃতি, random নয় — তাই "\(P(H_0\text{ true})\)" সংজ্ঞায়িতই নয়; সেটা পেতে হলে prior সহ Bayesian posterior \(P(H_0\mid\text{data})\) লাগবে, যা সম্পূর্ণ ভিন্ন সংখ্যা।
সঠিক ব্যাখ্যা। \(p=0.03\) মানে: "যদি \(H_0\) সত্যি হতো, তাহলে আমরা যা দেখেছি তার চেয়ে অন্তত ততটা চরম একটা ফল পাওয়ার সম্ভাবনা মাত্র \(3\%\)।" অর্থাৎ data টা \(H_0\)-র অধীনে যথেষ্ট বিস্ময়কর — তাই \(\alpha=0.05\)-এ আমরা \(H_0\) বাতিল করি।
সত্য/মিথ্যা: - (i) "data দেখার পরে \(H_0\) সত্যি হওয়ার সম্ভাবনা" — মিথ্যা (এটা posterior \(P(H_0\mid\text{data})\), p-value নয়)। - (ii) "\(H_0\) সত্যি ধরে এত-বা-বেশি চরম ফল আসার সম্ভাবনা" — সত্য (এটাই সংজ্ঞা)। - (iii) "ভুল করে \(H_0\) বাতিল করার সম্ভাবনা" — মিথ্যা (সেটা \(\alpha\), আগে থেকে বাছা; p-value data-নির্ভর observed মান)। - (iv) "\(1-p=H_1\) সত্যি হওয়ার সম্ভাবনা" — মিথ্যা (একই ভুলের উল্টো রূপ; \(1-p\) কোনো hypothesis-এর সম্ভাবনা নয়)।
Figure-যুক্তি। Figure 2-এ p-value হলো null distribution-এর (নীল curve) নিচে \(t_{\text{obs}}\)-এর বাইরের লেজের ক্ষেত্রফল — সম্পূর্ণটাই "\(H_0\) সত্যি" এই জগতে আঁকা; \(H_0\)-কে কোনো probability দেওয়া হয়নি। ছোট p মানে \(t_{\text{obs}}\) null-এর কেন্দ্র থেকে দূরে (বিস্ময়কর), বেশি কিছু নয়।
সমাধান ৩ (★★)¶
medical screening উদাহরণ। \(H_0\): রোগী সুস্থ (রোগ নেই); \(H_1\): রোগ আছে। - type I error (\(\alpha\)) = false positive: \(H_0\) সত্যি (সত্যিই সুস্থ) তবু test "রোগ আছে" বলল — সুস্থ মানুষকে অযথা আতঙ্কিত করা, বাড়তি পরীক্ষা। - type II error (\(\beta\)) = false negative: \(H_1\) সত্যি (সত্যিই রোগ আছে) তবু test "নেই" বলল — রোগ ধরা পড়ল না, চিকিৎসা দেরি (প্রায়শই বেশি বিপজ্জনক)।
tradeoff (Figure 1)। test মানে অক্ষে একটা critical/cutoff দাগ। দাগটা ডানে সরালে (বাতিল করতে আরও কড়া প্রমাণ চাই): nullের লাল লেজ (\(\alpha\), false positive) কমে, কিন্তু \(H_1\)-distribution-এর বেগুনি অংশ (\(\beta\), false negative) বাড়ে। বাঁয়ে সরালে উল্টো। একই \(n\)-এ তাই দুটো একসাথে কমানো অসম্ভব — দুই distribution-এর overlap যতক্ষণ আছে, একটা কমালে অন্যটা বাড়বেই।
দুটোই কমানোর উপায়: \(n\) বাড়ানো। বেশি data ⇒ ছোট \(\mathrm{SE}\) ⇒ দুই distribution কম overlap করে (আরও দূরে দূরে, সরু) ⇒ একই \(\alpha\) রেখেও \(\beta\) কমে (power বাড়ে, Figure 3)। অর্থাৎ tradeoff ভাঙার একমাত্র দরজা বেশি নমুনা (বা বড় effect/কম noise)।
সমাধান ৪ (★★)¶
"significant নয়" ≠ "\(H_0\) সত্যি/প্রমাণিত"। test কখনো \(H_0\) প্রমাণ করে না; "fail to reject" মানে শুধু "\(H_0\) বাতিল করার যথেষ্ট প্রমাণ এই data-তে পাইনি"। কারণ ফল non-significant হওয়ার দুটো কারণ থাকতে পারে: (১) সত্যিই কোনো effect নেই, অথবা (২) effect আছে কিন্তু test-এর power কম ছিল, তাই ধরা পড়েনি।
Figure 3 (power curve)। ছোট \(n\)-এর ধূসর-ছিন্ন curve অনেক নিচু — তাই একটা মাঝারি true effect (\(d=0.5\)) থাকলেও সেই test হয়তো \(40\)–\(50\%\) সময় তা ফসকাবে (fail to reject), অথচ effect বাস্তব। অর্থাৎ non-significant ফল হয়তো নিছক power-ঘাটতির ফসল, \(H_0\)-এর সত্যতা নয়। এটাই "absence of evidence is not evidence of absence" — প্রমাণ না পাওয়া আর প্রমাণ-নেই-এর-প্রমাণ এক নয়। (\(H_0\)-এর পক্ষে কিছু বলতে হলে CI দেখা ভালো: CI সরু হয়ে \(0\)-এর কাছে থাকলে effect ছোট, কিন্তু CI চওড়া হলে test ছিল অমীমাংসক।)
statistical বনাম practical significance। বিশাল \(n\)-এ \(\mathrm{SE}\) এত ছোট হয় যে একটা তুচ্ছ effect-ও (যেমন গড় ওজন \(0.01\) গ্রাম বেশি) statistically significant হয়ে যায় (\(p\) খুব ছোট, \(T\) বড়) — অথচ effect-টা ব্যবহারিকভাবে অর্থহীন। উল্টোদিকে একটা বড়, গুরুত্বপূর্ণ effect ছোট নমুনায় non-significant থাকতে পারে। তাই শুধু \(p\) নয়, effect size ও confidence interval দেখা জরুরি: \(p\) বলে "effect আছে কি না (signal/noise)", কিন্তু "effect কত বড় ও কি তা গুরুত্বপূর্ণ" — সেটা effect size/CI বলে।
খ · গাণনিক (computational)¶
সমাধান ৫ (★) — E1 (z-test)¶
দেওয়া: \(\mu_0=500\), \(\sigma=4\) (জানা), \(n=16\), \(\bar x=502.5\), two-sided \(\alpha=0.05\)।
(ক) test statistic: $$ \mathrm{SE}=\frac{\sigma}{\sqrt n}=\frac{4}{\sqrt{16}}=1,\qquad z=\frac{\bar x-\mu_0}{\mathrm{SE}}=\frac{502.5-500}{1}=\boxed{2.5}. $$
(খ) সিদ্ধান্ত: two-sided critical value \(z_{0.025}=1.96\)। যেহেতু \(\lvert z\rvert=2.5>1.96\), \(z\) rejection region-এ পড়ে — reject \(H_0\)। অর্থাৎ গড় ওজন \(500\) গ্রাম-এর দাবির বিরুদ্ধে যথেষ্ট প্রমাণ আছে।
(গ) p-value (two-sided):
$$
p=2\,P(Z>2.5)=2\times0.00621=\boxed{0.0124}.
$$
\(p=0.0124<0.05\) — (খ)-এর সিদ্ধান্তের সাথে সঙ্গতিপূর্ণ। (2*(1-stats.norm.cdf(2.5))=0.01242)
সমাধান ৬ (★★) — E2 (t-test)¶
দেওয়া: \(\mu_0=0\), \(\sigma\) অজানা, \(n=10\), \(\bar x=6\), \(s=8\), right-tailed \(\alpha=0.05\)।
(ক) test statistic: $$ \mathrm{SE}=\frac{s}{\sqrt n}=\frac{8}{\sqrt{10}}=2.5298,\qquad t=\frac{\bar x-\mu_0}{\mathrm{SE}}=\frac{6-0}{2.5298}=\boxed{2.372}. $$
(খ) সিদ্ধান্ত: right-tailed critical \(t_{9,\,0.05}=1.833\)। যেহেতু \(t=2.372>1.833\) — reject \(H_0\)। নতুন পদ্ধতি গড় উন্নতি \(>0\)-এর পক্ষে প্রমাণ আছে। (p-value \(=P(T_9>2.372)=0.0210\)।)
(গ) z হলে কি বদলাত। z-test হলে critical \(z_{0.05}=1.645\) ব্যবহার করত — \(2.372>1.645\), তাই সিদ্ধান্ত (এখানে) একই থাকত, এমনকি আরও সহজে reject হতো। কিন্তু z সঠিক নয়: \(\sigma\) অজানা বলে আমরা \(s\) দিয়ে আঁচ করছি, আর ছোট \(n\)-এ \(s\) নিজেই ওঠানামা করে — তাই \(T\)-এর সত্যিকারের null distribution \(t_9\) (মোটা লেজ), \(\mathcal{N}(0,1)\) নয়। z-critical (\(1.645\)) \(t\)-critical (\(1.833\))-এর চেয়ে ছোট, তাই z-নিয়ম প্রকৃত type I error-কে \(0.05\)-এর বেশি করে ফেলে (inflated; §৭ Q14)। তাই \(\sigma\) অজানা ও ছোট \(n\)-এ t ব্যবহার করতেই হবে।
সমাধান ৭ (★★) — E3 (proportion test)¶
দেওয়া: \(p_0=0.20\), \(n=500\), \(x=120\) ক্লিক, \(\hat p=120/500=0.24\), right-tailed \(\alpha=0.05\)।
(ক) test statistic (null-এর \(\mathrm{SE}\)-তে \(p_0\) ব্যবহার, \(\hat p\) নয়): $$ \mathrm{SE}_0=\sqrt{\frac{p_0(1-p_0)}{n}}=\sqrt{\frac{0.20\times0.80}{500}}=\sqrt{0.00032}=0.017889, $$ $$ z=\frac{\hat p-p_0}{\mathrm{SE}_0}=\frac{0.24-0.20}{0.017889}=\boxed{2.236}. $$
(খ) সিদ্ধান্ত: critical \(z_{0.05}=1.645\)। \(2.236>1.645\) — reject \(H_0\)। নতুন ডিজাইন click-rate বাড়িয়েছে, এর পক্ষে প্রমাণ আছে।
(গ) p-value: \(p=P(Z>2.236)=\boxed{0.0127}<0.05\) — সঙ্গতিপূর্ণ।
কেন null-এ \(p_0\), \(\hat p\) নয়: test statistic-এর distribution \(H_0\) সত্যি ধরে (\(p=p_0\)) বের করতে হয়, তাই variance \(p_0(1-p_0)/n\) — \(\hat p(1-\hat p)/n\) নয় (ওটা CI-তে, 4.6)। এটাই testing ও CI-এর একটা সূক্ষ্ম পার্থক্য: test null-এর অধীনে, CI estimate-এর অধীনে \(\mathrm{SE}\) মাপে।
সমাধান ৮ (★★) — power হিসাব¶
দেওয়া: z-test, \(\sigma=4\), \(n=16\) (\(\mathrm{SE}=1\)), two-sided \(\alpha=0.05\), সত্যি \(\mu_1=502\), \(\mu_0=500\)।
two-sided test-এর rejection হয় \(\bar X<500-1.96\) বা \(\bar X>500+1.96\), অর্থাৎ \(\bar X<498.04\) বা \(\bar X>501.96\)। যেহেতু সত্য \(\mu_1=502>\mu_0\), প্রায় সব power আসে ডান প্রান্ত থেকে (বাঁ লেজের অবদান নগণ্য)। তাই $$ \text{power}\approx P(\bar X>501.96\mid\mu=502)=P!\left(Z>\frac{501.96-502}{1}\right)=P(Z>-0.04). $$ $$ P(Z>-0.04)=\Phi(0.04)=\boxed{0.516}. $$ (ডান-লেজ approximation; বাঁ লেজ \(P(\bar X<498.04\mid\mu=502)\approx P(Z<-3.96)\approx0.00004\) — উপেক্ষণীয়। তাই সঠিক power \(\approx0.516\)।)
ব্যাখ্যা: এই effect (\(\mu_1-\mu_0=2=2\,\mathrm{SE}\)) ও \(n=16\)-এ test প্রায় অর্ধেক সময় \(H_0\) বাতিল করবে — power মাত্র \(0.52\), যা \(0.80\)-এর লক্ষ্যের নিচে। power বাড়াতে \(n\) বাড়াতে হবে (Figure 3): \(n\) চারগুণ করলে \(\mathrm{SE}\) অর্ধেক, ডান-প্রান্ত effect দ্বিগুণ \(\mathrm{SE}\) দূরে সরে, power অনেক বেড়ে যায়।
গ · প্রমাণভিত্তিক (proof-based)¶
সমাধান ৯ (★★) — CI ↔ test দ্বৈততা¶
\(X_1,\dots,X_n\overset{iid}{\sim}\mathcal{N}(\mu,\sigma^2)\), \(\sigma\) জানা; \(\bar X\sim\mathcal{N}(\mu,\sigma^2/n)\)।
two-sided z-test (level \(\alpha\)): \(H_0:\mu=\mu_0\) বাতিল হয় যখন $$ \lvert T\rvert>z_{\alpha/2},\qquad T=\frac{\bar X-\mu_0}{\sigma/\sqrt n}. $$ ধাপে ধাপে অসমতা খুলি: $$ \left\lvert\frac{\bar X-\mu_0}{\sigma/\sqrt n}\right\rvert>z_{\alpha/2} \iff \lvert\bar X-\mu_0\rvert>z_{\alpha/2}\,\frac{\sigma}{\sqrt n}. $$ এটা ভাঙলে: $$ \bar X-\mu_0>z_{\alpha/2}\frac{\sigma}{\sqrt n}\quad\text{অথবা}\quad \bar X-\mu_0<-z_{\alpha/2}\frac{\sigma}{\sqrt n}, $$ অর্থাৎ $$ \mu_0<\bar X-z_{\alpha/2}\frac{\sigma}{\sqrt n}\quad\text{অথবা}\quad \mu_0>\bar X+z_{\alpha/2}\frac{\sigma}{\sqrt n}. $$ ডান পাশের দুটো শর্ত মিলে ঠিক বলছে: \(\mu_0\notin\Big[\bar X-z_{\alpha/2}\frac{\sigma}{\sqrt n},\ \bar X+z_{\alpha/2}\frac{\sigma}{\sqrt n}\Big]\), যা হলো সেই \((1-\alpha)\) z-CI। তাই $$ \text{test reject করে }H_0:\mu=\mu_0 \iff \mu_0\notin(1-\alpha)\text{ CI}. $$ সমতুল্যভাবে, \((1-\alpha)\) CI \(=\{\mu_0:\text{level-}\alpha\text{ test }H_0:\mu=\mu_0\text{ বাতিল করে না}\}\) — অর্থাৎ CI হলো ঠিক সেই null-মানগুলোর সংগ্রহ যেগুলো test-এ টিকে যায় (Figure 4)। \(\blacksquare\)
সমাধান ১০ (★★) — p-value-এর null distribution¶
ধরা যাক right-tailed test, continuous statistic \(T\) যার null CDF \(F_0\) (কঠোরভাবে বর্ধমান ও continuous)। তখন p-value $$ P=1-F_0(T). $$ probability integral transform: যেকোনো continuous random variable \(T\)-এর জন্য \(U:=F_0(T)\sim\text{Uniform}(0,1)\) যখন \(T\sim F_0\) (অর্থাৎ \(H_0\) সত্যি)। প্রমাণ: \(u\in(0,1)\)-এর জন্য $$ P(U\le u)=P(F_0(T)\le u)=P(T\le F_0^{-1}(u))=F_0\big(F_0^{-1}(u)\big)=u, $$ যা ঠিক \(\text{Uniform}(0,1)\)-এর CDF। যেহেতু \(U\sim\text{Uniform}(0,1)\), তেমনি \(P=1-U\)-ও \(\text{Uniform}(0,1)\) (uniform-এর প্রতিফলন আবার uniform)।
ফল — কেন \(p\le\alpha\) নিয়ম ঠিক \(\alpha\) দেয়: \(H_0\) সত্যি হলে \(P\sim\text{Uniform}(0,1)\), তাই $$ P(\text{reject}\mid H_0)=P(P\le\alpha\mid H_0)=\alpha $$ (uniform-এর CDF \(u\mapsto u\) থেকে সরাসরি)। অর্থাৎ "\(p\le\alpha\) হলে reject" নিয়মটা ঠিক \(\alpha\)-মাত্রার type I error দেয় — significance level-এর সংজ্ঞা পূরণ হয়। (এটাই কেন p-value scale-টা সর্বজনীন: যেকোনো test-এ null-এ p uniform, তাই threshold \(\alpha\)-এর মানে সব test-এ একই।) \(\blacksquare\)
সমাধান ১১ (★★★) — E4 (Neyman–Pearson lemma)¶
simple-vs-simple: \(H_0:\theta=\theta_0\) বনাম \(H_1:\theta=\theta_1\); likelihood \(L(\theta)=\prod_i f(x_i;\theta)\)।
(ক) NP rejection region। Neyman–Pearson lemma বলে: সব level-\(\alpha\) test-এর মধ্যে সর্বোচ্চ power (\(H_1\)-এ) দেয় সেই test যার rejection region হলো একটা likelihood-ratio threshold: $$ R=\left{x:\ \Lambda(x)=\frac{L(\theta_1)}{L(\theta_0)}>k\right}, $$ যেখানে ধ্রুবক \(k\ge0\) ঠিক হয় size condition থেকে: $$ P_{\theta_0}\big(\Lambda(X)>k\big)=\alpha. $$ স্বজ্ঞা: \(\Lambda\) বড় মানে data \(\theta_1\)-এর অধীনে \(\theta_0\)-এর তুলনায় অনেক বেশি সম্ভাব্য — তাই সেই সব \(x\)-ই \(H_0\) বাতিলের সবচেয়ে শক্ত প্রমাণ, আর "সবচেয়ে বেশি প্রমাণওয়ালা \(x\)"-গুলোকে \(R\)-এ ভরলে নির্দিষ্ট \(\alpha\)-বাজেটে সর্বোচ্চ power মেলে।
(খ) Normal ক্ষেত্রে \(\Lambda>k\iff\bar x>c\)। ধরা যাক \(f(x;\theta)=\mathcal{N}(\theta,1)\), \(\theta_1>\theta_0\)। তখন $$ \log\Lambda=\log\frac{L(\theta_1)}{L(\theta_0)} =\sum_{i=1}^n\Big[-\tfrac12(x_i-\theta_1)^2+\tfrac12(x_i-\theta_0)^2\Big] =\sum_{i=1}^n\Big[(\theta_1-\theta_0)x_i-\tfrac12(\theta_1^2-\theta_0^2)\Big]. $$ সরল করে: $$ \log\Lambda=(\theta_1-\theta_0)\sum_i x_i-\tfrac n2(\theta_1^2-\theta_0^2) =n(\theta_1-\theta_0)\,\bar x-\tfrac n2(\theta_1^2-\theta_0^2). $$ যেহেতু \(\theta_1-\theta_0>0\), \(\log\Lambda\) হলো \(\bar x\)-এর কঠোরভাবে বর্ধমান (monotone increasing) ফাংশন। তাই $$ \Lambda>k\iff\log\Lambda>\log k\iff\bar x>c,\quad\text{যেখানে}\quad c=\frac{\log k+\tfrac n2(\theta_1^2-\theta_0^2)}{n(\theta_1-\theta_0)}. $$ size condition \(P_{\theta_0}(\bar X>c)=\alpha\) থেকে \(c=\theta_0+z_\alpha\,\tfrac{1}{\sqrt n}\) — অর্থাৎ NP-optimal test ঠিক স্বাভাবিক right-tailed z-test (\(\bar X>\theta_0+z_\alpha/\sqrt n\) হলে reject)। \(\blacksquare\)
(গ) power-ধারণার সাথে সংযোগ। §১–৫-এ power \(=1-\beta=P(\text{reject}\mid H_1)\) সংজ্ঞায়িত হয়েছিল, আর Figure 3-এ দেখানো হয়েছিল power কীভাবে বদলায়। NP lemma এই ছবিতে একটা optimality স্তর যোগ করে: প্রদত্ত \(\alpha\)-তে, আর কোনো level-\(\alpha\) test এই LRT-এর চেয়ে বেশি power দিতে পারে না — অর্থাৎ এটা Figure 3-এর সর্বোচ্চ সম্ভাব্য power curve অর্জন করে। তাই normal mean-এ z-test শুধু গণনায় সুবিধাজনক নয়, NP অর্থে most powerful — এই উপলব্ধিই 4.8-এর general likelihood-ratio test-এর ভিত্তি, যেখানে composite hypothesis-এও একই \(\Lambda\)-ধারণা সাধারণীকৃত হবে।
ঘ · কোডিং (coding)¶
সমাধান ১২ (★★) — type I error simulation¶
import numpy as np
from scipy import stats
rng = np.random.default_rng(0)
mu0, sigma, n, R = 0.0, 1.0, 30, 10000
zc = stats.norm.ppf(0.975) # two-sided, alpha = 0.05
X = rng.normal(mu0, sigma, size=(R, n)) # H0 is TRUE (data from mu0)
z = (X.mean(axis=1) - mu0) / (sigma / np.sqrt(n))
reject = np.abs(z) > zc
print("empirical type I error:", reject.mean()) # ~ 0.05
empirical type I error: 0.0501 (run-ভেদে ~\(0.047\)–\(0.053\))।
ব্যাখ্যা। data পুরোটাই \(H_0\) (\(\mu=\mu_0=0\)) থেকে আসছে, তাই প্রতিটি reject-ই একটা type I error। হার \(\approx0.05=\alpha\) — ঠিক significance level-এর সংজ্ঞা অভিজ্ঞতায় মিলল (\(P(\text{reject}\mid H_0)=\alpha\))। অর্থাৎ test "ঠিকঠাক calibrated"। (এটাই §৭ Q10-এর তাত্ত্বিক ফলের simulation-রূপ।)
সমাধান ১৩ (★★) — power ও p-value distribution¶
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
rng = np.random.default_rng(1)
sigma, n, R = 1.0, 30, 10000
zc = stats.norm.ppf(0.975)
# (a) power at mu = 0.5 (H1 true, effect d = 0.5)
Xa = rng.normal(0.5, sigma, size=(R, n))
za = (Xa.mean(axis=1) - 0.0) / (sigma / np.sqrt(n)) # test H0: mu = 0
power = (np.abs(za) > zc).mean()
print("empirical power (mu=0.5, n=30):", power) # ~ 0.75
# (b) p-value distribution under H0 (mu = 0) -> Uniform(0,1)
X0 = rng.normal(0.0, sigma, size=(R, n))
z0 = (X0.mean(axis=1) - 0.0) / (sigma / np.sqrt(n))
p = 2 * (1 - stats.norm.cdf(np.abs(z0)))
print("P(p <= 0.05) under H0:", (p <= 0.05).mean()) # ~ 0.05
plt.hist(p, bins=20, edgecolor="white"); plt.xlabel("p-value"); plt.ylabel("count")
plt.title("p-values under H0 are ~Uniform(0,1)"); plt.show()
empirical power (mu=0.5, n=30): ~0.752; P(p <= 0.05) under H0: ~0.050।
ব্যাখ্যা। (ক) effect \(d=0.5\), \(n=30\)-এ noncentrality \(=d\sqrt n=0.5\times\sqrt{30}=2.74\); তাত্ত্বিক power \(\approx1-\Phi(1.96-2.74)+\Phi(-1.96-2.74)\approx\Phi(0.78)\approx0.78\) (run-ভেদে ~\(0.75\)) — simulation মিলে যায় (cf. প্রশ্ন ৮-এর হাতে-হিসাব পদ্ধতি)। (খ) \(H_0\) সত্যি হলে p-value-এর histogram প্রায় সমতল (uniform) — §৭ Q10-এর তাত্ত্বিক ফল (\(p\sim\text{Uniform}(0,1)\) under \(H_0\)); ফলে \(P(p\le0.05)\approx0.05\), যা আবার type I error \(=\alpha\) নিশ্চিত করে।
সমাধান ১৪ (★★★) — t বনাম z, ছোট \(n\)-এ type I error¶
import numpy as np
from scipy import stats
rng = np.random.default_rng(2)
n, R = 5, 10000
X = rng.normal(0.0, 1.0, size=(R, n)) # H0: mu = 0 is TRUE, sigma unknown
s = X.std(axis=1, ddof=1) # estimate sigma by s
T = X.mean(axis=1) / (s / np.sqrt(n)) # studentized statistic
# (a) WRONG: use normal critical value 1.96
z_typeI = (np.abs(T) > 1.96).mean()
# (b) CORRECT: use t critical value t_{4, 0.025}
tc = stats.t.ppf(0.975, df=n - 1) # = 2.7764
t_typeI = (np.abs(T) > tc).mean()
print("z-rule (1.96) empirical type I error:", z_typeI) # ~ 0.07-0.08 (inflated!)
print("t-rule (%.3f) empirical type I error:" % tc, t_typeI) # ~ 0.05 (correct)
z-rule (1.96): ~0.075; t-rule (2.776): ~0.050।
ব্যাখ্যা। \(\sigma\) অজানা ও ছোট \(n=5\)-এ, statistic \(T=\bar X/(s/\sqrt n)\)-এর সত্যিকারের null distribution হলো \(t_4\), \(\mathcal{N}(0,1)\) নয় — \(t_4\)-এর লেজ মোটা, কারণ \(s\) মাঝে মাঝে \(\sigma\)-কে কম-আঁচ করে \(T\)-কে স্ফীত করে। তাই normal critical \(1.96\) ব্যবহার করলে প্রকৃত type I error \(0.05\) ছাড়িয়ে যায় (\(\approx0.075\), inflated) — test ভুলভাবে বেশি reject করে। সঠিক \(t\)-critical \(2.776\) এই মোটা লেজ সামলায়, ফলে type I error ঠিক \(\approx0.05\)-এ ফেরে। শিক্ষা: \(\sigma\) অজানা ও ছোট \(n\)-এ z নয়, t-test — নইলে \(\alpha\) নিয়ন্ত্রণ হারায় (Figure 1-এর লাল region ফুলে যায়; cf. §৭ Q6)। \(n\) বড় হলে \(t_{n-1}\to\mathcal{N}(0,1)\), তখন পার্থক্য মিলিয়ে যায়।
সারকথা। z/t/proportion test একই কাঠামো: একটা \(T\) যার null distribution জানা, একটা \(\alpha\)-নিয়ন্ত্রিত rejection region, আর দুই-error tradeoff। p-value হলো null-এর অধীনে observed-এর tail-area (কখনোই \(P(H_0\text{ true})\) নয়)। power \(=1-\beta\) effect ও \(n\)-এ ওঠে, আর Neyman–Pearson দেখায় normal-এ z-test most powerful। CI ↔ test দ্বৈততা (§৭ Q9) এই অধ্যায়কে 4.6-এর সাথে এক সুতোয় বাঁধে — পরের অধ্যায় (4.8) এই LRT-ধারণাকে likelihood থেকে general test-এ (Wald/score) সাধারণীকৃত করবে।