public void VariableImportanceTest()
{
double[,] X =
{
{ 2.5, 2.4 },
{ 0.5, 0.7 },
{ 2.2, 2.9 },
{ 1.9, 2.2 },
{ 3.1, 3.0 },
{ 2.3, 2.7 },
{ 2.0, 1.6 },
{ 1.0, 1.1 },
{ 1.5, 1.6 },
{ 1.1, 0.9 },
};
double[,] Y =
{
{ 1 },
{ 0 },
{ 1 },
{ 0 },
{ 1 },
{ 1 },
{ 0 },
{ 0 },
{ 0 },
{ 0 },
};
var pls = new PartialLeastSquaresAnalysis(X, Y, AnalysisMethod.Center,
PartialLeastSquaresAlgorithm.NIPALS);
pls.Compute(1);
double[][] actual1 = pls.Importance;
double[] actual1v = pls.Factors[0].VariableImportance;
double[] expected1v = { 0.9570761, 1.041156 };
Assert.IsTrue(Matrix.IsEqual(actual1v, expected1v, 0.0001));
pls.Compute(2);
double[] actual2v1 = pls.Factors[0].VariableImportance;
double[] expected2v1 = { 0.9570761, 1.041156 };
Assert.IsTrue(Matrix.IsEqual(actual2v1, expected2v1, 0.0001));
double[] actual2v2 = pls.Factors[1].VariableImportance;
double[] expected2v2 = { 1.0187709, 0.980870 };
Assert.IsTrue(Matrix.IsEqual(actual2v2, expected2v2, 0.0001));
double[][] actual2 = pls.Importance;
double[,] expected2 = new double[,]
{
{ 0.9570761, 1.0187709 },
{ 1.041156, 0.980870 }
};
Assert.IsTrue(Matrix.IsEqual(actual2, expected2, 0.0001));
}