public static function populationCovariance(array $X, array $Y)
{
if (count($X) !== count($Y)) {
throw new Exception\BadDataException('X and Y must have the same number of elements.');
}
$μₓ = Average::mean($X);
$μy = Average::mean($Y);
$∑⟮xᵢ − μₓ⟯⟮yᵢ − μy⟯ = array_sum(array_map(function ($xᵢ, $yᵢ) use($μₓ, $μy) {
return ($xᵢ - $μₓ) * ($yᵢ - $μy);
}, $X, $Y));
$N = count($X);
return $∑⟮xᵢ − μₓ⟯⟮yᵢ − μy⟯ / $N;
}