ttest_ind_from_stats#
- scipy.stats.ttest_ind_from_stats(mean1, std1, nobs1, mean2, std2, nobs2, equal_var=True, alternative='two-sided')[原始碼]#
從描述統計量檢定兩個獨立樣本平均數的 T 檢定。
此檢定用於檢驗兩個獨立樣本是否具有相同的平均(期望)值的虛無假設。
- 參數:
- mean1array_like
樣本 1 的平均數。
- std1array_like
樣本 1 的校正樣本標準差 (即
ddof=1
)。- nobs1array_like
樣本 1 的觀測值數量。
- mean2array_like
樣本 2 的平均數。
- std2array_like
樣本 2 的校正樣本標準差 (即
ddof=1
)。- nobs2array_like
樣本 2 的觀測值數量。
- equal_varbool, optional
若為 True(預設值),則執行標準獨立雙樣本檢定,假設母體變異數相等 [1]。若為 False,則執行 Welch’s t 檢定,不假設母體變異數相等 [2]。
- alternative{‘two-sided’, ‘less’, ‘greater’}, optional
定義對立假設。以下選項可用(預設為 ‘two-sided’)
‘two-sided’:分佈的平均數不相等。
‘less’:第一個分佈的平均數小於第二個分佈的平均數。
‘greater’:第一個分佈的平均數大於第二個分佈的平均數。
在版本 1.6.0 中新增。
- 回傳值:
- statisticfloat 或 array
計算出的 t 統計量。
- pvaluefloat 或 array
雙尾 p 值。
註解
統計量計算為
(mean1 - mean2)/se
,其中se
是標準誤。因此,當 mean1 大於 mean2 時,統計量將為正值;當 mean1 小於 mean2 時,統計量將為負值。此方法不會檢查 std1 或 std2 的任何元素是否為負數。如果在呼叫此方法時,std1 或 std2 參數的任何元素為負數,則此方法將傳回與傳遞
numpy.abs(std1)
和numpy.abs(std2)
時相同的結果;不會發出例外或警告。參考文獻
範例
假設我們有兩個樣本的摘要資料如下(其中樣本變異數為校正後的樣本變異數)
Sample Sample Size Mean Variance Sample 1 13 15.0 87.5 Sample 2 11 12.0 39.0
將 t 檢定應用於此資料(假設母體變異數相等)
>>> import numpy as np >>> from scipy.stats import ttest_ind_from_stats >>> ttest_ind_from_stats(mean1=15.0, std1=np.sqrt(87.5), nobs1=13, ... mean2=12.0, std2=np.sqrt(39.0), nobs2=11) Ttest_indResult(statistic=0.9051358093310269, pvalue=0.3751996797581487)
為了比較,以下是取得這些摘要統計量的資料。使用這些資料,我們可以使用
scipy.stats.ttest_ind
計算出相同的結果>>> a = np.array([1, 3, 4, 6, 11, 13, 15, 19, 22, 24, 25, 26, 26]) >>> b = np.array([2, 4, 6, 9, 11, 13, 14, 15, 18, 19, 21]) >>> from scipy.stats import ttest_ind >>> ttest_ind(a, b) TtestResult(statistic=0.905135809331027, pvalue=0.3751996797581486, df=22.0)
假設我們改為擁有二元資料,並且想要應用 t 檢定來比較兩個獨立群組中 1 的比例
Number of Sample Sample Size ones Mean Variance Sample 1 150 30 0.2 0.161073 Sample 2 200 45 0.225 0.175251
樣本平均數 \(\hat{p}\) 是樣本中 1 的比例,而二元觀測值的變異數估計為 \(\hat{p}(1-\hat{p})\)。
>>> ttest_ind_from_stats(mean1=0.2, std1=np.sqrt(0.161073), nobs1=150, ... mean2=0.225, std2=np.sqrt(0.175251), nobs2=200) Ttest_indResult(statistic=-0.5627187905196761, pvalue=0.5739887114209541)
為了比較,我們可以如上所述,使用 0 和 1 的陣列以及 scipy.stat.ttest_ind 計算 t 統計量和 p 值。
>>> group1 = np.array([1]*30 + [0]*(150-30)) >>> group2 = np.array([1]*45 + [0]*(200-45)) >>> ttest_ind(group1, group2) TtestResult(statistic=-0.5627179589855622, pvalue=0.573989277115258, df=348.0)