在 Python 中执行 T 检验

在 Python 中执行 T 检验

源节点: 1902069

在 Python 中执行 T 检验
图片由编辑

关键精华

  • t 检验是一种统计检验,可用于确定两个独立数据样本的均值之间是否存在显着差异。
  • 我们说明了如何使用 iris 数据集和 Python 的 Scipy 库应用 t 检验。

t 检验是一种统计检验,可用于确定两个独立数据样本的均值之间是否存在显着差异。 在本教程中,我们将说明 t 检验的最基本版本,为此我们将假设两个样本具有相等的方差。 t 检验的其他高级版本包括 Welch 的 t 检验,它是 t 检验的一种改编,当两个样本具有不相等的方差和可能不相等的样本量时更可靠。

t 统计量或 t 值计算如下:

 

在 Python 中执行 T 检验
 

哪里 方程

方程 是样本 1 的平均值, 方程 是样本 2 的平均值, 方程 是样本1的方差, 方程 是样本2的方差, 方程 是样本 1 的样本量,并且 方程 是样本 2 的样本量。

为了说明 t 检验的使用,我们将展示一个使用 iris 数据集的简单示例。 假设我们观察到两个独立的样本,例如花萼片长度,并且我们正在考虑这两个样本是来自同一种群(例如,同一种类的花或具有相似萼片特征的两种植物)还是两个不同的种群。

t检验量化了两个样本的算术平均值之间的差异。 p 值量化获得观察结果的概率,假设零假设(样本是从具有相同总体均值的总体中抽取的)为真。 大于选定阈值(例如 5% 或 0.05)的 p 值表明我们的观察不太可能是偶然发生的。 因此,我们接受人口均值相等的原假设。 如果 p 值小于我们的阈值,那么我们就有证据反对人口均值相等的原假设。

T 检验输入

执行 t 检验所需的输入或参数是:

  • 两个数组 a b 包含样本 1 和样本 2 的数据

T 检验输出

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)

观察

我们观察到对“equal-var”参数使用“true”或“false”不会对 t 检验结果产生太大影响。 我们还观察到,交换样本数组 a_1 和 b_1 的顺序会产生负的 t 检验值,但不会像预期的那样改变 t 检验值的大小。 由于计算出的 p 值远大于阈值 0.05,我们可以拒绝原假设,即样本 1 和样本 2 的均值之间的差异显着。 这表明样本 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 中执行 T 检验

 

总之,我们展示了如何使用 python 中的 scipy 库实现简单的 t 检验。
 
 
本杰明·O·塔约 是物理学家、数据科学教育家和作家,也是 DataScienceHub 的所有者。 此前,本杰明在俄克拉荷马州中部大学、大峡谷大学和匹兹堡州立大学教授工程和物理。
 

时间戳记:

更多来自 掘金队