当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python dask.array.stats.ttest_ind用法及代码示例


用法:

dask.array.stats.ttest_ind(a, b, axis=0, equal_var=True)

计算两个独立分数样本的平均值的T-test。

此文档字符串是从 scipy.stats ttest_ind 复制的。

可能存在与 Dask 版本的一些不一致之处。

这是一个 two-sided 检验,用于零假设,即 2 个独立样本具有相同的平均(预期)值。此测试假定默认情况下总体具有相同的方差。

参数

a, barray_like

数组必须具有相同的形状,除了对应于axis(第一个,默认情况下)的维度。

axisint 或无,可选

计算测试的轴。如果没有,则计算整个数组 ab

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 已经是 GeneratorRandomState 实例,则使用该实例。

用于生成排列的伪随机数生成器状态(仅在 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) 时,其中

  • ka 中的观察数,
  • nab 中的观察总数,并且
  • binom(n, k) 是二项式系数( n 选择 k ),

数据被汇集(连接),随机分配到组 ab ,并计算 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

https://en.wikipedia.org/wiki/Welch%27s_t-test

3

http://en.wikipedia.org/wiki/Resampling_%28statistics%29

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)

相关用法


注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 dask.array.stats.ttest_ind。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。