squiggle/packages/website/docs/Api/Distribution.md

435 lines
5.7 KiB
Markdown
Raw Normal View History

---
sidebar_position: 2
title: Distribution
---
2022-06-05 20:59:45 +00:00
## Main
2022-06-05 20:59:45 +00:00
### mixture
```javascript
2022-06-05 20:59:45 +00:00
(...distributionLike, weights:list<float>):distribution
```
**Examples**
```javascript
2022-06-05 20:59:45 +00:00
mixture(normal(5,1), normal(10,1))
```
2022-06-05 20:59:45 +00:00
### sample
Get one random sample from the distribution
```javascript
2022-06-05 20:59:45 +00:00
(distribution):number
```
**Examples**
```javascript
sample(normal(5,2))
```
2022-06-05 20:59:45 +00:00
### sampleN
Get n random samples from the distribution
```javascript
2022-06-05 20:59:45 +00:00
(distribution, number):list<number>
```
**Examples**
```javascript
sample(normal(5,2), 100)
```
2022-06-05 20:59:45 +00:00
### mean
Get the distribution mean
```javascript
2022-06-05 20:59:45 +00:00
(distribution):number
```
**Examples**
```javascript
mean(normal(5,2))
```
2022-06-05 20:59:45 +00:00
### stdev
```javascript
2022-06-05 20:59:45 +00:00
(distribution):number
```
### variance
```javascript
(distribution):number
```
### mode
```javascript
(distribution):number
```
### cdf
```javascript
(distribution, number):number
```
**Examples**
```javascript
cdf(normal(5,2), 3)
```
2022-06-05 20:59:45 +00:00
### pdf
```javascript
2022-06-05 20:59:45 +00:00
(distribution, number):number
```
**Examples**
```javascript
pdf(normal(5,2), 3)
```
2022-06-05 20:59:45 +00:00
### pmf
```javascript
(distribution, number):number
```
**Examples**
```javascript
pmf(bernoulli(0.3), 0) // 0.7
```
### inv
```javascript
2022-06-05 20:59:45 +00:00
(distribution, number):number
```
**Examples**
```javascript
inv(normal(5,2), 0.5)
```
2022-06-05 20:59:45 +00:00
### toPointSet
Converts a distribution to the pointSet format
```javascript
2022-06-05 20:59:45 +00:00
(distribution):pointSetDistribution
```
**Examples**
```javascript
toPointSet(normal(5,2))
```
2022-06-05 20:59:45 +00:00
### toSampleSet
Converts a distribution to the sampleSet format, with n samples
```javascript
2022-06-05 20:59:45 +00:00
(distribution,n):sampleSetribution
```
**Examples**
```javascript
toSampleSet(normal(5,2))
```
2022-06-05 20:59:45 +00:00
### truncateLeft
Truncates the left side of a distribution. Returns either a pointSet distribution or a symbolic distribution.
```javascript
2022-06-05 20:59:45 +00:00
(distribution, l:number, {normalize: boolean=true}):distribution
```
**Examples**
```javascript
truncateLeft(normal(5,2), 3)
```
2022-06-05 20:59:45 +00:00
### truncateRight
Truncates the right side of a distribution. Returns either a pointSet distribution or a symbolic distribution.
```javascript
2022-06-05 20:59:45 +00:00
(distribution, r:number, {normalize: boolean=true}):distribution
```
**Examples**
```javascript
truncateLeft(normal(5,2), 6)
```
2022-06-05 20:59:45 +00:00
### klDivergence
KullbackLeibler divergence between two distributions
```javascript
2022-06-05 20:59:45 +00:00
(distribution, distribution):number
```
**Examples**
```javascript
klDivergence(normal(5,2), normal(5,4)) // returns 0.57
```
2022-06-05 20:59:45 +00:00
### logScore
```javascript
2022-06-05 20:59:45 +00:00
({estimate: distribution, prior?: distribution, answer: distribution|number}):number
```
**Examples**
```javascript
2022-06-05 20:59:45 +00:00
logScore({estimate: normal(5,2), prior: normal(5.5,4), answer: 2.3})
```
2022-06-05 20:59:45 +00:00
### toString
```javascript
2022-06-05 20:59:45 +00:00
(distribution):string
```
**Examples**
```javascript
toString(normal(5,2))
```
2022-06-05 20:59:45 +00:00
### toSparkline
Produce a sparkline of length n
```javascript
2022-06-05 20:59:45 +00:00
(distribution, n=20):string
```
**Examples**
```javascript
2022-06-05 20:59:45 +00:00
toSparkline(normal(5,2), 10)
```
2022-06-05 20:59:45 +00:00
### inspect
Prints the value of the distribution to the Javascript console, then returns the distribution.
```javascript
2022-06-05 20:59:45 +00:00
(distribution):distribution
```
**Examples**
```javascript
inspect(normal(5,2))
```
2022-06-05 20:59:45 +00:00
### normalize
Normalize a distribution. This means scaling it appropriately so that it's cumulative sum is equal to 1.
```javascript
2022-06-05 20:59:45 +00:00
(distribution):distribution
```
**Examples**
```javascript
normalize(normal(5,2))
```
2022-06-05 20:59:45 +00:00
### isNormalized
Check of a distribution is normalized. Most distributions are typically normalized, but there are some commands that could produce non-normalized distributions.
```javascript
2022-06-05 20:59:45 +00:00
(distribution):bool
```
**Examples**
```javascript
isNormalized(normal(5,2)) // returns true
```
2022-06-05 20:59:45 +00:00
### integralSum
Get the sum of the integral of a distribution. If the distribution is normalized, this will be 1.
```javascript
2022-06-05 20:59:45 +00:00
(distribution):number
```
**Examples**
```javascript
integralSum(normal(5,2))
```
2022-06-05 20:59:45 +00:00
### add
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### sum
```javascript
2022-06-05 20:59:45 +00:00
(list<distributionLike>): distribution
```
2022-06-05 20:59:45 +00:00
### multiply
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### product
```javascript
2022-06-05 20:59:45 +00:00
(list<distributionLike>): distribution
```
2022-06-05 20:59:45 +00:00
### subtract
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### divide
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### pow
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### exp
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### log
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### log10
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike):distribution
```
2022-06-05 20:59:45 +00:00
### unaryMinus
```javascript
2022-06-05 20:59:45 +00:00
(distribution):distribution
```
2022-06-05 20:59:45 +00:00
### dotAdd
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### dotSum
```javascript
2022-06-05 20:59:45 +00:00
(list<distributionLike>): distribution
```
2022-06-05 20:59:45 +00:00
### dotMultiply
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### dotProduct
```javascript
2022-06-05 20:59:45 +00:00
(list<distributionLike>): distribution
```
2022-06-05 20:59:45 +00:00
### dotSubtract
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### dotDivide
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### dotPow
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### dotExp
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### scaleMultiply
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### scalePow
```javascript
(distributionLike, distributionLike): distribution
```
### scaleExp
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### scaleLog
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### scaleLog10
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike): distribution
```
2022-06-05 20:59:45 +00:00
### scaleLogWithThreshold
```javascript
2022-06-05 20:59:45 +00:00
(distributionLike, distributionLike, number): distribution
```
2022-06-05 20:59:45 +00:00