Package jdistlib

Class NumericalDiscreteDistribution

java.lang.Object
jdistlib.generic.GenericDistribution
jdistlib.NumericalDiscreteDistribution
All Implemented Interfaces:
AtomAwareDistribution, SupportedDistribution

public class NumericalDiscreteDistribution extends GenericDistribution implements SupportedDistribution, AtomAwareDistribution
A finite discrete distribution obtained by normalizing a nonnegative weight function over a declared set of numeric outcomes.

The weight function is evaluated once during construction. Outcomes are sorted, must be unique and finite, and may be supplied explicitly or as an inclusive integer range. Summation is scaled to avoid overflow when weights have a large common magnitude.

  • Constructor Details

    • NumericalDiscreteDistribution

      public NumericalDiscreteDistribution(UnivariateFunction weight, double[] support)
      Constructs a distribution over an arbitrary finite set of outcomes.
      Parameters:
      weight - nonnegative unnormalized probability-mass function
      support - finite, unique numeric outcomes
      Throws:
      IllegalArgumentException - if the support or a weight is invalid
    • NumericalDiscreteDistribution

      public NumericalDiscreteDistribution(UnivariateFunction weight, int lowerInclusive, int upperInclusive)
      Constructs a distribution over every integer in the inclusive range.
  • Method Details

    • builder

      public static NumericalDiscreteDistribution.Builder builder()
      Returns a fluent builder for a finite custom discrete distribution.
    • fromLogWeights

      public static NumericalDiscreteDistribution fromLogWeights(UnivariateFunction logWeight, double[] support)
      Constructs over explicit outcomes from unnormalized log-weights.
    • fromLogWeights

      public static NumericalDiscreteDistribution fromLogWeights(UnivariateFunction logWeight, int lowerInclusive, int upperInclusive)
      Constructs over an inclusive integer range from unnormalized log-weights.
    • getSupport

      public double[] getSupport()
      Returns the sorted declared support.
    • getLowerBound

      public double getLowerBound()
      Specified by:
      getLowerBound in interface SupportedDistribution
    • getUpperBound

      public double getUpperBound()
      Specified by:
      getUpperBound in interface SupportedDistribution
    • getProbabilities

      public double[] getProbabilities()
      Returns probabilities corresponding to getSupport().
    • getNormalizationConstant

      public double getNormalizationConstant()
      Returns the normalization constant, or positive infinity if its magnitude exceeds the representable double range.
    • getLogNormalizationConstant

      public double getLogNormalizationConstant()
      Returns the log normalization constant without overflow.
    • analyzeDistribution

      public DistributionAnalysis analyzeDistribution()
      Runs mass, CDF, quantile, tail, and moment diagnostics.
    • analyzeDistribution

      public DistributionAnalysis analyzeDistribution(MomentAnalysisOptions settings)
      Runs diagnostics with user-selected absolute-moment orders and tail split.
    • density

      public double density(double x, boolean log)
      Specified by:
      density in class GenericDistribution
    • cumulative

      public double cumulative(double x, boolean lowerTail, boolean logP)
      Specified by:
      cumulative in class GenericDistribution
    • quantile

      public double quantile(double p, boolean lowerTail, boolean logP)
      Specified by:
      quantile in class GenericDistribution
    • random

      public double random()
      Specified by:
      random in class GenericDistribution
    • atomProbability

      public double atomProbability(double x)
      Description copied from interface: AtomAwareDistribution
      Returns P(X = x); zero means no declared atom at x.
      Specified by:
      atomProbability in interface AtomAwareDistribution
    • getSamplingStrategy

      public SamplingStrategy getSamplingStrategy()
    • getSamplingStrategyExplanation

      public String getSamplingStrategyExplanation()
    • expectation

      public double expectation(UnivariateFunction function)
      Exactly evaluates E[g(X)] over the retained finite support.
    • rawMoment

      public double rawMoment(double order)
    • centralMoment

      public double centralMoment(double order)
    • entropy

      public double entropy()
      Shannon entropy in nats.
    • mode

      public double mode()
      Returns the smallest outcome having maximum mass.
    • probabilityInterval

      public ProbabilityInterval probabilityInterval(double probability)
      Returns an equal-tail interval; its actual discrete mass may exceed the request.