public void EquivalencyTest2()
{
// when ksi -> 0, the shifted log-logistic reduces to the logistic distribution.
double sigma = 0.42; // scale
double ksi = 1e-10; // shape
double mu = 2.4; // location
var target = new ShiftedLogLogisticDistribution(location: mu, scale: sigma, shape: ksi);
var log = new LogisticDistribution(mu, sigma);
Assert.AreEqual(log.Mean, target.Mean, 1e-6);
Assert.AreEqual(log.Median, target.Median, 1e-15);
Assert.AreEqual(log.Mode, target.Mode, 1e-15);
//Assert.AreEqual(log.Variance, target.Variance);
double actual, expected;
for (double i = -10; i < 10; i += 0.1)
{
expected = log.DistributionFunction(i);
actual = target.DistributionFunction(i);
Assert.IsTrue(expected.IsRelativelyEqual(actual, 1e-5));
expected = log.ProbabilityDensityFunction(i);
actual = target.ProbabilityDensityFunction(i);
Assert.IsTrue(expected.IsRelativelyEqual(actual, 1e-5));
expected = log.LogProbabilityDensityFunction(i);
actual = target.LogProbabilityDensityFunction(i);
Assert.IsTrue(expected.IsRelativelyEqual(actual, 1e-5));
expected = log.ComplementaryDistributionFunction(i);
actual = target.ComplementaryDistributionFunction(i);
Assert.IsTrue(expected.IsRelativelyEqual(actual, 1e-5));
double p = log.DistributionFunction(i);
expected = log.InverseDistributionFunction(p);
actual = target.InverseDistributionFunction(p);
Assert.AreEqual(expected, actual, 1e-5);
expected = log.HazardFunction(i);
actual = target.HazardFunction(i);
Assert.IsTrue(expected.IsRelativelyEqual(actual, 1e-5));
expected = log.CumulativeHazardFunction(i);
actual = target.CumulativeHazardFunction(i);
Assert.IsTrue(expected.IsRelativelyEqual(actual, 1e-5));
}
}