在Python中进行T检验

在Python中进行T检验

介绍

众所周知,Python提供了各种统计库,其中一些非常受欢迎,例如 PyMC3SciPy . 这些库为用户提供了不同的预定义函数,以便计算各种测试。但是为了理解背后的数学原理,了解背景中发生的事情是至关重要的。在下面的教程中,我们将了解如何使用 PythonNumPy 进行T检验。

T检验 是统计学中最常用的程序之一。然而,即使经常使用T检验的许多人也不确切地知道在后台使用诸如R和Python之类的应用程序对其数据进行操作时会发生什么。

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

理解T检验

T检验 是一种比较两个平均值(也称为均值)的测试,并告诉我们它们是否不同。T检验也被称为 学生T检验 ,它还告诉我们差异的显著程度。换句话说,它让我们知道这些差异是否可能是偶然发生的。

在Python中进行T检验

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

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

在现实生活中,我们也可以使用学生T检验来比较均值。例如,一家药企想要测试一种新的抗癌药物,以检查其对预期寿命的改善。在实验中,通常会有一个对照组(提供“糖丸”或安慰剂的组)。对照组的平均预期寿命可能超过五年,而使用新药的组可能超过六年的预期寿命。因此,我们可以说这种药可能有效,但也存在可能仅仅是巧合的机会。因此,为了测试这一点,研究人员将使用学生T检验以确定结果对整个人群是否可重复。

现在,让我们了解一下T值是什么。

理解T值

两组之间的差异与组内差异之间的比值被称为 T值 。如果T值更显著,这意味着组之间存在更大的差异。与此同时,较小的T值表示组之间的相似性。T值为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%的概率是巧合。通常情况下,接受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)。α的典型值为0.05。这意味着对于检验的有效结论,有95%的置信度。我们可以使用以下公式确定自由度:

在Python中进行T检验

计算t-统计量

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

在Python中进行T检验

M = 平均值

n = 每组的得分数量

在Python中进行T检验

x = 个体分数

M = 均值

n = 组中的分数数量

此外,M x 和 M y 是两个女性和男性样本的均值。N x 和 N y 是两个样本的样本空间,S 是标准偏差。

从 t 分布计算关键 t 值

为了计算关键 t 值,我们需要两个对象。第一个是α选择的值,另一个是自由度。关键 t 值的公式很复杂;然而,它对于固定的自由度对和α值是静态的。因此,我们使用表格来计算关键 t 值。

然而,Python 在 SciPy 库中提供了一个具有相同用途的函数。

将关键 T 值与计算得到的 T 统计量进行比较

一旦计算出关键 T 值,我们将把该值与之前计算的 T 统计量进行比较。如果关键 t 值小于计算得到的 T 统计量,则测试得出两个总体之间存在显著差异。因此,我们必须拒绝无显著差异的原假设。

然而,另一种情况下,两个总体之间没有显著差异,测试无法拒绝原假设。因此,我们接受备择假设,即男性和女性的身高在统计上是不同的。

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

程序:

# Importing the required libraries and packages
import numpy as np
from scipy import stats
# Defining two random distributions
# Sample Size
N = 10
# Gaussian distributed data with mean = 2 and var = 1
x = np.random.randn(N) + 2
# Gaussian distributed data with mean = 0 and var = 1
y = np.random.randn(N)
# Calculating the Standard Deviation
# Calculating the variance to get the standard deviation
var_x = x.var(ddof = 1)
var_y = y.var(ddof = 1)
# Standard Deviation
SD = np.sqrt((var_x + var_y) / 2)
print("Standard Deviation =", SD)
# Calculating the T-Statistics
tval = (x.mean() - y.mean()) / (SD * np.sqrt(2 / N))
# Comparing with the critical T-Value
# Degrees of freedom
dof = 2 * N - 2
# p-value after comparison with the T-Statistics
pval = 1 - stats.t.cdf( tval, df = dof)
print("t = " + str(tval))
print("p = " + str(2 * pval))
## Cross Checking using the internal function from SciPy Package
tval2, pval2 = stats.ttest_ind(x, y)
print("t = " + str(tval2))
print("p = " + str(pval2))

输出:

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

解释:

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程