ttest_rel#
- scipy.stats.ttest_rel(a, b, axis=0, nan_policy='propagate', alternative='two-sided', *, keepdims=False)[源代码]#
计算两个相关评分样本 a 和 b 的 t 检验。
这是一个零假设的测试,即两个相关或重复的样本具有相同的平均(预期)值。
- 参数:
- a, barray_like
数组必须具有相同的形状。
- axisint 或 None,默认值: 0
如果为 int,则输入沿其计算统计量的轴。输入的每个轴片(例如行)的统计量将出现在输出的相应元素中。如果
None
,则在计算统计量之前,输入将被展平。- nan_policy{‘propagate’, ‘omit’, ‘raise’}
定义如何处理输入 NaN。
propagate
:如果在计算统计量的轴片(例如行)中存在 NaN,则输出的对应条目将为 NaN。省略
: 执行计算时将省略 NaN。如果用于计算统计信息的轴切片中剩余的数据不足,输出的相应条目将为 NaN。提升
: 如果存在 NaN,会提升ValueError
。
- 备选{‘双向’、‘较小’、‘较大’},可选
定义备选假设。以下选项可用(默认值为‘双向’)
‘双向’:样本基础分布的平均值不相等。
‘较小’:第一个样本基础分布的平均值小于第二个样本基础分布的平均值。
‘较大’:第一个样本基础分布的平均值大于第二个样本基础分布的平均值。
在版本 1.6.0 中添加。
- keepdims布尔值,默认值:False
如果将其设置为 True,被约简的轴将以尺寸 1 的维度形式保留在结果中。此选项允许结果针对输入数组正确广播。
- 返回:
- result
TtestResult
具有以下属性的对象
- statistic浮点或数组
t 统计量。
- pvalue浮点或数组
与给定的备选关联的 p 值。
- df浮点或数组
t 统计量计算中使用的自由度数量;它比样本的尺寸(
a.shape[axis]
)小 1。在版本 1.10.0 中添加。
对象还具有以下方法
- confidence_interval(confidence_level=0.95)
计算给定置信水平的人口平均值差别的置信区间。置信区间以
namedtuple
形式返回,其字段为 low 和 high。在版本 1.10.0 中添加。
- result
备注
使用示例为在不同考试中同一组学生的成绩,或从同一装置进行的重复抽样。此检验衡量平均成绩是否在各个样本中(例如考试)有显著差异。如果观察到的 p 值较大,例如大于 0.05 或 0.1,则无法驳回平均成绩相等的零假设。如果 p 值小于阈值,例如 1%、5% 或 10%,则驳回平均值相等的零假设。较小的 p 值对应较大的 t 统计量。
t 统计量计算为
np.mean(a - b)/se
,其中se
是标准误差。因此,当a - b
的样本均值大于零时,t 统计量将为正值,而当a - b
的样本均值小于零时,t 统计量将为负值。从 SciPy 1.9 开始,
np.matrix
输入(不建议用于新代码)在执行计算之前会转换为np.ndarray
。在这种情况下,输出将是标量或适当形状的np.ndarray
,而不是二维的np.matrix
。类似地,在忽略掩码数组的掩码元素时,输出将是标量或np.ndarray
,而不是掩码为mask=False
的掩码数组。参考
https://en.wikipedia.org/wiki/T-test#Dependent_t-test_for_paired_samples
示例
>>> import numpy as np >>> 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.norm.rvs(scale=0.2, size=500, random_state=rng)) >>> stats.ttest_rel(rvs1, rvs2) TtestResult(statistic=-0.4549717054410304, pvalue=0.6493274702088672, df=499) >>> rvs3 = (stats.norm.rvs(loc=8, scale=10, size=500, random_state=rng) ... + stats.norm.rvs(scale=0.2, size=500, random_state=rng)) >>> stats.ttest_rel(rvs1, rvs3) TtestResult(statistic=-5.879467544540889, pvalue=7.540777129099917e-09, df=499)