Python中的一个样本和两个样本t检验
Posted
技术标签:
【中文标题】Python中的一个样本和两个样本t检验【英文标题】:One sample & Two Sample t-tests in Python 【发布时间】:2020-06-25 03:57:54 【问题描述】:我对如何工作有疑问。 Stats 和 Python 世界的新手。一名学生试图在两个处理单元之间做出决定。他想在他的研究中使用处理单元来运行高性能算法,所以他唯一关心的就是速度。他在大型数据集上选择了一种高性能算法,并在两个处理单元上运行了 10 次,每次运行的时间都以小时为单位。结果在下面的 TestSample1 和 TestSample2 列表中给出。
from scipy import stats
import numpy as nupy
TestSample1 = nupy.array([11,9,10,11,10,12,9,11,12,9])
TestSample2 = nupy.array([11,13,10,13,12,9,11,12,12,11])
假设:以上两个数据集样本都是随机的、独立的、参数化且正态分布的
提示:您可以从 scipy 导入 ttest 函数来执行 t 测试
第一次 T 检验 一个样本 t 检验 检查 TestSample1 的均值是否为零。
-
零假设是均值等于零。
另一种假设是它不等于零。
问题 2 鉴于, 1. 零假设:数据集之间没有显着差异 2. 替代假设:存在显着差异 做两样本检验,检查是否拒绝 Null Hypothesis。
问题 3 - 做两个样本测试,检查两个样本的速度是否存在显着差异: - TestSample1 & TestSample3
他正在尝试第三个处理单元 - TestSample3。
TestSample3 = nupy.array([9,10,9,11,10,13,12,9,12,12])
假设:两个数据集(TestSample1 和 TestSample3)都是随机的、独立的、参数化的和正态分布的
【问题讨论】:
目前尚不清楚您的问题到底是什么,但这里有一些说明:无论如何,单样本测试不适合您的场景,因为据我了解,您的测试运行是独立的。此外,平均时间为零的零假设显然是荒谬的。提及“数据集之间的差异”令人困惑,因为从您的初始段落来看,您让所有测试在同一个数据集上运行。顺便说一句,标准约定是import numpy as np
。也许你可以简化你的问题。
第一个问题是如何在给定的样本1和2上做一个1样本tTest。第二个是如何对Test samples做一个2 sample test来检查是否有显着差异在速度...
【参考方案1】:
问题 1
使用 SciPy 的方法如下:
stats.ttest_1samp(TestSample1, popmean=0)
虽然在这种情况下执行它不是一个有用的测试,因为我们已经知道零假设必须是错误的。负时间是不可能的,因此使总体时间平均值为零的唯一方法是,如果每次测量的时间都始终为零,显然情况并非如此。
问题 2
以下是如何使用 SciPy 对独立样本进行双样本 t 检验:
stats.ttest_ind(TestSample1, TestSample2)
输出:
Ttest_indResult(statistic=-1.8325416653445783, pvalue=0.08346710398411555)
所以 t 统计量是 -1.8,但它与零的偏差在形式上并不显着(p = 0.08)。这个结果是不确定的。当然,最好进行更精确的测量,而不是四舍五入到小时。
在任何情况下,我都会争辩说,鉴于您声明的设置,您也不需要这个测试。两个不同的 CPU 执行完全相同的可能性极小,您只想决定使用哪一个。不管显着性检验结果如何,简单地选择平均时间较短的那个显然是正确的决定。
问题 3
这类似于问题 2。
【讨论】:
以上是关于Python中的一个样本和两个样本t检验的主要内容,如果未能解决你的问题,请参考以下文章
spss软件中非参数检验两个独立样本检验分析结果中z值为负值代表啥意思