图片由编辑提供
1. Google 网络安全证书 - 快速进入网络安全职业生涯。
2. Google 数据分析专业证书 - 提升你的数据分析技能
3. Google IT 支持专业证书 - 支持你的组织的 IT 工作
-
t 检验是一种统计检验方法,用于确定两个独立样本的均值是否存在显著差异。
-
我们通过使用鸢尾花数据集和 Python 的 Scipy 库来说明如何应用 t 检验。
t 检验是一种统计检验方法,用于确定两个独立样本的均值是否存在显著差异。在本教程中,我们演示了 t 检验的最基本版本,我们假设两个样本具有相等的方差。其他高级版本的 t 检验包括 Welch 的 t 检验,它是 t 检验的一种改编,更适用于两个样本方差不等且可能样本量不等的情况。
t 统计量或 t 值的计算方法如下:
其中 是样本 1 的均值, 是样本 2 的均值, 是样本 1 的方差, 是样本 2 的方差, 是样本 1 的样本量,和 是样本 2 的样本量。
为了说明 t 检验的使用,我们将使用鸢尾花数据集展示一个简单的例子。假设我们观察到两个独立的样本,例如花萼长度,我们需要考虑这两个样本是否来自同一总体(例如,相同的花卉物种或两个具有相似花萼特征的物种)或两个不同的总体。
t 检验量化了两个样本算术均值之间的差异。p 值量化了在假设原假设(即样本来自均值相同的总体)为真的情况下获得观察结果的概率。p 值大于选择的阈值(例如 5% 或 0.05)表示我们的观察结果不太可能偶然发生。因此,我们接受均值相等的原假设。如果 p 值小于我们的阈值,则我们有证据反对均值相等的原假设。
执行 t 检验所需的输入或参数包括:
- 包含样本 1 和样本 2 数据的两个数组 a 和 b
t 检验返回如下结果:
-
计算得到的 t 统计量
-
p 值
导入必要的库
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
加载鸢尾花数据集
from sklearn import datasets
iris = datasets.load_iris()
sep_length = iris.data[:,0]
a_1, a_2 = train_test_split(sep_length, test_size=0.4, random_state=0)
b_1, b_2 = train_test_split(sep_length, test_size=0.4, random_state=1)
计算样本均值和样本方差
mu1 = np.mean(a_1)
mu2 = np.mean(b_1)
np.std(a_1)
np.std(b_1)
实现 t 检验
stats.ttest_ind(a_1, b_1, equal_var = False)
输出
Ttest_indResult(statistic=0.830066093774641, pvalue=0.4076270841218671)
stats.ttest_ind(b_1, a_1, equal_var=False)
输出
Ttest_indResult(statistic=-0.830066093774641, pvalue=0.4076270841218671)
stats.ttest_ind(a_1, b_1, equal_var=True)
输出
Ttest_indResult(statistic=0.830066093774641, pvalue=0.4076132965045395)
我们观察到使用“true”或“false”作为“equal-var”参数并不会显著改变 t 检验结果。我们还观察到交换样本数组 a_1 和 b_1 的顺序会得到负的 t 检验值,但不会改变 t 检验值的大小,正如预期的那样。由于计算得到的 p 值远大于阈值 0.05,我们可以拒绝均值相等的原假设。这表明样本 1 和样本 2 的萼片长度来自相同的总体数据。
a_1, a_2 = train_test_split(sep_length, test_size=0.4, random_state=0)
b_1, b_2 = train_test_split(sep_length, test_size=0.5, random_state=1)
计算样本均值和样本方差
mu1 = np.mean(a_1)
mu2 = np.mean(b_1)
np.std(a_1)
np.std(b_1)
实现 t 检验
stats.ttest_ind(a_1, b_1, equal_var = False)
输出
stats.ttest_ind(a_1, b_1, equal_var = False)
我们观察到使用不等大小的样本不会显著改变 t 统计量和 p 值。
总结一下,我们展示了如何使用 Python 的 scipy 库实现一个简单的 t 检验。
本杰明·O·塔约 是一位物理学家、数据科学教育者和作家,同时也是 DataScienceHub 的所有者。此前,本杰明曾在中央俄克拉荷马大学、大峡谷大学和匹兹堡州立大学教授工程学和物理学。