public void MahalanobisTest() { double[] x = { 1, 0 }; double[,] y = { { 1, 0 }, { 0, 8 }, { 0, 5 } }; // Computing the mean of y double[] meanY = Tools.Mean(y); // Computing the covariance matrix of y double[,] covY = Tools.Covariance(y, meanY); // Inverting the covariance matrix double[,] precision = covY.Inverse(); // Run actual test double expected = 1.33333; double actual = Distance.SquareMahalanobis(x, meanY, precision); Assert.AreEqual(expected, actual, 0.0001); }
public void MeanTest3() { double[] values = { -5, 0.2, 2 }; double expected = -0.93333333333333324; double actual = Tools.Mean(values); Assert.AreEqual(expected, actual); }
public void MeanTest() { double[,] matrix = { { 2, -1.0, 5 }, { 7, 0.5, 9 }, }; double[] rowMean = Tools.Mean(matrix, 0); Assert.IsTrue(rowMean.IsEqual(4.5000, -0.2500, 7.0000)); double[] colMean = Tools.Mean(matrix, 1); Assert.IsTrue(colMean.IsEqual(2, 5.5)); }
public void MeanTest4() { double[,] matrix = { { 2, -1.0, 5 }, { 7, 0.5, 9 }, }; double[] sums = Matrix.Sum(matrix); Assert.IsTrue(sums.IsEqual(9.0, -0.5, 14.0)); double[] expected = { 4.5000, -0.2500, 7.0000 }; double[] actual = Tools.Mean(matrix, sums); Assert.IsTrue(expected.IsEqual(actual)); }
public void StandardDeviationTest3() { double[,] matrix = { { 2, -1.0, 5 }, { 7, 0.5, 9 }, }; double[] means = Tools.Mean(matrix); Assert.IsTrue(means.IsEqual(4.5000, -0.2500, 7.0000)); double[] stdev = Tools.StandardDeviation(matrix, means); Assert.IsTrue(stdev.IsEqual(3.5355339059327378, 1.0606601717798212, 2.8284271247461903)); double[] stdev2 = Tools.StandardDeviation(matrix); Assert.IsTrue(stdev2.IsEqual(stdev)); }
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 = Tools.Mean(X, 1); double[] rowMean = Tools.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 = Tools.Scatter(X, colMean, 1); Assert.IsTrue(Matrix.IsEqual(S1, S2)); Assert.IsTrue(Matrix.IsEqual(S2, S3)); }
public void MedianTest() { double[,] matrix = { { 2, -1.0, 5 }, { 7, 1.7, 9 }, { -4, 2.5, 6 }, { 0.2, 0.5, -2 }, }; double[] mean = Tools.Mean(matrix); Assert.IsTrue(mean.IsEqual(1.3000, 0.9250, 4.5000)); double[] median = Tools.Median(matrix); Assert.IsTrue(median.IsEqual(1.1000, 1.1000, 5.5000)); matrix = matrix.Transpose(); mean = Tools.Mean(matrix); Assert.IsTrue(mean.IsEqual(2.0000, 5.8999999999999995, 1.5000, -0.43333333333333335)); median = Tools.Median(matrix); Assert.IsTrue(median.IsEqual(2.0000, 7.0000, 2.5000, 0.2000)); }