我正在编写一些代码(JavaScript)来比较基准测试结果。我正在使用Welch T 检验,因为基准测试之间的方差和/或样本量很可能不同。临界值是从 T 分布表中以 95% 置信度(双边)提取的。
韦尔奇公式非常简单,但我对重要结果的解释很模糊。我不确定临界值是否应该除以 2。感谢您帮助清理。我也应该四舍五入自由度df
来查找临界值还是Math.ceil
更Math.floor
合适?
/**
* Determines if the benchmark's hertz is higher than another.
* @member Benchmark
* @param {Object} other The benchmark to compare.
* @returns {Number} Returns `1` if higher, `-1` if lower, and `0` if indeterminate.
*/
function compare(other) {
// use welch t-test
// http://frank.mtsu.edu/~dkfuller/notes302/welcht.pdf
// http://www.public.iastate.edu/~alicia/stat328/Regression%20inference-part2.pdf
var a = this.stats,
b = other.stats,
pow = Math.pow,
bitA = a.variance / a.size,
bitB = b.variance / b.size,
df = pow(bitA + bitB, 2) / ((pow(bitA, 2) / a.size - 1) + (pow(bitB, 2) / b.size - 1)),
t = (a.mean - b.mean) / Math.sqrt(bitA + bitB),
c = getCriticalValue(Math.round(df));
// check if t-statistic is significant
return Math.abs(t) > c / 2 ? (t > 0 ? 1 : -1) : 0;
}
更新:感谢到目前为止的所有回复!我的同事在这里发布了更多信息,以防影响建议。