Accord.Tests.Statistics.ToolsTest.CenteringTest C# (CSharp) Method

CenteringTest() private method

private CenteringTest ( ) : void
return void
        public void CenteringTest()
        {

            double[,] C2 = Matrix.Centering(2);

            Assert.IsTrue(Matrix.IsEqual(C2, new double[,] { 
                                                             {  0.5, -0.5 },
                                                             { -0.5,  0.5 }
                                                           }));

            double[,] X = {
                              { 1, 5, 2, 0   },
                              { 6, 2, 3, 100 },
                              { 2, 5, 8, 2   },
                          };



            double[,] CX = Matrix.Centering(3).Multiply(X); // Remove means from rows
            double[,] XC = X.Multiply(Matrix.Centering(4)); // Remove means from columns

            double[] colMean = Measures.Mean(X, 1);
            double[] rowMean = Measures.Mean(X, 0);

            Assert.IsTrue(rowMean.IsEqual(new double[] { 3.0, 4.0, 4.3333, 34.0 }, 0.001));
            Assert.IsTrue(colMean.IsEqual(new double[] { 2.0, 27.75, 4.25 }, 0.001));


            double[,] Xr = X.Subtract(rowMean, 0);          // Remove means from rows
            double[,] Xc = X.Subtract(colMean, 1);          // Remove means from columns

            Assert.IsTrue(Matrix.IsEqual(XC, Xc));
            Assert.IsTrue(Matrix.IsEqual(CX, Xr, 0.00001));

            double[,] S1 = XC.Multiply(X.Transpose());
            double[,] S2 = Xc.Multiply(Xc.Transpose());
            double[,] S3 = Measures.Scatter(X, colMean, 1);

            Assert.IsTrue(Matrix.IsEqual(S1, S2));
            Assert.IsTrue(Matrix.IsEqual(S2, S3));

            double[,] S4 = XC.DotWithTransposed(X);
            double[,] S5 = Xc.DotWithTransposed(Xc);

            Assert.IsTrue(Matrix.IsEqual(S1, S4));
            Assert.IsTrue(Matrix.IsEqual(S2, S5));
        }