Python 中的 T-Test

2025年3月17日 | 阅读 7 分钟

简介

我们都知道,Python提供了各种统计库,其中一些非常流行,例如PyMC3SciPy。这些库为用户提供了各种预定义的函数来计算各种测试。但是,为了理解该过程背后的数学原理,理解后台正在发生的事情至关重要。在接下来的教程中,我们将学习如何使用NumPyPython中执行T检验。

T检验是统计学中最常用的过程之一。然而,许多经常使用T检验的人并不确切知道当数据被处理并由R和Python等应用程序在后台运行后会发生什么。

但在我们开始之前,让我们先了解一下T检验是什么。

理解T检验

T检验是比较两个平均值(也称为均值)并告知它们之间是否存在差异的检验。T检验也称为Student's T检验,它还告诉我们差异的显著程度。换句话说,它提供了关于这些差异是否可能由于偶然发生的信息。

T-Test in Python

现在,让我们理解一些例子。

假设我们发烧了,并尝试了自然疗法。发烧持续了几天。下次我们发烧时,我们去药店买了一种非处方药物。这次发烧持续了一周。当我们调查朋友时,我们发现当他们服用顺势疗法药物时,他们的发烧持续时间更短(平均3天)。在此调查中,我们需要知道的是,这些结果是否可重复?T检验将通过比较两个组的均值以及这些结果偶然发生的概率来告诉我们。

我们还可以将Student's T检验用于现实生活,以比较均值。例如,一家制药公司希望测试一种新的癌症药物,以检查其对预期寿命的改善。在实验中,通常会有一个对照组(一组接受“糖丸”或安慰剂的组)。对照组的平均预期寿命可能超过五年,而服用新药的组的平均预期寿命可能超过六年。因此,我们可以说这种药物可能有效;但是,也有可能是偶然的。因此,为了检验这一点,研究人员将使用Student's T检验来确定这些结果对整个人群是否可重复。

现在,让我们了解一下T分数。

理解T分数

两个组之间的差异与组内差异的比率称为T分数。如果T分数越大,则表示组之间的差异越大。同时,较小的T分数表示组之间的相似性。T分数为3(Three)表示两组之间的差异是其内部差异的3倍。当我们运行T检验时获得更大的T值,这更表明结果是可重复的。

因此,我们可以得出以下结论:

  1. 大的T分数表明各组之间存在差异。
  2. 小的T分数表明各组相似。

现在,让我们了解T值和P值。

理解T值和P值

每个T值都有一个与之对应的P值。P值是指样本数据结果偶然发生的概率。P值范围从0%到100%。它们通常以小数形式表示。例如,10%的P值是0.1。P值越低越好。较低的P值表明数据并非偶然发生。例如,0.1的P值表明实验结果偶然发生的概率仅为1%。通常,在大多数情况下,5%(即0.05)的P值被接受为有效数据。

现在,让我们了解T检验的类型。

T检验的类型有哪些?

有三种主要的T检验类型:

  1. 独立样本T检验:此检验用于比较两组的平均值或均值。
  2. 配对样本T检验:此检验用于比较同一组在不同时间(例如,相隔一年)的均值。
  3. 单样本T检验:此检验用于将单个组的均值与已知均值进行比较。

现在,让我们开始执行一个样本T检验。

执行样本T检验

假设我们需要检验总体中男性的身高是否与女性的身高普遍存在差异。因此,我们将从总体中抽取样本并使用T检验来检查结果是否显著。

我们将按照以下步骤进行:

步骤1:确定零假设和备择假设

步骤2:收集样本数据

步骤3:确定置信区间和自由度

步骤4:计算T统计量

步骤5:从T分布计算临界T值

步骤6:比较临界T值与计算出的T统计量

让我们开始简要理解上述步骤。

确定零假设和备择假设

从定义零假设和备择假设开始是必要的。通常,零假设将表示正在检验的两个总体在统计上没有显著差异。另一方面,备择假设将表示存在差异。对于本例,我们可以得出以下陈述:

  1. 零假设:男性和女性的身高相同。
  2. 备择假设:男性和女性的身高不同。

收集样本数据

确定假设后,我们将开始从每个总体组收集数据。对于本例,我们将收集两组数据。一组包含男性身高的数据,另一组包含男性身高的数据。样本数据的大小理想情况下应相同;但是,也可以不同。假设样本数据的大小为 nx 和 ny

确定置信区间和自由度

置信区间通常称为alpha (α)。alpha (α) 的典型值为0.05。此陈述意味着该测试的有效结论具有95%的置信度。我们可以使用以下公式定义自由度:

T-Test in Python

计算T统计量

我们可以使用以下公式计算t统计量:

T-Test in Python

M = 均值

n = 每组得分数

T-Test in Python

x = 单个得分

M = 均值

n = 组中得分数

此外,Mx 和 My 分别是两个女性和男性样本均值的值。Nx 和 Ny 是两个样本的样本空间,S是标准差。

从T分布计算临界T值

我们需要两个对象来计算临界t值。第一个是选定的alpha值,另一个是自由度。临界t值的公式很复杂;但是,对于固定的自由度对和alpha值,它是静态的。因此,我们使用表格来计算临界t值。

然而,Python在SciPy库中提供了一个执行相同功能的函数。

比较临界T值与计算出的T统计量

一旦计算出临界T值,我们将将其与之前计算出的T统计量进行比较。如果临界t值小于计算出的T统计量,则检验推断两个总体在统计上存在显著差异。因此,我们必须拒绝零假设,即两个样本在统计上没有显著差异。

然而,在另一种情况,即两个总体之间没有显著差异时,检验未能拒绝零假设。因此,我们接受备择假设,这意味着男性和女性的身高在统计上是不同的。

让我们考虑以下演示模型工作原理的Python程序。

程序

输出

Standard Deviation = 0.7642398582227466
t = 4.87688162540348
p = 0.0001212767169695983
t = 4.876881625403479
p = 0.00012127671696957205

说明

在上面的示例中,我们导入了所需的库并定义了包含数据样本大小的变量。然后,我们计算了高斯分布数据和标准差。之后,我们计算了T统计量并将其与临界T值进行了比较。为此,我们计算了自由度并比较了p值。进行比较后,我们为用户打印了这些值。最后,我们使用SciPy包的函数再次比较了这些值并打印了它们。