public void ComputeTest2()
{
double[][] input =
{
new double[] { 55, 0 }, // 0 - no cancer
new double[] { 28, 0 }, // 0
new double[] { 65, 1 }, // 0
new double[] { 46, 0 }, // 1 - have cancer
new double[] { 86, 1 }, // 1
new double[] { 56, 1 }, // 1
new double[] { 85, 0 }, // 0
new double[] { 33, 0 }, // 0
new double[] { 21, 1 }, // 0
new double[] { 42, 1 }, // 1
};
double[] output =
{
0, 0, 0, 1, 1, 1, 0, 0, 0, 1
};
var regression = new GeneralizedLinearRegression(new ProbitLinkFunction(), inputs: 2);
var teacher = new IterativeReweightedLeastSquares(regression);
double delta = 0;
do
{
// Perform an iteration
delta = teacher.Run(input, output);
} while (delta > 0.001);
Assert.AreEqual(3, regression.Coefficients.Length);
Assert.AreEqual(-1.4807594445304693, regression.Coefficients[0],1e-8);
Assert.AreEqual(0.012417175632016827, regression.Coefficients[1], 1e-8);
Assert.AreEqual(1.072665379969842, regression.Coefficients[2], 1e-8);
Assert.IsFalse(regression.Coefficients.HasNaN());
Assert.AreEqual(3, regression.StandardErrors.Length);
Assert.AreEqual(1.6402037052797314, regression.StandardErrors[0], 1e-8);
Assert.AreEqual(0.026119425452145524, regression.StandardErrors[1], 1e-8);
Assert.AreEqual(1.1297252500874606, regression.StandardErrors[2], 1e-8);
Assert.IsFalse(regression.StandardErrors.HasNaN());
}