给定均值向量和协方差矩阵的多元正态分布

本文关键字:正态分布 方差矩 向量 | 更新日期: 2023-09-27 18:25:31

我承认我在这里很懒,但有人知道一个免费的math.net库吗?它可以在给定均值向量和协方差矩阵的情况下为我提供正态分布的输出?谢谢

给定均值向量和协方差矩阵的多元正态分布

Math.NET可能适合您。

http://www.mathdotnet.com/

http://numerics.mathdotnet.com/probability-distributions/

多元分布

Dirichlet
Inverse Wishart
Matrix Normal
Multinomial
NormalGamma
Wishart

功能参考:

http://api.mathdotnet.com/Numerics/MathNet.Numerics.Distributions/MatrixNormal.htm

编辑:注意,你必须从这里下载

http://mathnetnumerics.codeplex.com/releases/view/56448

mathdotnet.com上的其他链接已经过时。

在双变量情况下,可以将协方差矩阵表示为单个参数rho。这里有一个直接实现这一点的方法:

[Pure]
public static double GetBivariateGuassian(double muX, double sigmaX, double muY, double sigmaY, double x, double y, double rho = 0)
{
    var sigmaXSquared = Math.Pow(sigmaX, 2);
    var sigmaYSquared = Math.Pow(sigmaY, 2);
    var dX = x - muX;
    var dY = y - muY;
    var exponent = -0.5;
    var normaliser = 2 * Math.PI * sigmaX * sigmaY;
    if (rho != 0)
    {
        normaliser *= Math.Sqrt(1 - Math.Pow(rho, 2));
        exponent /= 1 - Math.Pow(rho, 2);
    }
    var sum = Math.Pow(dX, 2)/sigmaXSquared;
    sum += Math.Pow(dY, 2)/sigmaYSquared;
    sum -= 2*rho*dX*dY/(sigmaX*sigmaY);
    exponent *= sum;
    return Math.Exp(exponent) / normaliser;
}

参考维基百科上的双变量正态分布。