如何确定两个平均值之间是否存在统计学上的显着差异?

机器算法验证 假设检验 统计学意义
2022-04-09 00:20:23

我正在用 C# 和 Java 编写一个基准程序作为 CS 类的第一个作业。我们应该写一些关于我们的方法和基准测试结果的报告,我想在我的中添加一个统计组件。

我有来自每种语言的 15 个运行时样本,以及每种语言的平均值和标准差。如何确定它们之间是否存在统计学上的显着差异?

3个回答

如果每种语言的运行时样本大致呈正态分布*(很可能是这种情况),那么您可以使用t-test,特别是具有不等方差的独立双样本 t-test

如果你安装了 R,你可以通过运行t.test(x = c_sharp_samples, y = java_samples).

但是,如果您想手动运行测试,请首先计算:

  • t=X1¯X2¯sX1¯X2¯,其中是 C# 样本的样本均值,是 C# 样本的样本标准差,是 C# 样本的数量,依此类推。sX1¯X2¯=s12n1+s22n2X1¯s1n1
  • df=(s12/n1+s22/n2)2(s12/n1)2/(n11)+(s22/n2)2/(n21)

然后(大约)遵循具有自由度的学生 t 分布,因此在适当的表中查找(或使用一些 t 分布计算器)。tdft

*即使每种语言的运行时样本不是正态分布的,15 个样本也可能足以让正常近似值(即 CLT)发挥作用,所以你应该没问题。但是,如果您想正式一点并且不想做出这种正常假设,则可以改用(非参数)Mann Whitney 检验

置换测试是另一种可能性,尽管我认为对于您描述的问题,已经提到的替代方案会更好。

听起来您想要的是使用 t 检验(这里是维基百科页面)。

如果您不假设您的观察结果是正常分布的,那么试试这个Mann-Whitney U 检验(但它不能单独从平均值/标准差计算)。

确保您的观察是独立的,以便保持 t 检验的有效性。

祝你好运,在你做事之前阅读更多关于这个的信息!