Skip to content

Latest commit

 

History

History
179 lines (107 loc) · 6.4 KB

performing-ttest-python.md

File metadata and controls

179 lines (107 loc) · 6.4 KB

在 Python 中执行 T 检验

原文:www.kdnuggets.com/2023/01/performing-ttest-python.html

在 Python 中执行 T 检验

图片由编辑提供

主要要点


我们的前三个课程推荐

1. Google 网络安全证书 - 快速进入网络安全职业生涯。

2. Google 数据分析专业证书 - 提升你的数据分析技能

3. Google IT 支持专业证书 - 支持你的组织的 IT 工作


  • t 检验是一种统计检验方法,用于确定两个独立样本的均值是否存在显著差异。

  • 我们通过使用鸢尾花数据集和 Python 的 Scipy 库来说明如何应用 t 检验。

t 检验是一种统计检验方法,用于确定两个独立样本的均值是否存在显著差异。在本教程中,我们演示了 t 检验的最基本版本,我们假设两个样本具有相等的方差。其他高级版本的 t 检验包括 Welch 的 t 检验,它是 t 检验的一种改编,更适用于两个样本方差不等且可能样本量不等的情况。

t 检验的基本公式

t 统计量或 t 值的计算方法如下:

在 Python 中执行 T 检验

其中 公式 是样本 1 的均值,公式 是样本 2 的均值,公式 是样本 1 的方差,公式 是样本 2 的方差,公式 是样本 1 的样本量,和 公式 是样本 2 的样本量。

使用鸢尾花数据集的示例

为了说明 t 检验的使用,我们将使用鸢尾花数据集展示一个简单的例子。假设我们观察到两个独立的样本,例如花萼长度,我们需要考虑这两个样本是否来自同一总体(例如,相同的花卉物种或两个具有相似花萼特征的物种)或两个不同的总体。

t 检验量化了两个样本算术均值之间的差异。p 值量化了在假设原假设(即样本来自均值相同的总体)为真的情况下获得观察结果的概率。p 值大于选择的阈值(例如 5% 或 0.05)表示我们的观察结果不太可能偶然发生。因此,我们接受均值相等的原假设。如果 p 值小于我们的阈值,则我们有证据反对均值相等的原假设。

T 检验输入

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

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

T 检验输出

t 检验返回如下结果:

  • 计算得到的 t 统计量

  • p 值

使用等样本大小的 Python 实现

导入必要的库

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 的萼片长度来自相同的总体数据。

使用不等样本大小的 Python 实现

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 的所有者。此前,本杰明曾在中央俄克拉荷马大学、大峡谷大学和匹兹堡州立大学教授工程学和物理学。

相关主题