public void SimplsRegressionTest_new_method()
{
double[][] inputs;
double[][] outputs;
var pls = CreateWineExample_new_method(out inputs, out outputs);
MultivariateLinearRegression regression = pls.CreateRegression();
// test regression intercepts
double[] intercepts = regression.Intercepts;
double[] expectedI = { 60.717, -8.509, -4.362 };
Assert.IsTrue(intercepts.IsEqual(expectedI, 0.01));
// test regression coefficients
double[,] coefficients = regression.Coefficients;
double[,] expectedC =
{
{ -1.6981, -0.0566, 0.07075 },
{ 1.2735, 0.2924, 0.57193 },
{ -4.0000, 1.0000, 0.50000 },
{ 1.1792, 0.1226, 0.15919 }
};
Assert.IsTrue(coefficients.IsEqual(expectedC, 0.01));
// Test computation
double[][] aY = regression.Transform(inputs);
for (int i = 0; i < outputs.Length; i++)
{
for (int j = 0; j < outputs[i].Length; j++)
{
double actualOutput = aY[i][j];
double expectedOutput = outputs[i][j];
double delta = System.Math.Abs(actualOutput - expectedOutput);
double tol = 0.21 * expectedOutput;
Assert.IsTrue(delta <= tol);
}
}
// Test output transform
double[][] bY = pls.TransformOutput(outputs);
//string str = bY.ToCSharp();
double[][] expected = new double[][] {
new double[] { 55.1168117173553, 19.9814652854436, 23.1058025430891, 8.50770527860088E-15 },
new double[] { 22.6848893220127, 7.39445606402423, 6.83504323067901, 3.73246403168482E-15 },
new double[] { -0.877117473967739, -2.79934089543989, 0.379941427036153, -1.88457062440663E-16 },
new double[] { -48.8124364962975, -9.63329642474673, -25.0857657504786, -7.17568385594517E-15 },
new double[] { -28.1121470691027, -14.9432840292812, -5.23502145032562, -4.87602839189987E-15 }
};
Assert.IsTrue(expected.IsEqual(bY, 1e-6));
}