public void DeLongVarianceTest()
{
// Example from Sampling Variability of Nonparametric Estimates of the
// Areas under Receiver Operating Characteristic Curves: An Update
bool yes = true;
bool no = false;
bool[] expected =
{
/* 1*/ yes,
/* 2*/ no,
/* 3*/ yes,
/* 4*/ no,
/* 5*/ no,
/* 6*/ yes,
/* 7*/ yes,
/* 8*/ no,
/* 9*/ no,
/*10*/ yes,
/*11*/ no,
/*12*/ no,
/*13*/ yes,
/*14*/ no,
/*15*/ no
};
int[] actual =
{
/* 1*/ 1,
/* 2*/ 2,
/* 3*/ 5,
/* 4*/ 1,
/* 5*/ 1,
/* 6*/ 1,
/* 7*/ 2,
/* 8*/ 1,
/* 9*/ 2,
/*10*/ 2,
/*11*/ 1,
/*12*/ 1,
/*13*/ 5,
/*14*/ 1,
/*15*/ 1
};
ReceiverOperatingCharacteristic curve = new ReceiverOperatingCharacteristic(expected, actual);
curve.Compute(10);
Assert.AreEqual(6, curve.PositiveResults.Length);
Assert.AreEqual(1, curve.PositiveResults[0]);
Assert.AreEqual(5, curve.PositiveResults[1]);
Assert.AreEqual(1, curve.PositiveResults[2]);
Assert.AreEqual(2, curve.PositiveResults[3]);
Assert.AreEqual(2, curve.PositiveResults[4]);
Assert.AreEqual(5, curve.PositiveResults[5]);
Assert.AreEqual(9, curve.NegativeResults.Length);
Assert.AreEqual(2, curve.NegativeResults[0]);
Assert.AreEqual(1, curve.NegativeResults[1]);
Assert.AreEqual(1, curve.NegativeResults[2]);
Assert.AreEqual(1, curve.NegativeResults[3]);
Assert.AreEqual(2, curve.NegativeResults[4]);
Assert.AreEqual(1, curve.NegativeResults[5]);
Assert.AreEqual(1, curve.NegativeResults[6]);
Assert.AreEqual(1, curve.NegativeResults[7]);
Assert.AreEqual(1, curve.NegativeResults[8]);
Assert.AreEqual(6, curve.PositiveAccuracies.Length);
Assert.AreEqual(0.3888, curve.PositiveAccuracies[0], 1e-4);
Assert.AreEqual(1.0000, curve.PositiveAccuracies[1], 1e-4);
Assert.AreEqual(0.3888, curve.PositiveAccuracies[2], 1e-4);
Assert.AreEqual(0.8888, curve.PositiveAccuracies[3], 1e-4);
Assert.AreEqual(0.8888, curve.PositiveAccuracies[4], 1e-4);
Assert.AreEqual(1.0000, curve.PositiveAccuracies[5], 1e-4);
Assert.AreEqual(9, curve.NegativeAccuracies.Length);
Assert.AreEqual(0.5000, curve.NegativeAccuracies[0], 1e-4);
Assert.AreEqual(0.8333, curve.NegativeAccuracies[1], 1e-4);
Assert.AreEqual(0.8333, curve.NegativeAccuracies[2], 1e-4);
Assert.AreEqual(0.8333, curve.NegativeAccuracies[3], 1e-4);
Assert.AreEqual(0.5000, curve.NegativeAccuracies[4], 1e-4);
Assert.AreEqual(0.8333, curve.NegativeAccuracies[5], 1e-4);
Assert.AreEqual(0.8333, curve.NegativeAccuracies[6], 1e-4);
Assert.AreEqual(0.8333, curve.NegativeAccuracies[7], 1e-4);
Assert.AreEqual(0.8333, curve.NegativeAccuracies[8], 1e-4);
Assert.IsFalse(curve.NegativeAccuracies.HasNaN());
Assert.IsFalse(curve.PositiveAccuracies.HasNaN());
Assert.AreEqual(0.1285, curve.StandardError, 1e-4);
Assert.AreEqual(0.0165, curve.Variance, 1e-4);
Assert.IsFalse(Double.IsNaN(curve.StandardError));
Assert.IsFalse(Double.IsNaN(curve.Variance));
}