Class ZipfDistributionImpl

    • Constructor Detail

      • ZipfDistributionImpl

        public ZipfDistributionImpl​(int numberOfElements,
                                    double exponent)
                             throws java.lang.IllegalArgumentException
        Create a new Zipf distribution with the given number of elements and exponent. Both values must be positive; otherwise an IllegalArgumentException is thrown.
        Parameters:
        numberOfElements - the number of elements
        exponent - the exponent
        Throws:
        java.lang.IllegalArgumentException - if n ≤ 0 or s ≤ 0.0
    • Method Detail

      • getNumberOfElements

        public int getNumberOfElements()
        Get the number of elements (e.g. corpus size) for the distribution.
        Specified by:
        getNumberOfElements in interface ZipfDistribution
        Returns:
        the number of elements
      • setNumberOfElements

        @Deprecated
        public void setNumberOfElements​(int n)
        Deprecated.
        as of 2.1 (class will become immutable in 3.0)
        Set the number of elements (e.g. corpus size) for the distribution. The parameter value must be positive; otherwise an IllegalArgumentException is thrown.
        Specified by:
        setNumberOfElements in interface ZipfDistribution
        Parameters:
        n - the number of elements
        Throws:
        java.lang.IllegalArgumentException - if n ≤ 0
      • getExponent

        public double getExponent()
        Get the exponent characterising the distribution.
        Specified by:
        getExponent in interface ZipfDistribution
        Returns:
        the exponent
      • setExponent

        @Deprecated
        public void setExponent​(double s)
        Deprecated.
        as of 2.1 (class will become immutable in 3.0)
        Set the exponent characterising the distribution. The parameter value must be positive; otherwise an IllegalArgumentException is thrown.
        Specified by:
        setExponent in interface ZipfDistribution
        Parameters:
        s - the exponent
        Throws:
        java.lang.IllegalArgumentException - if s ≤ 0.0
      • probability

        public double probability​(int x)
        The probability mass function P(X = x) for a Zipf distribution.
        Specified by:
        probability in interface IntegerDistribution
        Parameters:
        x - the value at which the probability density function is evaluated.
        Returns:
        the value of the probability mass function at x
      • getDomainLowerBound

        protected int getDomainLowerBound​(double p)
        Access the domain value lower bound, based on p, used to bracket a PDF root.
        Specified by:
        getDomainLowerBound in class AbstractIntegerDistribution
        Parameters:
        p - the desired probability for the critical value
        Returns:
        domain value lower bound, i.e. P(X < lower bound) < p
      • getDomainUpperBound

        protected int getDomainUpperBound​(double p)
        Access the domain value upper bound, based on p, used to bracket a PDF root.
        Specified by:
        getDomainUpperBound in class AbstractIntegerDistribution
        Parameters:
        p - the desired probability for the critical value
        Returns:
        domain value upper bound, i.e. P(X < upper bound) > p
      • getSupportLowerBound

        public int getSupportLowerBound()
        Returns the lower bound of the support for the distribution. The lower bound of the support is always 1 no matter the parameters.
        Returns:
        lower bound of the support (always 1)
        Since:
        2.2
      • getSupportUpperBound

        public int getSupportUpperBound()
        Returns the upper bound of the support for the distribution. The upper bound of the support is the number of elements
        Returns:
        upper bound of the support
        Since:
        2.2
      • getNumericalMean

        protected double getNumericalMean()
        Returns the mean. For number of elements N and exponent s, the mean is Hs1 / Hs where
        • Hs1 = generalizedHarmonic(N, s - 1)
        • Hs = generalizedHarmonic(N, s)
        Returns:
        the mean
        Since:
        2.2
      • getNumericalVariance

        protected double getNumericalVariance()
        Returns the variance. For number of elements N and exponent s, the mean is (Hs2 / Hs) - (Hs1^2 / Hs^2) where
        • Hs2 = generalizedHarmonic(N, s - 2)
        • Hs1 = generalizedHarmonic(N, s - 1)
        • Hs = generalizedHarmonic(N, s)
        Returns:
        the variance
        Since:
        2.2