The postHow to use Python to Perform a Paired Sample T-testappeared first onErik Marsja.
在这个Python数据分析教程中,你将学习如何在Python中进行配对样本的T检验。首先,你将了解这种类型的T检验(例如,何时使用它,检验的假设)。第二,你将学习如何检查你的数据是否符合假设,以及如果你的数据违反了某些假设,你可以做什么。
第三,你将学习如何使用下列Python软件包进行配对样本t检验。
- Scipy (scipy.stats.ttest_ind)
- Pingouin (pingouin.ttest)
在本教程的最后几节,你还将学习如何。
- 解释和报告成对的T检验
- P值、效应大小
- 报告结果并使数据可视化
在第一节中,你将了解跟随本帖所需的内容。
前提条件
在本教程中,我们将使用SciPy和Pingouin这两个伟大的Python软件包,来进行因变量样本t检验。此外,为了读取数据集,我们将使用Pandas。最后,我们还将使用Seaborn来实现数据的可视化。在接下来的三个小节中,你将看到对这些包的简要描述。
SciPy
SciPy是必不可少的数据科学包之一。此外,这个包也是我们在本教程中要使用的所有其他包的依赖项。在本教程中,我们要用它来检验正态性假设,以及进行配对样本t检验。当然,这意味着,如果你要用Pingouin进行数据分析,你无论如何都要安装SciPy。
Pandas
对于用Python进行数据分析的人来说,Pandas也是一个非常棒的Python包,无论是数据科学家还是心理学家。在这篇文章中,我们将使用Pandas将数据导入数据框并计算汇总统计。
Seaborn
在本教程中,我们将使用数据可视化来指导我们对配对样本t检验的解释。Seaborn是一个进行数据可视化的很好的包(例如,请看这9个如何在Python中使用Seaborn进行数据可视化的例子)。
Pingouin
在本教程中,Pingouin是我们要用Python做配对样本t检验的第二个软件包。ttest函数的一个好处是,它可以返回我们在报告测试结果时需要的很多信息。例如,当使用Pingouin时,我们还可以得到自由度、Bayes因子、功率、效应大小(Cohen's d)和置信区间。
如何安装所需的软件包
在Python中,我们可以用pip安装软件包。要安装所有需要的包,请运行以下代码。
pip install scipy pandas seaborn pingouin
Code language: Bash (bash)
在下一节中,我们将学习配对T检验和它的假设。
成对样本T检验
成对样本T检验也被称为依赖样本T检验,以及成对T检验。此外,这种类型的t检验比较两个平均数(平均值),如果这两个平均数之间的差异为零,就会给你提供信息。在配对样本t检验中,每个参与者被测量两次,从而产生成对的观察结果(下一节会给你一个例子)。
关于何时使用这种测试的例子
例如,如果临床心理学家想测试一种治疗抑郁症的方法是否会改变生活质量,他们可能会设立一个实验。在这个实验中,他们将收集关于参与者在干预前(即治疗前和治疗后)的生活质量的信息。他们正在进行测试前和测试后的研究。 在测试前,平均生活质量可能是3,而在测试后,平均生活质量可能是5。 从数字上看,我们可以认为,治疗是有效的。然而,这可能是由于侥幸心理造成的,为了检验这一点,临床研究人员可以使用配对样本t检验。
假设
现在,在进行因果样本t检验时,你通常有以下两个假设。
- 空白假设:真实的均值差异等于零(观察值之间)。
- 备选假设:真实均值差异不等于零(双尾)。
注意,在某些情况下,我们也可能根据理论对所测量的效应的方向有一个具体的想法。例如,我们可能强烈认为(由于以前的研究和/或理论),一个特定的干预措施应该有积极的效果。在这种情况下,替代假设将是这样的:真正的平均差异大于零(单尾)。注意,当然也可以小于零。
假设
在我们继续并导入数据之前,我们将简要地看一下这个配对t检验的假设。现在,除了因变量是区间/比例尺度的,而且是连续的,还有三个假设需要满足。
- 这两个样本是独立的吗?
- 数据,即配对的差异,是否遵循正态分布?
- 参与者是从人口中随机选择的吗?
如果你的数据不遵循正态分布,你可以在Python中使用平方根、对数或Box-Cox来转换你的因变量。在下一节,我们将导入数据。
数据实例
在我们用Python检查配对t检验的正态性假设之前,我们甚至需要一些数据来做。在这篇教程文章中,我们将使用一个数据集,可以在这里找到。这里我们将使用Pandas和read_csv方法来导入数据集(存储在一个.csv文件中)。
df = pd.read_csv('./SimData/paired_samples_data.csv', index_col=0)
Code language: Python (python)
在上面的图片中,我们可以看到数据框架的结构。我们的数据集包含100个观测值和三个变量(列)。此外,在数据框中有三种不同的数据类型。首先,我们有一个整数列(即,"ids")。这一列包含研究中每个人的标识符。其次,我们有一个 "测试 "列,它是对象数据类型,包含测试时间点的信息。最后,我们有 "score "列,其中有因变量。我们可以通过对Pandas数据框架进行分组来检查这些配对,并计算描述性统计。
在上面的代码块中,我们通过 "测试 "对数据进行分组,并选择因变量,使用describe() 方法得到一些描述性统计。如果我们愿意,我们可以使用Pandas来计算一列中的唯一值。
df['test'].value_counts()
Code language: Python (python)
这样我们得到的信息是,我们在后测试中的观察值与前测试中的观察值一样多。一个简短的说明:在我们继续下一个小节,即对数据进行子集之前,必须提到的是,你应该检查因变量是否为正态分布。这可以通过创建直方图(例如,用Pandas)和/或进行Shapiro-Wilks测试来完成。
对数据进行子集
无论是使用SciPy还是Pingouin,这两种方法都要求我们把因变量放在两个Python变量中。因此,我们要对数据进行子集,只选择因变量。为了帮助我们,我们有query() 方法,我们将使用大括号([])选择一列。
b = df.query('test == "Pre"')['score'] a = df.query('test == "Post"')['score']
Code language: Python (python)
现在,我们有了包含因变量对的变量a和b,我们可以用SciPy来做配对样本T检验。
使用SciPy进行Python配对样本T检验
下面是如何使用SciPy在Python中进行配对样本T检验。
from scipy.stats import ttest_rel # Python paired sample t-test ttest_rel(a, b)
Code language: Python (python)
在上面的代码块中,我们首先导入了ttest_rel() ,然后用这个方法来进行因变量样本t检验。此外,我们使用的两个参数是数据,包含因变量,在对(a,和b)。现在,我们可以通过结果(如下图)看到,测试前和测试后的差异在统计学上是显著的。
成对样本t检验的结果
在下一节中,我们将使用Pingouin来进行配对t检验。
如何用Pingouin在Python中进行配对样本T检验
下面是如何使用Python软件包Pingouin进行依赖样本t检验的方法。
import pingouin as pt # Python paired sample t-test: pt.ttest(a, b, paired=True)
Code language: Python (python)
关于上面的代码块,没有什么好解释的,但我们首先导入pingouin。接下来,我们使用ttest() 方法,并使用我们的数据。注意我们是如何使用配对参数并将其设置为True的。我们这样做是因为我们想进行的是配对样本的t检验。下面是输出结果。
正如你所看到的,使用Pingouin做配对t检验时,我们得到了更多的信息。事实上,在这里我们基本上得到了所有我们需要继续和解释的结果。在下一节中,在学习如何解释结果之前,你也可以观看一段YouTube视频,解释上述所有内容(当然,有一些例外)。
Python配对样本T检验YouTube视频。
下面是当前博文的大部分内容在YouTube视频中的解释。
如何解释配对T检验的结果
在本节中,我们将简短地解释如何解释用Python进行的配对T检验的结果。注意,我们将集中讨论从Pingouin得到的结果,因为它们给我们提供了更多的信息(例如,自由度、效应大小)。
解释P值
现在,测试的P值小于0.001,小于显著性水平α(如0.05)。这意味着我们可以得出结论,当参与者进行后测时,生活质量有所提高。注意,这当然可能是由于干预以外的其他原因,但这是另一个故事。
请注意,P值是在假设无效假设为真的情况下,得到一个至少与我们数据中的效果一样极端的概率。Pp值只解决一个问题:假设真实的无效假设,你收集的数据的可能性有多大?注意,P值永远不能作为替代假设的支持。
解释Cohen's D
通常情况下,我们在解释Cohen's D时要考虑到例如治疗的相对强度。Cohen(1988)建议,D=0.2是 "小 "效应大小,0.5是 "中 "效应大小,而0.8是 "大 "效应大小。你可以这样解释:如果两组的平均值相差不超过0.2个标准差,那么这个差异是微不足道的,即使它具有统计学意义。
解释Pingouin的贝叶斯系数
当使用Pingouin进行配对t检验时,我们也会得到Bayes因子。关于如何解释BF10的更多信息,请见此文。
如何报告结果
在本节中,你将学习如何根据APA指南报告结果。在我们的案例中,我们可以这样报告t检验的结果。
前测*(M*=39.77,SD=6.758)和后测*(M*=45.737,SD=6.77)生活质量测试的结果表明,治疗导致了生活质量的改善,t(49)=115.4384,p<0.01。请注意,"生活质量测试 "是为了这篇文章而编造的(当然,也可能有这样的测试,但我不知道!)。
在最后一节中,在结论之前,你将学习如何以两种不同的方式将数据可视化:创建boxplots和小提琴图。
如何使用膨胀图将数据可视化。
下面是我们如何使用boxplots来指导配对t检验的解释。
import seaborn as sns sns.boxplot(x='test', y='score', data=df)
Code language: Python (python)
在上面的代码块中,我们导入了seaborn(作为sns),并使用了boxplot方法。首先,我们把我们想单独显示的图列放在X轴上。下面是生成的图。
如何使用小提琴图将数据可视化。
下面是另一种通过创建小提琴图来报告t检验结果的方法。
import seaborn as sns sns.violinplot(x='test', y='score', data=df)
Code language: Python (python)
和创建箱形图一样,我们导入seaborn并添加我们想要的X轴和Y轴的列/变量。下面是生成的图。
Python中的其他数据分析方法
正如你可能已经知道的,还有其他的方法来分析数据。例如,如果数据中的因子有两个以上的水平(如处理期间的测试,以及前测和后测),你可以使用方差分析(ANOVA)。请看以下关于如何进行方差分析的帖子。
最近,机器学习方法越来越流行。更多信息请看下面的文章。
摘要
在这篇文章中,你已经学会了两种进行配对样本t检验的方法。具体来说,在这篇文章中,你已经安装并使用了三个用于数据分析的Python软件包(Pandas、SciPy和Pingouin)。此外,你已经学会了如何解释和报告这个统计测试的结果,包括使用Seaborn进行数据可视化。在资源和参考文献部分,你将找到有用的资源和参考文献,以了解更多。最后一句话:Python软件包Pingouin会给你最全面的结果,这也是我选择在Python中进行许多统计方法的软件包。
如果你喜欢这篇文章,请在你的社交媒体账户上分享它和/或在下面留言。评论也是给我提出建议的一个好方法。但是,如果你在寻找任何帮助,请使用其他的联系方式(例如,见关于或联系页面)。
最后,请支持我和我的内容(非常感谢,特别是如果你使用广告屏蔽器):成为赞助人。成为赞助人将使你有机会进入Discord频道,在那里你可以提出问题并可能得到互动反馈。
其他资源和参考资料
这里有一些有用的同行评议的文章、博客文章和书籍。如果你想了解更多关于t检验、p值、效应大小和贝叶斯系数的信息,请参考这些。
Cohen, J. (1988).行为科学的统计能力分析(第二版)。Hillsdale, NJ: Lawrence Erlbaum Associates, Publishers.
解释P值。
超越Cohen's d。在研究对象之间设计的替代效应大小措施(付费)。
The postHow to use Python to Perform a Paired Sample T-testappeared first onErik Marsja.