用法:
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。