私はここで怠惰であることを認めますが、平均ベクトルと共分散行列が与えられた正規分布の出力を提供する無料の math .net ライブラリを知っている人はいますか? ありがとう。
3932 次
2 に答える
2
Math.NETはあなたのために働くかもしれません。
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の他のリンクは古くなっています。
于 2012-02-22T16:06:14.090 に答える
2
二変量の場合、共分散行列を単一のパラメーター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;
}
参考として、ウィキペディアの二変量正規分布を参照してください。
于 2012-03-28T10:33:55.593 に答える