public void RunTest2()
{
// Data from: http://www.sph.emory.edu/~cdckms/CoxPH/prophaz2.html
double[,] data =
{
{ 50, 30, 1, 0 },
{ 70, 22, 2, 1 },
{ 45, 12, 3, 0 },
{ 35, 22, 5, 0 },
{ 62, 54, 7, 1 },
{ 50, 12, 11, 0 },
{ 45, 11, 4, 0 },
{ 57, 62, 6, 0 },
{ 32, 16, 8, 0 },
{ 57, 14, 9, 1 },
{ 60, 12, 10, 1 },
};
var regression = new ProportionalHazards(2);
double[][] inputs = data.Submatrix(null, 0, 1).ToJagged();
double[] time = data.GetColumn(2);
SurvivalOutcome[] output = data.GetColumn(3).To<SurvivalOutcome[]>();
var target = new ProportionalHazardsNewtonRaphson(regression);
double error = target.Run(inputs, time, output);
double log = -2 * regression.GetPartialLogLikelihood(inputs, time, output);
Assert.AreEqual(3.4261, log, 1e-4);
Assert.IsFalse(Double.IsNaN(log));
double actual = regression.Coefficients[0];
Assert.AreEqual(0.3909, regression.Coefficients[0], 1e-4);
Assert.IsFalse(Double.IsNaN(regression.Coefficients[0]));
Assert.AreEqual(0.0424, regression.Coefficients[1], 1e-4);
Assert.IsFalse(Double.IsNaN(regression.Coefficients[1]));
Assert.AreEqual(0.2536, regression.StandardErrors[0], 1e-4);
Assert.IsFalse(Double.IsNaN(regression.StandardErrors[0]));
Assert.AreEqual(0.0624, regression.StandardErrors[1], 1e-4);
Assert.IsFalse(Double.IsNaN(regression.StandardErrors[1]));
}