137 lines
4.0 KiB
Plaintext
137 lines
4.0 KiB
Plaintext
|
---
|
||
|
sidebar_position: 7
|
||
|
---
|
||
|
|
||
|
import { SquiggleEditor } from '@quri/squiggle-components'
|
||
|
|
||
|
# Squiggle Functions Reference
|
||
|
|
||
|
## Distributions
|
||
|
|
||
|
### Normal distribution
|
||
|
|
||
|
The `normal(mean, sd)` function creates a normal distribution with the given mean
|
||
|
and standard deviation.
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="normal(0, 1)" />
|
||
|
|
||
|
### Uniform distribution
|
||
|
|
||
|
The `uniform(low, high)` function creates a uniform distribution between the
|
||
|
two given numbers:
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="uniform(0, 10)" />
|
||
|
|
||
|
|
||
|
### Lognormal distribution
|
||
|
|
||
|
The `lognormal(mu, sigma)` returns the log of a normal distribution with parameters
|
||
|
mu and sigma. The log of lognormal(mu, sigma) is a normal distribution with parameters
|
||
|
mean mu and standard deviation sigma.
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="lognormal(0, 1)" />
|
||
|
|
||
|
An alternative format is also available. The "to" notation creates a lognormal
|
||
|
distribution with a 90% confidence interval between the two numbers. We add
|
||
|
this convinience as lognormal distributions are commonly used in practice
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="2 to 10" />
|
||
|
|
||
|
Furthermore, it's also possible to create a lognormal from it's actual mean
|
||
|
and standard deviation, using `lognormalFromMeanAndStdDev`:
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="lognormalFromMeanAndStdDev(20, 20)" />
|
||
|
|
||
|
|
||
|
### Beta distribution
|
||
|
|
||
|
The `beta(a, b)` function creates a beta distribution with parameters a and b:
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="beta(20, 20)" />
|
||
|
|
||
|
### Exponential distribution
|
||
|
|
||
|
The `exponential(mean)` function creates an exponential distribution with the given
|
||
|
mean.
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="exponential(1)" />
|
||
|
|
||
|
|
||
|
### The Triangular distribution
|
||
|
|
||
|
The `triangular(a,b,c)` function creates a triangular distribution with lower
|
||
|
bound a, mode b and upper bound c:
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="triangular(1, 2, 4)" />
|
||
|
|
||
|
### Multimodal distriutions
|
||
|
|
||
|
The multimodal function combines 2 or more other distributions to create a weighted
|
||
|
combination of the two. The first positional arguments represent the distributions
|
||
|
to be combined, and the last argument is how much to weigh every distribution in the
|
||
|
combination.
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="mm(uniform(0,1), normal(1,1), [0.5, 0.5])" />
|
||
|
|
||
|
It's possible to create discrete distributions using this method:
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="mm(0, 1, [0.2,0.8])" />
|
||
|
|
||
|
As well as mixed distributions:
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="mm(0, 1 to 10, [0.2,0.8])" />
|
||
|
|
||
|
## Other Functions
|
||
|
|
||
|
### PDF of a distribution
|
||
|
The `pdf(distribution, x)` function returns the density of a distribution at the
|
||
|
given point x:
|
||
|
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="pdf(normal(0,1),0)" />
|
||
|
|
||
|
### Inverse of a distribution
|
||
|
|
||
|
The `inv(distribution, prob)` gives the value x or which the probability for all values
|
||
|
lower than x is equal to prob. It is the inverse of `cdf`
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="inv(normal(0,1),0.5)" />
|
||
|
|
||
|
### CDF of a distribution
|
||
|
|
||
|
The `cdf(distribution,x)` gives the cumulative probability of the distribution
|
||
|
or all values lower than x. It is the inverse of `inv`:
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="cdf(normal(0,1),0)" />
|
||
|
|
||
|
### Mean of a distribution
|
||
|
The `mean(distribution)` function gives the mean (expected value) of a distribution:
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="mean(normal(5, 10))" />
|
||
|
|
||
|
### Sampling a distribution
|
||
|
The `sample(distribution)` samples a given distribution:
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="sample(normal(0, 10))" />
|
||
|
|
||
|
### Exponential Scaling
|
||
|
|
||
|
The `scaleExp(distribution, factor)` function scales a distribution's PDF exponentially
|
||
|
in the y axis.
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="scaleExp(normal(10, 10), 10)" />
|
||
|
|
||
|
### Multiply Scaling
|
||
|
|
||
|
The `scaleMultiply(distribution, factor)` function scales a distribution's PDF by multiplication
|
||
|
in the y axis.
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="scaleMultiply(normal(10, 10), 2)" />
|
||
|
|
||
|
### Log scaling
|
||
|
|
||
|
The `scaleLog(distribution, factor)` function scales a distribution's PDF by the log
|
||
|
function in the y axis
|
||
|
|
||
|
<SquiggleEditor initialSquiggleString="scaleLog(normal(10, 10), 2)" />
|