單樣本t檢驗,Python代碼,R代碼


One Sample t-test

單樣本t檢驗用於檢測一個總體的均值\(\mu\)是否等於某個特定值。通常該總體均值\(\mu\),未知不易測量,我們通過抽樣得到樣本均數\(\bar{X}\)來代表總體均數\(\mu\)。通常抽樣存在一定誤差,不太可能等於總體均數\(\mu\),所以我們需要關注樣本均數\(\bar{X}\)與特定值之間的差異是否存在統計學意義。

案例

  1. 若我們想知道某地烏龜的平均重量是否等於310磅。這里該地烏龜平均重量是總體均值,而310磅是特定值。一個一個找出該地烏龜來測量,顯然不是很容易的事,所以我們可以進行隨機抽樣選擇部分烏龜來代表總體烏龜。然后通過統計檢驗來檢驗是否該地烏龜平均重量是否等於310磅。
  2. 若我們想盡快了解到長期從事鉛作業的男性工人血紅蛋白含量均數是否不等於正常男性血紅蛋白含量均數\(140g/L\)(一般該均數為理論值,標准值或經過大量觀察所得的穩定值),可以隨機抽樣選擇部分從事鉛作業工人的血紅蛋白含量樣本均數。然后通過統計檢驗來檢驗是否從事鉛作業的男性工人血紅蛋白含量均數是否不等於正常男性血紅蛋白含量均數\(140g/L\)

前提假設

為使單樣本t檢驗結果有效,需要滿足一些條件。

  1. 樣本之間相互獨立
  2. 當總體標准差\(\sigma\)未知,樣本含量\(n\)較小,比如小於60,50等。理論要求t-test樣本隨機取自正態分布的總體。
  3. 取樣樣本分布近似正態分布,可以通過創建直方圖來檢查其分布形狀是否大致像一個鍾形
  4. 樣本無異常值,可創建一個箱型圖來檢查

假設檢驗步驟

  1. 確定零假設:
    • \(H_{0}: \mu=\mu_{0}\), 假設總體均值\(\mu\)等於\(\mu_{0}\)
  2. 確定備擇假設,這里有3種假設方法,根據實際問題進行假設:
    • \(H_{1}: \mu\ne\mu_{0}\), 雙側檢驗,總體均值\(\mu\)不等於特定值\(\mu_{0}\)
    • \(H_{1}: \mu<\mu_{0}\), 雙側檢驗,總體均值\(\mu\)小於特定值\(\mu_{0}\)
    • \(H_{1}: \mu>\mu_{0}\), 雙側檢驗,總體均值\(\mu\)大於特定值\(\mu_{0}\)
  3. 計算檢驗統計量\(t\):
    \(t=\frac{(\bar{X}-\mu_{0})}{(S\sqrt{n})}\)
    其中:
    • \(\bar{x}\): 樣本均數
    • \(\mu_{0}\): 特定值
    • \(S\): 樣本均值
    • \(n\): 樣本大小
  4. 計算p-value:
    選擇一個顯著性水准\(\alpha\),(一般為0.01,0.05,0.1),然后根據\(\alpha\)和自由度\(df\)\((n-1)\),去找到相應的P-value。可以去查t界值表或者通過程序計算出來。

實例計算

以之前烏龜的那個案例為例,若隨機取樣選擇40個烏龜,其平均重量為\(\bar{X}=300\),標准差\(S=18.5\),則建立檢驗假設,確認檢驗水准\(\alpha\)

  • \(H_{0}: \mu=\mu_{0}=310\) ,即假設烏龜總體平均重量等於310磅
  • \(H_{1}: \mu\ne\mu_{0}=310\),即烏龜總體平均重量不等於310磅
  • \(\alpha=0.05\)
    計算t檢驗統計量:

\[t=\frac{(\bar{X}-\mu_{0})}{(S/\sqrt{n})}=\frac{300-310}{18.5/\sqrt{40}}=-3.4187 \]

\[df = n-1=40-1=39 \]

\(\nu=39、|t|=|-3.4817|=3.4817\) 查t界值表可知(若是通過程序T Score to P Value Calculator計算,可得出P=0.00149),\(3.4817 > t_{0.02/2, 39} > t_{0.05/2, 39}\), 可知\(P<0.02<0.05\), 故可以拒絕零假設\(H_{0}\),接受\(H_{1}\), 可認為該地烏龜的平均重量不等於310磅。

Python 代碼實現

一般常見的算法,都是有Python庫封裝好的了,我們直接調用它給的接口就行了。
這里借助一個Python科學計算庫 scipy, 一般可以通過命令pip install scipy安裝。

import scipy.stats as stats


## 數據就使用下面這個data,當作樣本,作為演示
## 分別為某種植物12株植物的高度,單位英寸。
data = [14, 14, 16, 13, 12, 17, 15, 14, 15, 13, 15, 14]
## 假設該種植物總體平均高度為15
popmean = 15

## 通過stats.ttest_1samp 進行單樣本t檢驗和P-value 計算
res = stats.ttest_1samp(a=data, popmean=15)
print("t statistic: ", res.statistic)
print("P Value: ", res.pvalue)
## output
## t statistic:  -1.6848470783484626
## P Value:  0.12014460742498101

結果說明:
\(H_{0}: \mu=15\) 假設該植物平均高度為15英寸
\(H_{1}: \mu\ne15\) 該植物平均高度不為15英寸
因為此次檢驗p-value(0.1201) 大於 \(\alpha=0.05\), 不能拒絕\(H_{0}\),所以沒有的證據說明該植物的平均高度不同於15英寸。

R代碼

t-test在R里使用t.test進行計算

> data <- c(14, 14, 16, 13, 12, 17, 15, 14, 15, 13, 15, 14)
> t.test(data, alternative = "two.sided", mu=15)

	One Sample t-test

data:  data
t = -1.6848, df = 11, p-value = 0.1201
alternative hypothesis: true mean is not equal to 15
95 percent confidence interval:
 13.46244 15.20423
sample estimates:
mean of x 
 14.33333 

t.test 中的參數alternative設置備擇假設的單雙尾檢驗,默認為"two.sided" ,雙尾檢驗,單位設置成"greater"或"less", 參數mu,假設的總體均值。結果和Python的一樣,甚至更詳細。

參考

One Sample t-test: Definition, Formula, and Example


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM