Accord.Tests.Statistics.Models.Fields.ForwardBackwardAlgorithmTest.LogBackwardTest C# (CSharp) Method

LogBackwardTest() private method

private LogBackwardTest ( ) : void
return void
        public void LogBackwardTest()
        {
            HiddenMarkovModel hmm = Accord.Tests.Statistics.Models.Markov.
                ForwardBackwardAlgorithmTest.CreateModel2();

            MarkovDiscreteFunction function = new MarkovDiscreteFunction(hmm);


            int[] observations = { 0, 1, 1, 0 };

            double logLikelihood;
            double[,] expected = Matrix.Log(Accord.Statistics.Models.Fields.
              ForwardBackwardAlgorithm.Backward(function.Factors[0], observations, 0));

            double[,] actual = Accord.Statistics.Models.Fields.
                ForwardBackwardAlgorithm.LogBackward(function.Factors[0], observations, 0, out logLikelihood);

            Assert.IsTrue(expected.IsEqual(actual, 1e-10));


            foreach (double e in actual)
                Assert.IsFalse(double.IsNaN(e));

            double p = System.Math.Exp(logLikelihood);
            Assert.AreEqual(0.054814695, p, 1e-8);
            Assert.IsFalse(double.IsNaN(p));
        }