統計 - 總體均值估計
總體 均值 是一個數值型總體變數的平均值。
置信區間用於 估計 總體均值。
估計總體均值
來自 樣本 的統計量用於估計總體引數。
引數最可能的值是 **點估計**。
此外,我們還可以計算估計引數的 **下界** 和 **上界**。
誤差範圍 是下界和上界與點估計之間的差值。
下界和上界共同定義了一個 **置信區間**。
計算置信區間
以下步驟用於計算置信區間
- 檢查條件
- 找到點估計
- 確定置信水平
- 計算誤差範圍
- 計算置信區間
例如
- 總體:諾貝爾獎得主
- 變數:獲得諾貝爾獎時的年齡
我們可以抽取一個樣本,並計算該樣本的均值和 標準差。
樣本資料用於估計 **所有** 諾貝爾獎獲得者的平均年齡。
透過隨機選擇 30 位諾貝爾獎獲得者,我們發現
樣本中的平均年齡是 62.1 歲
樣本中年齡的標準差是 13.46
根據這些資料,我們可以按照以下步驟計算置信區間。
1. 檢查條件
計算均值置信區間的條件是
- 樣本是隨機選擇的
- 並且滿足以下任一條件:
- 總體資料呈正態分佈
- 樣本量足夠大
通常,30 這樣的中等樣本量就足夠大了。
在此示例中,樣本量為 30 且是隨機抽取的,因此條件已滿足。
注意: 資料是否呈正態分佈可以透過專門的統計檢驗來檢查。
2. 查詢點估計
點估計是 樣本均值 (\(\bar{x}\))。
計算樣本均值的公式是將所有值 \(\sum x_{i}\) 的總和除以樣本大小 (\(n\))
\(\displaystyle \bar{x} = \frac{\sum x_{i}}{n}\)
在我們這個例子中,樣本中的平均年齡是 62.1 歲。
3. 確定置信水平
置信水平用百分比或十進位制數表示。
例如,如果置信水平是 95% 或 0.95
剩餘的機率 (\(\alpha\)) 是:5%,或 1 - 0.95 = 0.05。
常用的置信水平有
- 90%,\(\alpha\) = 0.1
- 95%,\(\alpha\) = 0.05
- 99%,\(\alpha\) = 0.01
注意: 95% 的置信水平意味著如果我們抽取 100 個不同的樣本併為每個樣本計算置信區間
真實的引數將在 100 個置信區間中的 95 個內。
我們使用 學生 t 分佈 來查詢置信區間的 **誤差範圍**。
t 分佈根據樣本大小透過“自由度”(df)進行調整。
自由度是樣本大小 (n) - 1,在這個例子中是 30 - 1 = 29
剩餘機率 (\(\alpha\)) 被分成兩半,一半在分佈的左尾區域,一半在右尾區域。
分隔尾部區域和中間區域的 t 值稱為 **臨界 t 值**。
以下是標準正態分佈的圖表,顯示了 29 個自由度 (df) 下不同置信水平的尾部區域 (\(\alpha\))。
4. 計算誤差範圍
誤差範圍是點估計與下界和上界之間的差值。
比例的誤差範圍 (\(E\)) 是透過 臨界 t 值 和 **標準誤差** 計算的。
\(\displaystyle E = t_{\alpha/2}(df) \cdot \frac{s}{\sqrt{n}} \)
臨界 t 值 \(t_{\alpha/2}(df) \) 是根據標準正態分佈和置信水平計算的。
標準誤差 \(\frac{s}{\sqrt{n}} \) 是根據樣本標準差 (\(s\)) 和樣本大小 (\(n\)) 計算的。
在我們這個例子中,樣本標準差 (\(s\)) 為 13.46,樣本大小為 30,標準誤差為
\(\displaystyle \frac{s}{\sqrt{n}} = \frac{13.46}{\sqrt{30}} \approx \frac{13.46}{5.477} = \underline{2.458}\)
如果我們選擇 95% 作為置信水平,則 \(\alpha\) 為 0.05。
所以我們需要找到臨界 t 值 \(t_{0.05/2}(29) = t_{0.025}(29)\)
臨界 t 值可以使用 t 表 或程式語言函式找到。
示例
使用 Python,可以使用 Scipy Stats 庫的 t.ppf()
函式找到 \(\alpha\)/2 = 0.025 和 29 個自由度的 t 值。
import scipy.stats as stats
print(stats.t.ppf(1-0.025, 29))
自己動手試一試 »
示例
使用任何一種方法,我們都可以找到臨界 t 值 \(t_{\alpha/2}(df)\) 約為 \(\underline{2.05} \)
標準誤差 \(\frac{s}{\sqrt{n}}\) 約為 \(\underline{2.458}\)
所以誤差範圍 (\(E\)) 是
\(\displaystyle E = t_{\alpha/2}(df) \cdot \frac{s}{\sqrt{n}} \approx 2.05 \cdot 2.458 = \underline{5.0389}\)
5. 計算置信區間
置信區間的下界和上界是透過將誤差範圍 (\(E\)) 從點估計 (\(\bar{x}\)) 中減去和加起來找到的。
在我們這個例子中,點估計是 0.2,誤差範圍是 0.143,那麼
下界是
\(\bar{x} - E = 62.1 - 5.0389 \approx \underline{57.06} \)
上界是
\(\bar{x} + E = 62.1 + 5.0389 \approx \underline{67.14} \)
置信區間是
\([57.06, 67.14]\)
我們可以總結置信區間為
諾貝爾獎獲得者平均年齡的 **95%** 置信區間在 **57.06 到 67.14 歲** 之間
使用程式設計計算置信區間
置信區間可以用許多程式語言計算。
對於大型資料集,使用軟體和程式設計計算統計量更為常見,因為手動計算會變得困難。
注意: 使用程式設計程式碼的結果將更準確,因為手工計算時會進行值舍入。
示例
使用 Python,可以使用 scipy 和 math 庫來計算估計比例的置信區間。
在這裡,樣本大小是 30,樣本均值是 62.1,樣本標準差是 13.46。
import scipy.stats as stats
import math
# 指定樣本均值 (x_bar),樣本標準差 (s),樣本大小 (n) 和置信水平
x_bar = 62.1
s = 13.46
n = 30
confidence_level = 0.95
# 計算 alpha,自由度 (df),臨界 t 值和誤差範圍
alpha = (1-confidence_level)
df = n - 1
standard_error = s/math.sqrt(n)
critical_t = stats.t.ppf(1-alpha/2, df)
margin_of_error = critical_t * standard_error
# 計算置信區間的下界和上界
lower_bound = x_bar - margin_of_error
upper_bound = x_bar + margin_of_error
# 列印結果
print("臨界 t 值: {:.3f}".format(critical_t))
print("誤差範圍: {:.3f}".format(margin_of_error))
print("置信區間: [{:.3f},{:.3f}]".format(lower_bound,upper_bound))
print("總體均值的 {:.1%} 置信區間是:".format(confidence_level))
print("介於 {:.3f} 和 {:.3f} 之間".format(lower_bound,upper_bound))
自己動手試一試 »
示例
R 可以使用內建的數學和統計函式來計算估計比例的置信區間。
在這裡,樣本大小是 30,樣本均值是 62.1,樣本標準差是 13.46。
# 指定樣本均值 (x_bar),樣本標準差 (s),樣本大小 (n) 和置信水平
x_bar = 62.1
s = 13.46
n = 30
confidence_level = 0.95
# 計算 alpha,自由度 (df),臨界 t 值和誤差範圍
alpha = (1-confidence_level)
df = n - 1
standard_error = s/sqrt(n)
critical_t = qt(1-alpha/2, 29)
margin_of_error = critical_t * standard_error
# 計算置信區間的下界和上界
lower_bound = x_bar - margin_of_error
upper_bound = x_bar + margin_of_error
# 列印結果
sprintf("臨界 t 值: %0.3f", critical_t)
sprintf("誤差範圍: %0.3f", margin_of_error)
sprintf("置信區間: [%0.3f,%0.3f]", lower_bound, upper_bound)
sprintf("總體均值的 %0.1f%% 置信區間是:", confidence_level*100)
sprintf("介於 %0.4f 和 %0.4f 之間", lower_bound, upper_bound)
自己動手試一試 »
注意: R 還有一個內建函式用於計算總體均值的置信區間。
示例
R 可以使用內建的 t.test()
函式來計算估計均值的置信區間。
在這裡,樣本是 30 個隨機生成的值,均值為 60,標準差為 12.5,使用 rnorm()
函式生成樣本。
# 指定樣本大小 (n) 和置信水平
n = 30
confidence_level = 0.95
# 設定隨機種子並生成均值為 60,標準差為 12.5 的樣本資料
set.seed(3)
sample <- rnorm(n, 60, 12.5)
# t.test 函式用於樣本資料,置信水平,並選擇 $conf.int 選項
t.test(sample, conf.level = confidence_level)$conf.int
自己動手試一試 »