Accord.Tests.Statistics.GeneralConfusionMatrixTest.KappaVarianceTest1 C# (CSharp) Method

KappaVarianceTest1() private method

private KappaVarianceTest1 ( ) : void
return void
        public void KappaVarianceTest1()
        {
            // Example from Ientilucci, Emmett (2006). "On Using and Computing the Kappa Statistic".
            // Available on: http://www.cis.rit.edu/~ejipci/Reports/On_Using_and_Computing_the_Kappa_Statistic.pdf 

            // Note: Congalton's method uses the Delta Method for approximating the Kappa variance.

            {
                int[,] matrix = // Matrix A (page 1)
                {
                    { 317,  23,  0,  0 },
                    {  61, 120,  0,  0 },
                    {   2,   4, 60,  0 },
                    {  35,  29,  0,  8 },
                };

                GeneralConfusionMatrix a = new GeneralConfusionMatrix(matrix);

                // Method A row totals (page 2)
                Assert.AreEqual(340, a.RowTotals[0]);
                Assert.AreEqual(181, a.RowTotals[1]);
                Assert.AreEqual(66, a.RowTotals[2]);
                Assert.AreEqual(72, a.RowTotals[3]);

                // Method A col totals (page 2)
                Assert.AreEqual(415, a.ColumnTotals[0]);
                Assert.AreEqual(176, a.ColumnTotals[1]);
                Assert.AreEqual(60, a.ColumnTotals[2]);
                Assert.AreEqual(8, a.ColumnTotals[3]);

                // Number of samples for A (page 2)
                Assert.AreEqual(659, a.Samples);
                Assert.AreEqual(4, a.Classes);

                // Po for A (page 2)
                Assert.AreEqual(0.7663, a.OverallAgreement, 1e-4);
                Assert.IsFalse(double.IsNaN(a.OverallAgreement));

                // Pc for A (page 3)
                Assert.AreEqual(0.4087, a.ChanceAgreement, 1e-5);
                Assert.IsFalse(double.IsNaN(a.ChanceAgreement));



                // Kappa value k_hat for A (page 3)
                Assert.AreEqual(0.605, a.Kappa, 1e-3);
                Assert.IsFalse(double.IsNaN(a.Kappa));

                double var = a.Variance;
                double var0 = a.VarianceUnderNull;
                double varD = Accord.Statistics.Testing.KappaTest.DeltaMethodKappaVariance(a);

                // Variance value var_k for A (page 4)
                Assert.AreEqual(0.00073735, varD, 1e-8);


                Assert.AreEqual(0.00071760415564207924, var, 1e-10);
                Assert.AreEqual(0.00070251065008366978, var0, 1e-10);

                Assert.IsFalse(double.IsNaN(var));
                Assert.IsFalse(double.IsNaN(var0));
                Assert.IsFalse(double.IsNaN(varD));
            }

            {
                int[,] matrix = // Matrix B
                {
                    { 377,  79,  0,  0 },
                    {   2,  72,  0,  0 },
                    {  33,   5, 60,  0 },
                    {   3,  20,  0,  8 },
                };

                GeneralConfusionMatrix b = new GeneralConfusionMatrix(matrix);

                // Method B row totals (page 2)
                Assert.AreEqual(456, b.RowTotals[0]);
                Assert.AreEqual(74, b.RowTotals[1]);
                Assert.AreEqual(98, b.RowTotals[2]);
                Assert.AreEqual(31, b.RowTotals[3]);

                // Method B col totals (page 2)
                Assert.AreEqual(415, b.ColumnTotals[0]);
                Assert.AreEqual(176, b.ColumnTotals[1]);
                Assert.AreEqual(60, b.ColumnTotals[2]);
                Assert.AreEqual(8, b.ColumnTotals[3]);


                // Number of samples for B (page 2)
                Assert.AreEqual(659, b.Samples);
                Assert.AreEqual(4, b.Classes);

                // Po for B (page 2)
                Assert.AreEqual(0.7845, b.OverallAgreement, 1e-4);
                Assert.IsFalse(double.IsNaN(b.OverallAgreement));

                // Pc for B (page 3)
                Assert.AreEqual(0.47986, b.ChanceAgreement, 1e-5);
                Assert.IsFalse(double.IsNaN(b.ChanceAgreement));


                // Kappa value k_hat for B (page 3)
                Assert.AreEqual(0.586, b.Kappa, 1e-3);
                Assert.IsFalse(double.IsNaN(b.Kappa));


                double var = b.Variance;
                double var0 = b.VarianceUnderNull;
                double varD = Accord.Statistics.Testing.KappaTest.DeltaMethodKappaVariance(b);

                // Variance value var_k for A (page 4)
                Assert.AreEqual(0.00087457, varD, 1e-8);


                Assert.AreEqual(0.00083016849579382347, var, 1e-10);
                Assert.AreEqual(0.00067037111046188824, var0, 1e-10);

                Assert.IsFalse(double.IsNaN(var));
                Assert.IsFalse(double.IsNaN(var0));
                Assert.IsFalse(double.IsNaN(varD));
            }
        }