Accord.Tests.Statistics.EmpiricalHazardDistributionTest.NelsonAalenTest1 C# (CSharp) Method

NelsonAalenTest1() private method

private NelsonAalenTest1 ( ) : void
return void
        public void NelsonAalenTest1()
        {
            // Example from
            // http://sas-and-r.blogspot.fr/2010/05/example-738-kaplan-meier-survival.html
            // http://sas-and-r.blogspot.fr/2010/05/example-739-nelson-aalen-estimate-of.html

            double[] times;
            SurvivalOutcome[] censor;
            CreateExample1(out times, out censor);

            // Test with Breslow method

            {
                var distribution = EmpiricalHazardDistribution.Estimate(times, censor, HazardTiesMethod.Breslow);

                double[] expectedCHF = 
                {
                    0.0000000, 0.1111111, 0.1111111, 0.1736111, 0.1736111, 0.2450397, 0.3219628,
                    0.3219628, 0.4128719, 0.4128719, 0.5239830, 0.6489830, 0.6489830, 0.8156496,
                    1.0156496, 1.0156496, 1.0156496, 1.5156496, 1.5156496
                };

                double[] actualCHF = times.Apply(distribution.CumulativeHazardFunction);

                for (int i = 0; i < actualCHF.Length; i++)
                    Assert.AreEqual(expectedCHF[i], actualCHF[i], 1e-6);


                //Assert.AreEqual(11.177, distribution.Mean);
                Assert.AreEqual(12, distribution.Median, 1e-5);
            }

            // Test with Effron method
            {
                var distribution = EmpiricalHazardDistribution.Estimate(times, censor);

                double[] expectedCHF = 
                {
                    0.0000000, 0.1111111, 0.1111111, 0.1756496, 0.1756496, 0.2497576, 0.3298003,
                    0.3298003, 0.4251104, 0.4251104, 0.5428935, 0.6764249, 0.6764249, 0.8587464,
                    1.0818900, 1.0818900, 1.0818900, 1.7750372, 1.7750372
                };

                double[] actualCHF = times.Apply(distribution.CumulativeHazardFunction);

                for (int i = 0; i < actualCHF.Length; i++)
                    Assert.AreEqual(expectedCHF[i], actualCHF[i], 1e-6);


                //Assert.AreEqual(11.177, distribution.Mean);
                Assert.AreEqual(12, distribution.Median, 1e-5);
            }
        }