public void ConstructorTest1()
{
double[] times;
SurvivalOutcome[] censor;
CreateExample1(out times, out censor);
var distribution = EmpiricalHazardDistribution.Estimate(times, censor,
SurvivalEstimator.FlemingHarrington, HazardEstimator.BreslowNelsonAalen);
double[] t = distribution.Times;
double[] s = distribution.Survivals;
double[] h = distribution.Hazards;
double[] nt = distribution.Times.Distinct();
double[] nh = nt.Apply(distribution.HazardFunction);
var target = new EmpiricalHazardDistribution(nt, nh, SurvivalEstimator.FlemingHarrington);
for (int i = 0; i < times.Length; i++)
{
double expected = distribution.HazardFunction(times[i]);
double actual = target.HazardFunction(times[i]);
Assert.AreEqual(expected, actual);
}
for (int i = 0; i < times.Length; i++)
{
double expected = distribution.CumulativeHazardFunction(times[i]);
double actual = target.CumulativeHazardFunction(times[i]);
Assert.AreEqual(expected, actual, 1e-5);
}
for (int i = 0; i < times.Length; i++)
{
double expected = distribution.ProbabilityDensityFunction(times[i]);
double actual = target.ProbabilityDensityFunction(times[i]);
Assert.AreEqual(expected, actual, 1e-5);
}
}