Accord.Statistics.Distributions.Multivariate.WishartDistribution.LogProbabilityDensityFunction C# (CSharp) Method

LogProbabilityDensityFunction() public method

Gets the log-probability density function (pdf) for this distribution evaluated at point x.
public LogProbabilityDensityFunction ( ) : double
return double
        public override double LogProbabilityDensityFunction(params double[] x)
        {
            double[,] X = x.Reshape(size, size);
            return LogProbabilityDensityFunction(X);
        }

Same methods

WishartDistribution::LogProbabilityDensityFunction ( double x ) : double

Usage Example

        public void ConstructorTest4()
        {
            // Create a Wishart distribution with the parameters:
            WishartDistribution wishart = new WishartDistribution(

                // Degrees of freedom
                degreesOfFreedom: 7,

                // Scale parameter
                scale: new double[,] 
                {
                    { 4, 1, 1 },  
                    { 1, 2, 2 },  // (must be symmetric and positive definite)
                    { 1, 2, 6 },
                }
            );

            // Common measures
            double[] var = wishart.Variance;  // { 224, 56, 504 }
            double[,] cov = wishart.Covariance;   // see below
            double[,] meanm = wishart.MeanMatrix; // see below
            
            //         224  63  175             28  7   7 
            //   cov =  63  56  112     mean =   7  14  14
            //         175 112  504              7  14  42

            // (the above matrix representations have been transcribed to text using)
            string scov = cov.ToString(DefaultMatrixFormatProvider.InvariantCulture);
            string smean = meanm.ToString(DefaultMatrixFormatProvider.InvariantCulture);

            // For compatibility reasons, .Mean stores a flattened mean matrix
            double[] mean = wishart.Mean; // { 28, 7, 7, 7, 14, 14, 7, 14, 42 }


            // Probability density functions
            double pdf = wishart.ProbabilityDensityFunction(new double[,] 
            {
                { 8, 3, 1 },
                { 3, 7, 1 },   //   0.000000011082455043473361
                { 1, 1, 8 },
            });

            double lpdf = wishart.LogProbabilityDensityFunction(new double[,] 
            {
                { 8, 3, 1 },
                { 3, 7, 1 },   // -18.317902605850534
                { 1, 1, 8 },
            });


            Assert.AreEqual(28.0, mean[0]);
            Assert.AreEqual(7.0, mean[1]);
            Assert.AreEqual(7.0, mean[3]);
            Assert.AreEqual(14.0, mean[4]);
            Assert.AreEqual(224.0, var[0]);
            Assert.AreEqual(56.0, var[1]);
            Assert.AreEqual(504.0, var[2]);
            Assert.AreEqual(224.0, cov[0, 0]);
            Assert.AreEqual(63.0, cov[0, 1]);
            Assert.AreEqual(63.0, cov[1, 0]);
            Assert.AreEqual(56.0, cov[1, 1]);
            Assert.AreEqual(0.00000001108245504347336, pdf);
            Assert.AreEqual(-18.317902605850534, lpdf);
        }