假設檢定¶
假設檢定是一個檢測我們對於母數假設的過程。
由於我們無法直接觀測到母體分配的母數,需要藉由抽樣獲得樣本,並藉由樣本去推論我們對於母數的假設是否正確。
假設檢定的流程大致如下
設立虛無、對立假設 (即是對於母數的假設)
使用樣本計算檢定統計量
決策是否拒絕虛無假設。
\(Z\) 檢定¶
假設我們今天有一筆隨機樣本 \(X_1, X_2, ..., X_n \overset{i.i.d.}{\sim} \mathcal{N}(\mu, \sigma^2)\) ,在母體變異數 \(\sigma^2\) 已知的情況下,我們想知道這組隨機樣本的母體平均 \(\mu\) 是否符合對立假設 \(H_a\) ,會將假設寫成這樣
再來我們會去計算在虛無假設下( \(\mu = \mu_0\) )的檢定統計量 \(Z\)
並檢測檢定統計量 \(Z\) 中的 \(\bar{X}\) 是否與虛無假設下的 \(\mu_0\) 有足夠大的差距
,使得檢定統計量的值落在拒絕域。
這種情況我們會說,在信心水準為 \(\alpha\) 之下,拒絕虛無假設。
下面會以一個例子搭配程式碼說明。
假設我們有一組隨機樣本 \(X_i \overset{i.i.d.}{\sim} \mathcal{N}(\mu, \sigma^2 = 36)\) 是我們從甲班抽出
16人中,每個人的成績。
我們想知道甲班的平均成績有沒有顯著的大於60分,我們會將假設寫為這樣
並計算檢定統計量 \(Z\)
並且去檢測檢定統計量是否有落在拒絕域(在信心水準為 \(\alpha\) 之下),來決策是否拒絕虛無假設。
落在拒絕域的意義是
\(Z > Z_\alpha\)
\(p\) 值要小於 \(\alpha\)
import numpy as np
import scipy.stats as stats
import plotly.graph_objects as go
# 設定已知參數
u_0 = 60
var = 36
n = 16
alpha = 0.05
# 拒絕域的臨界值
Z_reject = stats.norm.ppf(0.95)
# 假設甲班成績的平均數
X_bar = 63
# 計算檢定統計量Z
Z = (X_bar - u_0) / (np.sqrt(var / n))
# 產生資料
xs = np.linspace(-3, 3, 100)
ys = [stats.norm.pdf(x) for x in xs]
reject_xs = np.linspace(Z_reject, 3, 100)
reject_ys = [stats.norm.pdf(x) for x in reject_xs]
p_xs = np.linspace(Z, 3, 100)
p_ys = [stats.norm.pdf(x) for x in p_xs]
# 畫圖
fig = go.Figure(
data=[
go.Scatter(x=xs, y=ys, name='$\mathcal{N}(0, 1)$'),
go.Scatter(x=reject_xs, y=reject_ys, fill='tozeroy', name='拒絕域'),
go.Scatter(x=p_xs, y=p_ys, fill='tozeroy', name='p值'),
],
layout=go.Layout(title={'text': 'Z檢定'}),
)
fig.add_vline(
x=Z_reject,
annotation_text='臨界值',
)
fig.add_vline(
x=Z,
annotation_text='檢定統計量',
line_color='red',
annotation_font_color='red',
)
fig
我們可以看到檢定統計量 \(Z\),落在拒絕域,直觀意義是樣本的平均分數跟我們假設的母數有足夠大的差距
,因此我們可以拒絕虛無假設 \(H_0\) ,甲班的平均成績的確有顯著的大於60分。