многомерное нормальное распределение с учетом среднего вектора и ковариационной матрицы - PullRequest
1 голос
/ 22 февраля 2012

Я признаю, что мне здесь лень, но кто-нибудь знает о бесплатной математической библиотеке .net, которая дает мне вывод нормального распределения с учетом среднего вектора и ковариационной матрицы?Спасибо.

Ответы [ 2 ]

2 голосов
/ 28 марта 2012

В двумерном случае вы можете выразить ковариационную матрицу как один параметр 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;
}

См. Двусторонние нормальные распределения в Википедии для справки.

2 голосов
/ 22 февраля 2012

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 устарели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...