CreateInputOutputsExample2() public static method

public static CreateInputOutputsExample2 ( double &inputs, int &outputs ) : void
inputs double
outputs int
return void
        public void CoefficientsTest1()
        {
            double[][] inputs;
            int[]      outputs;

            MultinomialLogisticRegressionTest.CreateInputOutputsExample2(out inputs, out outputs);

            var analysis = new MultinomialLogisticRegressionAnalysis(inputs, outputs);

            int inputCount = 5;
            int coeffCount = inputCount + 1;

            var mlr = analysis.regression;

            analysis.Iterations = 100;
            analysis.Tolerance  = 1e-6;

            analysis.Compute();

            foreach (var coefficient in analysis.Coefficients)
            {
                Assert.IsNotNull(coefficient.Analysis);
                Assert.IsNotNull(coefficient.Confidence);
                Assert.IsNotNull(coefficient.ConfidenceLower);
                Assert.IsNotNull(coefficient.ConfidenceUpper);
                Assert.IsNotNull(coefficient.Name);
                Assert.IsNotNull(coefficient.Class);
                Assert.IsNotNull(coefficient.StandardError);
                Assert.IsNotNull(coefficient.Value);
            }


            Assert.AreEqual(13, analysis.Coefficients.Count);
            Assert.AreEqual(2, analysis.CoefficientValues.Length);

            var class1 = analysis.CoefficientValues[0];

            Assert.AreEqual(-11.774547061739975, class1[0], 1e-10);
            Assert.AreEqual(0.523813075806107, class1[1], 1e-10);
            Assert.AreEqual(0.36820307277024716, class1[2], 1e-10);
            Assert.AreEqual(0, class1[3], 1e-6);
            Assert.AreEqual(0, class1[4], 1e-6);
            Assert.AreEqual(0, class1[5], 1e-6);

            var class2 = analysis.CoefficientValues[1];

            Assert.AreEqual(-22.721272157115514, class2[0], 1e-10);
            Assert.AreEqual(0.46593949381162203, class2[1], 1e-10);
            Assert.AreEqual(0.68590438098052586, class2[2], 1e-10);
            Assert.AreEqual(0, class2[3], 1e-6);
            Assert.AreEqual(0, class2[4], 1e-6);
            Assert.AreEqual(0, class2[5], 1e-6);
        }
        public void ComputeTest2()
        {
            double[][] inputs;
            int[]      outputs;

            MultinomialLogisticRegressionTest.CreateInputOutputsExample2(out inputs, out outputs);

            var analysis = new MultinomialLogisticRegressionAnalysis(inputs, outputs);

            int inputCount  = 5;
            int outputCount = 3;
            int coeffCount  = inputCount + 1;

            var mlr = analysis.regression;

            Assert.AreEqual(inputCount, mlr.Inputs);
            Assert.AreEqual(outputCount, mlr.Categories);

            Assert.AreEqual(inputCount, analysis.Inputs.Length);
            Assert.AreEqual(outputCount, analysis.OutputNames.Length);

            analysis.Iterations = 100;
            analysis.Tolerance  = 1e-6;

            analysis.Compute();

            Assert.AreEqual(outputCount - 1, analysis.CoefficientValues.Length);
            Assert.AreEqual(outputCount - 1, analysis.StandardErrors.Length);

            Assert.AreEqual(outputCount - 1, analysis.WaldTests.Length);
            Assert.AreEqual(outputCount - 1, analysis.Confidences.Length);

            for (int i = 0; i < analysis.CoefficientValues.Length; i++)
            {
                Assert.AreEqual(coeffCount, analysis.CoefficientValues[i].Length);
                Assert.AreEqual(coeffCount, analysis.StandardErrors[i].Length);

                Assert.AreEqual(coeffCount, analysis.WaldTests[i].Length);
                Assert.AreEqual(coeffCount, analysis.Confidences[i].Length);

                for (int j = 0; j < analysis.CoefficientValues[i].Length; j++)
                {
                    Assert.IsFalse(double.IsNaN(analysis.CoefficientValues[i][j]));
                    Assert.IsFalse(double.IsNaN(analysis.StandardErrors[i][j]));
                }
            }

            var coefficients = analysis.CoefficientValues;

            // brand 2
            Assert.AreEqual(-11.774655, coefficients[0][0], 1e-3); // intercept
            Assert.AreEqual(0.523814, coefficients[0][1], 1e-3);   // female
            Assert.AreEqual(0.368206, coefficients[0][2], 1e-3);   // age

            // brand 3
            Assert.AreEqual(-22.721396, coefficients[1][0], 1e-3); // intercept
            Assert.AreEqual(0.465941, coefficients[1][1], 1e-3);   // female
            Assert.AreEqual(0.685908, coefficients[1][2], 1e-3);   // age

            var standard = analysis.StandardErrors;

            Assert.AreEqual(-702.97, analysis.LogLikelihood, 1e-2);
            Assert.AreEqual(185.85, analysis.ChiSquare.Statistic, 1e-2);
            Assert.AreEqual(1405.9414080469473, analysis.Deviance, 1e-5);
        }