Accord.Tests.Statistics.Models.Fields.ConditionalRandomFieldTest.LikelihoodTest C# (CSharp) Method

LikelihoodTest() private method

private LikelihoodTest ( ) : void
return void
        public void LikelihoodTest()
        {
            var hmm = DiscreteHiddenMarkovModelFunctionTest.CreateModel2();
            
            int states = hmm.States;
            int symbols = hmm.Symbols;

            var hcrf = new ConditionalRandomField<int>(states,
                new MarkovDiscreteFunction(hmm));

            var hmm0 = new HiddenMarkovModel(states, symbols);
            var hcrf0 = new ConditionalRandomField<int>(states, 
                new MarkovDiscreteFunction(hmm0));


            int[] observations = new int[] { 0, 0, 1, 1, 1, 2 };
            double la = hcrf.LogLikelihood(observations, observations);
            double lb = hcrf0.LogLikelihood(observations, observations);
            Assert.IsTrue(la > lb);

            double lc = hmm.Evaluate(observations, observations);
            double ld = hmm0.Evaluate(observations, observations);
            Assert.IsTrue(lc > ld);

            double za = hcrf.LogPartition(observations);
            double zb = hcrf0.LogPartition(observations);

            la += za;
            lb += zb;

            Assert.AreEqual(la, lc, 1e-6);
            Assert.AreEqual(lb, ld, 1e-6);
        }