Show / Hide Table of Contents

    Struct GammaPower

    The distribution of a Gamma variable raised to a power. The Weibull distribution is a special case.

    Implements
    IDistribution<Double>
    ICloneable
    HasPoint<Double>
    CanGetLogProb<Double>
    SettableTo<GammaPower>
    SettableToProduct<GammaPower>
    SettableToProduct<GammaPower, GammaPower>
    Diffable
    SettableToUniform
    SettableToRatio<GammaPower>
    SettableToRatio<GammaPower, GammaPower>
    SettableToPower<GammaPower>
    SettableToWeightedSum<GammaPower>
    Sampleable<Double>
    CanGetMean<Double>
    CanGetVariance<Double>
    CanGetMeanAndVarianceOut<Double, Double>
    CanSetMeanAndVariance<Double, Double>
    CanGetLogAverageOf<GammaPower>
    CanGetLogAverageOfPower<GammaPower>
    CanGetAverageLog<GammaPower>
    CanGetLogNormalizer
    Namespace: Microsoft.ML.Probabilistic.Distributions
    Assembly: Microsoft.ML.Probabilistic.dll
    Syntax
    public struct GammaPower : IDistribution<double>, ICloneable, HasPoint<double>, CanGetLogProb<double>, SettableTo<GammaPower>, SettableToProduct<GammaPower>, SettableToProduct<GammaPower, GammaPower>, Diffable, SettableToUniform, SettableToRatio<GammaPower>, SettableToRatio<GammaPower, GammaPower>, SettableToPower<GammaPower>, SettableToWeightedSum<GammaPower>, Sampleable<double>, CanGetMean<double>, CanGetVariance<double>, CanGetMeanAndVarianceOut<double, double>, CanSetMeanAndVariance<double, double>, CanGetLogAverageOf<GammaPower>, CanGetLogAverageOfPower<GammaPower>, CanGetAverageLog<GammaPower>, CanGetLogNormalizer
    Remarks

    The Gamma-power distribution is defined as the distribution of a Gamma(a,b) variable raised to the power c. Thus it has three parameters (a,b,c) and probability density function p(x) = x^(a/c-1)*exp(-b*x^(1/c))*b^a/Gamma(a)/abs(c). In this implementation, the a parameter is called the "Shape", the b parameter is called the "Rate", and the c parameter is called the "Power". The power can be any real number, positive or negative. The distribution is sometimes also parameterized by (shape,scale,power) where scale = 1/rate.

    Special cases: When the power is 1 it reduces to a Gamma distribution. When the shape is 1 it reduces to a Weibull distribution. When the shape equals the power and rate is 0, the distribution is uniform. When the shape is infinity, the distribution is a point mass and the density is delta(x-Point) where the Point property gives the mean. When the power is zero, the distribution is a point mass at one. When a <= 0 or b <= 0 the b^a/Gamma(a)/abs(c) term is dropped.

    Constructors

    GammaPower(GammaPower)

    Copy constructor.

    Declaration
    public GammaPower(GammaPower that)
    Parameters
    Type Name Description
    GammaPower that

    GammaPower(Double, Double, Double)

    Creates a GammaPower distribution with given shape and scale parameters (scale = 1/rate)

    Declaration
    public GammaPower(double shape, double scale, double power)
    Parameters
    Type Name Description
    Double shape
    Double scale

    scale = 1/rate

    Double power
    Remarks

    The distribution is p(x) = x^(shape-1)*exp(-x/scale)/(scale^shape * Gamma(shape)).

    Fields

    Power

    Power parameter for the distribution

    Declaration
    public double Power
    Field Value
    Type Description
    Double

    Rate

    Rate parameter for the distribution

    Declaration
    public double Rate
    Field Value
    Type Description
    Double

    Shape

    Shape parameter for the distribution

    Declaration
    public double Shape
    Field Value
    Type Description
    Double

    Properties

    IsPointMass

    Asks whether the instance is a point mass

    Declaration
    public bool IsPointMass { get; }
    Property Value
    Type Description
    Boolean

    Point

    Sets/gets the instance as a point mass

    Declaration
    public double Point { get; set; }
    Property Value
    Type Description
    Double

    Methods

    Clone()

    Clones this object.

    Declaration
    public object Clone()
    Returns
    Type Description
    Object

    An object which is a clone of the current instance. This must be cast if you want to assign the result to a GammaPower type

    Equals(Object)

    Override of the Equals method

    Declaration
    public override bool Equals(object thatd)
    Parameters
    Type Name Description
    Object thatd

    The instance to compare to

    Returns
    Type Description
    Boolean

    True if the two distributions are the same in value, false otherwise

    FromGamma(Gamma, Double)

    Constructs a GammaPower distribution from a Gamma distribution.

    Declaration
    public static GammaPower FromGamma(Gamma gamma, double power)
    Parameters
    Type Name Description
    Gamma gamma
    Double power
    Returns
    Type Description
    GammaPower

    FromMeanAndVariance(Double, Double, Double)

    Creates a new Gamma distribution from mean and variance

    Declaration
    public static GammaPower FromMeanAndVariance(double mean, double variance, double power)
    Parameters
    Type Name Description
    Double mean

    Mean

    Double variance

    Variance

    Double power
    Returns
    Type Description
    GammaPower

    A new Gamma instance

    FromShapeAndRate(Double, Double, Double)

    Constructs a Gamma distribution with the given shape and rate parameters.

    Declaration
    public static GammaPower FromShapeAndRate(double shape, double rate, double power)
    Parameters
    Type Name Description
    Double shape

    shape

    Double rate

    rate = 1/scale

    Double power
    Returns
    Type Description
    GammaPower

    A new Gamma distribution.

    FromShapeAndScale(Double, Double, Double)

    Constructs a Gamma distribution with the given shape and scale parameters.

    Declaration
    public static GammaPower FromShapeAndScale(double shape, double scale, double power)
    Parameters
    Type Name Description
    Double shape

    shape

    Double scale

    scale

    Double power
    Returns
    Type Description
    GammaPower

    A new Gamma distribution.

    GetAverageLog(GammaPower)

    The expected logarithm of that distribution under this distribution.

    Declaration
    public double GetAverageLog(GammaPower that)
    Parameters
    Type Name Description
    GammaPower that

    The distribution to take the logarithm of.

    Returns
    Type Description
    Double

    sum_x this.Evaluate(x)*Math.Log(that.Evaluate(x))

    Remarks

    This is also known as the cross entropy.

    GetHashCode()

    Override of GetHashCode method

    Declaration
    public override int GetHashCode()
    Returns
    Type Description
    Int32

    The hash code for this instance

    GetLogAverageOf(GammaPower)

    The log of the integral of the product of this Gamma and that Gamma

    Declaration
    public double GetLogAverageOf(GammaPower that)
    Parameters
    Type Name Description
    GammaPower that

    That Gamma

    Returns
    Type Description
    Double

    The log inner product

    GetLogAverageOfPower(GammaPower, Double)

    Get the integral of this distribution times another distribution raised to a power.

    Declaration
    public double GetLogAverageOfPower(GammaPower that, double power)
    Parameters
    Type Name Description
    GammaPower that
    Double power
    Returns
    Type Description
    Double

    GetLogNormalizer()

    Gets log normalizer

    Declaration
    public double GetLogNormalizer()
    Returns
    Type Description
    Double

    GetLogProb(Double)

    Logarithm of the density function.

    Declaration
    public double GetLogProb(double x)
    Parameters
    Type Name Description
    Double x

    Where to evaluate the density

    Returns
    Type Description
    Double

    log(Gamma(x;shape,rate,power))

    GetLogProb(Double, Double, Double, Double)

    Logarithm of the density function.

    Declaration
    public static double GetLogProb(double x, double shape, double rate, double power)
    Parameters
    Type Name Description
    Double x

    Where to evaluate the density

    Double shape

    Shape parameter

    Double rate

    Rate parameter

    Double power

    Power parameter

    Returns
    Type Description
    Double

    log(GammaPower(x;shape,rate,power))

    Remarks

    The distribution is p(x) = x^(a/c-1)exp(-bx^(1/c))*b^a/Gamma(a)/abs(c). When a <= 0 or b <= 0 or c = 0 the b^a/Gamma(a)/abs(c) term is dropped. Thus if shape = 1 and rate = 0 the density is 1.

    GetMean()

    Get the expected value E(x)

    Declaration
    public double GetMean()
    Returns
    Type Description
    Double

    E(x)

    GetMeanAndVariance(out Double, out Double)

    Get the mean and variance

    Declaration
    public void GetMeanAndVariance(out double mean, out double variance)
    Parameters
    Type Name Description
    Double mean

    Where to put the mean

    Double variance

    Where to put the variance

    GetMeanLog()

    Computes E[log(x)]

    Declaration
    public double GetMeanLog()
    Returns
    Type Description
    Double

    GetMeanPower(Double)

    Computes E[x^power]

    Declaration
    public double GetMeanPower(double power)
    Parameters
    Type Name Description
    Double power
    Returns
    Type Description
    Double

    GetVariance()

    Get the variance

    Declaration
    public double GetVariance()
    Returns
    Type Description
    Double

    Variance

    IsProper()

    Asks whether this Gamma instance is proper or not. A Gamma distribution is proper only if Shape > 0 and Rate > 0.

    Declaration
    public bool IsProper()
    Returns
    Type Description
    Boolean

    True if proper, false otherwise

    IsProper(Double, Double)

    Asks whether a Gamma distribution is proper or not. A Gamma distribution is proper only if Shape > 0 and Rate > 0.

    Declaration
    public static bool IsProper(double shape, double rate)
    Parameters
    Type Name Description
    Double shape

    shape parameter for the Gamma

    Double rate

    rate parameter for the Gamma

    Returns
    Type Description
    Boolean

    True if proper, false otherwise

    IsUniform()

    Asks whether this instance is uniform

    Declaration
    public bool IsUniform()
    Returns
    Type Description
    Boolean

    True if uniform, false otherwise

    MaxDiff(Object)

    The maximum difference between the parameters of this distribution and that distribution

    Declaration
    public double MaxDiff(object thatd)
    Parameters
    Type Name Description
    Object thatd

    distribution to compare to

    Returns
    Type Description
    Double

    The maximum difference

    Remarks

    a.MaxDiff(b) == b.MaxDiff(a)

    PointMass(Double, Double)

    Creates a point mass Gamma distribution

    Declaration
    public static GammaPower PointMass(double mean, double power)
    Parameters
    Type Name Description
    Double mean

    The location of the point mass

    Double power
    Returns
    Type Description
    GammaPower

    A new point mass Gamma distribution

    Sample()

    Draw a sample from the distribution

    Declaration
    public double Sample()
    Returns
    Type Description
    Double

    The sample value

    Sample(Double)

    Samples from this Gamma distribution

    Declaration
    public double Sample(double result)
    Parameters
    Type Name Description
    Double result

    Ignored

    Returns
    Type Description
    Double

    The sample value

    Sample(Double, Double, Double)

    Samples from a Gamma distribution with given shape and scale

    Declaration
    public static double Sample(double shape, double scale, double power)
    Parameters
    Type Name Description
    Double shape

    shape parameter

    Double scale

    scale parameter

    Double power
    Returns
    Type Description
    Double

    The sample value

    SampleFromMeanAndVariance(Double, Double, Double)

    Samples from a Gamma distribution with given mean and variance

    Declaration
    public static double SampleFromMeanAndVariance(double mean, double variance, double power)
    Parameters
    Type Name Description
    Double mean

    mean parameter

    Double variance

    variance parameter

    Double power
    Returns
    Type Description
    Double

    The sample value

    SetMeanAndVariance(Double, Double)

    Set the mean and variance

    Declaration
    public void SetMeanAndVariance(double mean, double variance)
    Parameters
    Type Name Description
    Double mean

    Mean

    Double variance

    Variance

    SetShapeAndRate(Double, Double, Double)

    Sets the shape and rate (rate = 1/scale) parameters of the distribution.

    Declaration
    public void SetShapeAndRate(double shape, double rate, double power)
    Parameters
    Type Name Description
    Double shape
    Double rate

    rate = 1/scale

    Double power

    SetShapeAndScale(Double, Double, Double)

    Sets the shape and scale for this instance

    Declaration
    public void SetShapeAndScale(double shape, double scale, double power)
    Parameters
    Type Name Description
    Double shape

    Shape

    Double scale

    Scale

    Double power

    SetTo(GammaPower)

    Set this distribution to have the same parameter values as that

    Declaration
    public void SetTo(GammaPower that)
    Parameters
    Type Name Description
    GammaPower that

    the source parameters

    SetToPower(GammaPower, Double)

    Sets the parameters to represent the power of a source distribution to some exponent.

    Declaration
    public void SetToPower(GammaPower dist, double exponent)
    Parameters
    Type Name Description
    GammaPower dist

    The source distribution

    Double exponent

    The exponent

    SetToProduct(GammaPower, GammaPower)

    Set the parameters so that the density function equals the product of two given GammaPower density functions

    Declaration
    public void SetToProduct(GammaPower a, GammaPower b)
    Parameters
    Type Name Description
    GammaPower a

    The first distribution

    GammaPower b

    The second distribution. Must have the same power parameter as a

    Remarks

    The result may not be proper. No error is thrown in this case.

    SetToRatio(GammaPower, GammaPower, Boolean)

    Sets the parameters so that the density function equals the ratio of two given GammaPower density functions

    Declaration
    public void SetToRatio(GammaPower numerator, GammaPower denominator, bool forceProper = false)
    Parameters
    Type Name Description
    GammaPower numerator

    The numerator distribution. Can be the same object as this.

    GammaPower denominator

    The denominator distribution. Must have the same power parameter as numerator

    Boolean forceProper

    If true, the result has shape >= power and rate >= 0

    SetToSum(Double, GammaPower, Double, GammaPower)

    Sets the mean and variance to match a mixture of two GammaPower distributions.

    Declaration
    public void SetToSum(double weight1, GammaPower dist1, double weight2, GammaPower dist2)
    Parameters
    Type Name Description
    Double weight1

    The first weight

    GammaPower dist1

    The first distribution

    Double weight2

    The second weight

    GammaPower dist2

    The second distribution

    SetToUniform()

    Set shape and rate to be a uniform distribution, without changing the power.

    Declaration
    public void SetToUniform()

    ToString()

    ToString override

    Declaration
    public override string ToString()
    Returns
    Type Description
    String

    String representation of the instance

    Uniform(Double)

    Create a uniform GammaPower distribution.

    Declaration
    public static GammaPower Uniform(double power)
    Parameters
    Type Name Description
    Double power
    Returns
    Type Description
    GammaPower

    A new uniform GammaPower distribution

    Operators

    Division(GammaPower, GammaPower)

    Creates a new GammaPower distribution whose density function equals the ratio of two other GammaPower density functions

    Declaration
    public static GammaPower operator /(GammaPower numerator, GammaPower denominator)
    Parameters
    Type Name Description
    GammaPower numerator

    The numerator distribution

    GammaPower denominator

    The denominator distribution. Must have the same power parameter as numerator

    Returns
    Type Description
    GammaPower

    Result. May not be proper.

    Equality(GammaPower, GammaPower)

    Equals operator

    Declaration
    public static bool operator ==(GammaPower a, GammaPower b)
    Parameters
    Type Name Description
    GammaPower a
    GammaPower b
    Returns
    Type Description
    Boolean

    ExclusiveOr(GammaPower, Double)

    Raises a distribution to a power.

    Declaration
    public static GammaPower operator ^(GammaPower dist, double exponent)
    Parameters
    Type Name Description
    GammaPower dist

    The distribution.

    Double exponent

    The power to raise to.

    Returns
    Type Description
    GammaPower

    dist raised to power exponent.

    Inequality(GammaPower, GammaPower)

    Not equals operator

    Declaration
    public static bool operator !=(GammaPower a, GammaPower b)
    Parameters
    Type Name Description
    GammaPower a
    GammaPower b
    Returns
    Type Description
    Boolean

    Multiply(GammaPower, GammaPower)

    Creates a new GammaPower distribution whose density function equals the product of two other GammaPower density functions

    Declaration
    public static GammaPower operator *(GammaPower a, GammaPower b)
    Parameters
    Type Name Description
    GammaPower a

    The first distribution

    GammaPower b

    The second distribution. Must have the same power parameter as a

    Returns
    Type Description
    GammaPower

    Result. May not be proper.

    Implements

    IDistribution<T>
    ICloneable
    HasPoint<T>
    CanGetLogProb<T>
    SettableTo<T>
    SettableToProduct<T>
    SettableToProduct<T, U>
    Diffable
    SettableToUniform
    SettableToRatio<T>
    SettableToRatio<T, U>
    SettableToPower<T>
    SettableToWeightedSum<T>
    Sampleable<T>
    CanGetMean<MeanType>
    CanGetVariance<VarType>
    CanGetMeanAndVarianceOut<MeanType, VarType>
    CanSetMeanAndVariance<MeanType, VarType>
    CanGetLogAverageOf<T>
    CanGetLogAverageOfPower<T>
    CanGetAverageLog<T>
    CanGetLogNormalizer
    Back to top Copyright © .NET Foundation. All rights reserved.