public void SimplsRegressionTest()
{
double[,] inputs;
double[,] outputs;
var pls = CreateWineExample(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.Compute(inputs.ToJagged());
for (int i = 0; i < outputs.GetLength(0); i++)
{
for (int j = 0; j < outputs.GetLength(1); 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);
}
}
}