Double factors
This page lists the built-in methods and operators for creating random variables of type double. For both static methods and operators, you can often pass in random variables as arguments e.g. Variable<double> instead of double. For compactness, this is not shown in the syntax below.
These methods provide a convenient short alternative to using Variable<T>.Factor and passing in the factor method, as described on this page.
Distribution Factors
A distribution factor creates a random variable from a parameterised distribution.
| Distribution | Syntax | Description |
|---|---|---|
| Gaussian | Variable.GaussianFromMeanAndPrecision(double mean, double precision) |
Creates a double random variable with a Gaussian distribution of the specified mean and precision (inverse variance). |
| Gaussian | Variable.GaussianFromMeanAndVariance(double mean, double variance) |
Creates a double random variable with a Gaussian distribution of the specified mean and variance. |
| Gamma | Variable.GammaFromShapeAndScale(double shape, double scale) |
Creates a positive double random variable with a Gamma distribution of the specified shape and scale. |
| Gamma | Variable.GammaFromShapeAndRate(double shape, double rate) |
Creates a positive double random variable with a Gamma distribution of the specified shape and rate. |
| Gamma | Variable.GammaFromMeanAndVariance(double mean, double variance) |
Creates a positive double random variable with a Gamma distribution of the specified mean and variance. |
| Beta | Variable.Beta(double trueCount, double falseCount) |
Creates a double random variable with a Beta distribution with the specified counts. |
| Beta | Variable.BetaFromMeanAndVariance(double mean, double variance) |
Creates a double random variable with a Beta distribution of the specified mean and variance. |
| Truncated Gaussian | Variable.TruncatedGaussian(double mean, double variance, double lowerBound, double upperBound) |
Creates a double random variable with a TruncatedGaussian distribution of the specified mean, variance, lower bound, and upper bound. |
| Truncated Gamma | Variable.TruncatedGamma(double shape, double rate, double lowerBound, double upperBound) |
Creates a double random variable with a TruncatedGamma distribution of the specified shape, rate, lower bound, and upper bound. |
Arithmetic and Mathematical Operations
Arithmetic operations are supported via operator overloads or static methods.
| Operation | Syntax | Description |
|---|---|---|
| Plus | a + b | Creates a double random variable equal to the sum of a and b. |
| Minus | a - b | Creates a double random variable equal to the difference of a and b. |
| Negative | -a | Creates a double random variable equal to the negative of a. |
| Times | a * b | Creates a double random variable equal to the product of a and b. |
| Divide | a / b | Creates a double random variable equal to the ratio of a to b. |
| Power | a ^ b | Creates a doublerandom variable equal to a raised to the power b. |
| Sum of elements | Variable.Sum(double[] array) Variable.Sum(IList<double> array) |
Creates a double random variable equal to the sum of the elements of the array. |
| Exp | Variable.Exp(double exponent) |
Creates a double random variable which takes e to the power of exponent. |
| Log | Variable.Exp(double x) |
Creates a double random variable equal to the natural log of x. |
| Logistic | Variable.Logistic(double x) |
Creates a double random variable equal to 1/(1+exp(-x)). |
| Max | Variable.Max(double a, double b) |
Creates a double random variable equal to the maximum of a and b. |
| Min | Variable.Min(double a, double b) |
Creates a double random variable equal to the minimum of a and b. |
| Conditional sum of elements | Variable.SumWhere(bool[] a, Vector b) |
Creates a double random variable equal to the sum of the elements of b where a is true. |
| Inner product | Variable.InnerProduct(Vector a, Vector b) Variable.InnerProduct(double[] a, Vector b) Variable.InnerProduct(double[] a, double[] b) |
Creates a double random variable equal to the inner product of vectors a and b. |
Miscellaneous Operations
| Operation | Syntax | Description |
|---|---|---|
| FunctionEvaluate | Variable.FunctionEvaluate(IFunction func, Vector x) |
Evaluate a random function at a point. Used to construct Gaussian Process models like this one. |
| GetItem | Variable.GetItem(Vector source, int index) |
Extract an element of a random vector. |
| Double | Variable.Double(int integer) |
Convert an integer to double. |