scipy.stats.

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 值。

另請參閱

scipy.stats.ttest_ind

註解

統計量計算為 (mean1 - mean2)/se,其中 se 是標準誤。因此,當 mean1 大於 mean2 時,統計量將為正值;當 mean1 小於 mean2 時,統計量將為負值。

此方法不會檢查 std1std2 的任何元素是否為負數。如果在呼叫此方法時,std1std2 參數的任何元素為負數,則此方法將傳回與傳遞 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)