import combineMeans from "./combine_means.js";
/**
* 当需要合并两个已知方差的数值列表时,不必重新线性计算合并后列表的方差。
* 可以使用此函数通过提供第一个列表的方差、均值、数量,
* 以及第二个列表的方差、均值、数量来计算合并后的方差。
*
* @since 3.0.0
* @param {number} variance1 第一个列表的方差
* @param {number} mean1 第一个列表的均值
* @param {number} n1 第一个列表中的项目数量
* @param {number} variance2 第二个列表的方差
* @param {number} mean2 第二个列表的均值
* @param {number} n2 第二个列表中的项目数量
* @returns {number} 合并后的均值
*
* @example
* combineVariances(14 / 3, 5, 3, 8 / 3, 4, 3); // => 47 / 12
*/
function combineVariances(variance1, mean1, n1, variance2, mean2, n2) {
const newMean = combineMeans(mean1, n1, mean2, n2);
return (
(n1 * (variance1 + Math.pow(mean1 - newMean, 2)) +
n2 * (variance2 + Math.pow(mean2 - newMean, 2))) /
(n1 + n2)
);
}
export default combineVariances;