diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/math/statistics/distribution/LogisticDistribution.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/math/statistics/distribution/LogisticDistribution.java | 60 |
1 files changed, 52 insertions, 8 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/math/statistics/distribution/LogisticDistribution.java b/src/de/lmu/ifi/dbs/elki/math/statistics/distribution/LogisticDistribution.java index 052847d6..12307a36 100644 --- a/src/de/lmu/ifi/dbs/elki/math/statistics/distribution/LogisticDistribution.java +++ b/src/de/lmu/ifi/dbs/elki/math/statistics/distribution/LogisticDistribution.java @@ -25,31 +25,44 @@ package de.lmu.ifi.dbs.elki.math.statistics.distribution; import java.util.Random; import de.lmu.ifi.dbs.elki.math.MathUtil; +import de.lmu.ifi.dbs.elki.utilities.Alias; +import de.lmu.ifi.dbs.elki.utilities.RandomFactory; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter; /** * Logistic distribution. * * @author Erich Schubert */ -public class LogisticDistribution implements Distribution { +@Alias({ "log" }) +public class LogisticDistribution extends AbstractDistribution { /** * Parameters: location and scale */ double location, scale; /** - * Random number generator + * Constructor. + * + * @param location Location + * @param scale Scale */ - Random random; + public LogisticDistribution(double location, double scale) { + this(location, scale, (Random) null); + } /** * Constructor. * * @param location Location * @param scale Scale + * @param random Random number generator */ - public LogisticDistribution(double location, double scale) { - this(location, scale, null); + public LogisticDistribution(double location, double scale, Random random) { + super(random); + this.location = location; + this.scale = scale; } /** @@ -59,11 +72,10 @@ public class LogisticDistribution implements Distribution { * @param scale Scale * @param random Random number generator */ - public LogisticDistribution(double location, double scale, Random random) { - super(); + public LogisticDistribution(double location, double scale, RandomFactory random) { + super(random); this.location = location; this.scale = scale; - this.random = random; } /** @@ -183,4 +195,36 @@ public class LogisticDistribution implements Distribution { public String toString() { return "LogisticDistribution(location=" + location + ", scale=" + scale + ")"; } + + /** + * Parameterization class + * + * @author Erich Schubert + * + * @apiviz.exclude + */ + public static class Parameterizer extends AbstractDistribution.Parameterizer { + /** Parameters. */ + double location, scale; + + @Override + protected void makeOptions(Parameterization config) { + super.makeOptions(config); + + DoubleParameter scaleP = new DoubleParameter(SCALE_ID); + if (config.grab(scaleP)) { + scale = scaleP.doubleValue(); + } + + DoubleParameter locationP = new DoubleParameter(LOCATION_ID); + if (config.grab(locationP)) { + location = locationP.doubleValue(); + } + } + + @Override + protected LogisticDistribution makeInstance() { + return new LogisticDistribution(location, scale, rnd); + } + } } |