用法:
dask.array.stats.ttest_ind(a, b, axis=0, equal_var=True)
計算兩個獨立分數樣本的平均值的T-test。
此文檔字符串是從 scipy.stats ttest_ind 複製的。
可能存在與 Dask 版本的一些不一致之處。
這是一個 two-sided 檢驗,用於零假設,即 2 個獨立樣本具有相同的平均(預期)值。此測試假定默認情況下總體具有相同的方差。
- a, b:array_like
數組必須具有相同的形狀,除了對應於
axis
(第一個,默認情況下)的維度。- axis:int 或無,可選
計算測試的軸。如果沒有,則計算整個數組
a
和b
。- equal_var:布爾型,可選
如果為 True(默認),則執行假設總體方差相等的標準獨立 2 樣本檢驗 [1] 。如果為 False,請執行 Welch 的 t-test,它不假設人口方差相等 [2]。
- nan_policy:{‘propagate’, ‘raise’, ‘omit’},可選(Dask 不支持)
定義當輸入包含 nan 時如何處理。以下選項可用(默認為‘propagate’):
‘propagate’:返回 nan
‘raise’:引發錯誤
‘omit’:執行忽略 nan 值的計算
‘omit’ 選項當前不可用於置換檢驗或one-sided 漸近檢驗。
- permutations:非負 int np.inf 或無(默認),可選(在 Dask 中不支持)
如果為 0 或無(默認值),則使用 t 分布計算 p-values。否則,
permutations
是隨機排列的數量,將用於使用排列測試估計 p-values。如果permutations
等於或超過合並數據的不同分區的數量,則執行精確測試(即每個不同的分區僅使用一次)。有關詳細信息,請參閱注釋。- random_state:{無,int
numpy.random.Generator
,(Dask 不支持) numpy.random.RandomState
},可選如果
seed
為 None (或np.random
),則使用numpy.random.RandomState
單例。如果seed
是 int ,則使用新的RandomState
實例,並以seed
為種子。如果seed
已經是Generator
或RandomState
實例,則使用該實例。用於生成排列的偽隨機數生成器狀態(僅在
permutations
不是 None 時使用)。- alternative:{‘two-sided’, ‘less’, ‘greater’},可選(Dask 不支持)
定義備擇假設。以下選項可用(默認為“two-sided”):
‘two-sided’
‘less’:one-sided
‘greater’:one-sided
- trim:浮點數,可選(在 Dask 中不支持)
如果非零,則執行修剪(Yuen's)t-test。定義要從輸入樣本的每一端修剪的元素比例。如果為 0(默認值),則不會從任一側修剪任何元素。每個尾部的修剪元素的數量是修剪的底乘以元素的數量。有效範圍為 [0, .5)。
- statistic:浮點數或數組
計算出來的t-statistic。
- pvalue:浮點數或數組
two-tailed p-value。
參數:
返回:
注意:
假設我們觀察到兩個獨立的樣本,例如花瓣長度,我們正在考慮這兩個樣本是來自同一種群(例如,同一種類的花或具有相似花瓣特征的兩個物種)還是兩個不同的種群。
t-test 量化了兩個樣本的算術平均值之間的差異。 p-value 量化觀察到或更多極值的概率,假設原假設是真實的,即樣本來自具有相同總體均值的總體。 p-value 大於所選閾值(例如 5% 或 1%)表示我們的觀察不太可能是偶然發生的。因此,我們不拒絕相等總體均值的原假設。如果 p-value 小於我們的閾值,那麽我們就有證據反對相等總體均值的原假設。
默認情況下,p-value 是通過將觀測數據的 t-statistic 與理論 t 分布進行比較來確定的。當
1 < permutations < binom(n, k)
時,其中k
是a
中的觀察數,n
是a
和b
中的觀察總數,並且binom(n, k)
是二項式係數(n
選擇k
),
數據被匯集(連接),隨機分配到組
a
或b
,並計算 t-statistic。該過程重複執行(permutation
次),生成零假設下t-statistic的分布,並將觀測數據的t-statistic與該分布進行比較以確定p-value。當permutations >= binom(n, k)
時,將執行精確測試:數據以每種不同的方式在組之間僅分區一次。置換檢驗的計算成本可能很高,並且不一定比分析檢驗更準確,但它並未對基礎分布的形狀做出強有力的假設。
修整的使用通常稱為修整t-test。有時稱為 Yuen 的 t-test,這是 Welch 的 t-test 的擴展,不同之處在於在計算方差時使用 Winsorized 均值,在計算統計量時使用修剪後的樣本量。如果基礎分布是 long-tailed 或被異常值 [4] 汙染,則建議進行修剪。
參考:
- 1
https://en.wikipedia.org/wiki/T-test#Independent_two-sample_t-test
- 2
- 3
- 4
Yuen, Karen K. “Two-Sample 為不平等的人口差異修剪 t。”生物計量學,第一卷。 61,沒有。 1,1974 年,第 165-170 頁。 JSTOR,www.jstor org/stable/2334299。於 2021 年 3 月 30 日訪問。
- 5
Yuen、Karen K. 和 W. J. Dixon。 “Two-Sample Trimmed t 的近似行為和性能。”生物計量學,第一卷。 60,沒有。 2,1973 年,第 369-374 頁。 JSTOR,www.jstor org/stable/2334550。於 2021 年 3 月 30 日訪問。
例子:
>>> from scipy import stats >>> rng = np.random.default_rng()
用相同方法的樣本進行測試:
>>> rvs1 = stats.norm.rvs(loc=5, scale=10, size=500, random_state=rng) >>> rvs2 = stats.norm.rvs(loc=5, scale=10, size=500, random_state=rng) >>> stats.ttest_ind(rvs1, rvs2) Ttest_indResult(statistic=-0.4390847099199348, pvalue=0.6606952038870015) >>> stats.ttest_ind(rvs1, rvs2, equal_var=False) Ttest_indResult(statistic=-0.4390847099199348, pvalue=0.6606952553131064)
ttest_ind
低估了不等方差的 p:>>> rvs3 = stats.norm.rvs(loc=5, scale=20, size=500, random_state=rng) >>> stats.ttest_ind(rvs1, rvs3) Ttest_indResult(statistic=-1.6370984482905417, pvalue=0.1019251574705033) >>> stats.ttest_ind(rvs1, rvs3, equal_var=False) Ttest_indResult(statistic=-1.637098448290542, pvalue=0.10202110497954867)
當
n1 != n2
時,等方差 t-statistic 不再等於不等方差 t-statistic:>>> rvs4 = stats.norm.rvs(loc=5, scale=20, size=100, random_state=rng) >>> stats.ttest_ind(rvs1, rvs4) Ttest_indResult(statistic=-1.9481646859513422, pvalue=0.05186270935842703) >>> stats.ttest_ind(rvs1, rvs4, equal_var=False) Ttest_indResult(statistic=-1.3146566100751664, pvalue=0.1913495266513811)
T-test 具有不同的均值、方差和 n:
>>> rvs5 = stats.norm.rvs(loc=8, scale=20, size=100, random_state=rng) >>> stats.ttest_ind(rvs1, rvs5) Ttest_indResult(statistic=-2.8415950600298774, pvalue=0.0046418707568707885) >>> stats.ttest_ind(rvs1, rvs5, equal_var=False) Ttest_indResult(statistic=-1.8686598649188084, pvalue=0.06434714193919686)
在執行置換測試時,更多的置換通常會產生更準確的結果。使用
np.random.Generator
來確保重現性:>>> stats.ttest_ind(rvs1, rvs5, permutations=10000, ... random_state=rng) Ttest_indResult(statistic=-2.8415950600298774, pvalue=0.0052)
取這兩個樣本,其中一個有一個極端的尾巴。
>>> a = (56, 128.6, 12, 123.8, 64.34, 78, 763.3) >>> b = (1.1, 2.9, 4.2)
使用
trim
關鍵字來執行修剪 (Yuen) t-test。例如,使用 20% 的修剪trim=.2
,測試將減少來自樣本a
的每個尾部的一個 (np.floor(trim*len(a))
) 元素的影響。它將對樣本b
沒有影響,因為np.floor(trim*len(b))
為 0。>>> stats.ttest_ind(a, b, trim=.2) Ttest_indResult(statistic=3.4463884028073513, pvalue=0.01369338726499547)
相關用法
- Python dask.array.stats.ttest_rel用法及代碼示例
- Python dask.array.stats.ttest_1samp用法及代碼示例
- Python dask.array.stats.chisquare用法及代碼示例
- Python dask.array.stats.kurtosistest用法及代碼示例
- Python dask.array.stats.moment用法及代碼示例
- Python dask.array.stats.power_divergence用法及代碼示例
- Python dask.array.stats.f_oneway用法及代碼示例
- Python dask.array.stats.kurtosis用法及代碼示例
- Python dask.array.stats.skew用法及代碼示例
- Python dask.array.stats.skewtest用法及代碼示例
- Python dask.array.stats.normaltest用法及代碼示例
- Python dask.array.stack用法及代碼示例
- Python dask.array.store用法及代碼示例
- Python dask.array.std用法及代碼示例
- Python dask.array.square用法及代碼示例
- Python dask.array.sinc用法及代碼示例
- Python dask.array.searchsorted用法及代碼示例
- Python dask.array.sum用法及代碼示例
- Python dask.array.squeeze用法及代碼示例
- Python dask.array.signbit用法及代碼示例
注:本文由純淨天空篩選整理自dask.org大神的英文原創作品 dask.array.stats.ttest_ind。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。