Minor additions of delta distribution

This commit is contained in:
Ozzie Gooen 2022-05-01 15:04:00 -04:00
parent 18af09ab04
commit 8147c5ad60

View File

@ -134,6 +134,7 @@ mx(forecast, forecast_if_completely_wrong, [1-chance_completely_wrong, chance_co
`normal(mean:number, standardDeviation:number)` `normal(mean:number, standardDeviation:number)`
Creates a [normal distribution](https://en.wikipedia.org/wiki/Normal_distribution) with the given mean and standard deviation. Creates a [normal distribution](https://en.wikipedia.org/wiki/Normal_distribution) with the given mean and standard deviation.
<Tabs> <Tabs>
<TabItem value="ex1" label="normal(5,1)" default> <TabItem value="ex1" label="normal(5,1)" default>
<SquiggleEditor initialSquiggleString="normal(5, 1)" /> <SquiggleEditor initialSquiggleString="normal(5, 1)" />
@ -168,23 +169,28 @@ Creates a [log-normal distribution](https://en.wikipedia.org/wiki/Log-normal_dis
[Wikipedia](https://en.wikipedia.org/wiki/Log-normal_distribution) [Wikipedia](https://en.wikipedia.org/wiki/Log-normal_distribution)
<details> <details>
<summary>❓ Understanding <bold>mu</bold> and <bold>sigma</bold></summary> <summary>
❓ Understanding <bold>mu</bold> and <bold>sigma</bold>
</summary>
<p> <p>
The log of `lognormal(mu, sigma)` is a normal distribution with mean `mu` and standard deviation `sigma`. For example, these two distributions are identical: The log of `lognormal(mu, sigma)` is a normal distribution with mean `mu`
and standard deviation `sigma`. For example, these two distributions are
identical:
</p> </p>
<SquiggleEditor <SquiggleEditor
initialSquiggleString={`normalMean = 10 initialSquiggleString={`normalMean = 10
normalStdDev = 2 normalStdDev = 2
logOfLognormal = log(lognormal(normalMean, normalStdDev)) logOfLognormal = log(lognormal(normalMean, normalStdDev))
[logOfLognormal, normal(normalMean, normalStdDev)]`} [logOfLognormal, normal(normalMean, normalStdDev)]`}
/> />
</details> </details>
## Uniform ## Uniform
`uniform(low:number, high:number)` `uniform(low:number, high:number)`
Creates a [uniform distribution](https://en.wikipedia.org/wiki/Uniform_distribution_(continuous)) with the given low and high values. Creates a [uniform distribution](<https://en.wikipedia.org/wiki/Uniform_distribution_(continuous)>) with the given low and high values.
<SquiggleEditor initialSquiggleString="uniform(3,7)" /> <SquiggleEditor initialSquiggleString="uniform(3,7)" />
### Arguments ### Arguments
@ -194,16 +200,52 @@ Creates a [uniform distribution](https://en.wikipedia.org/wiki/Uniform_distribut
<Admonition type="caution" title="Caution"> <Admonition type="caution" title="Caution">
<p> <p>
While uniform distributions are very simple to understand, we find it rare to find uncertainties that actually look like this. Before using a uniform distribution, think hard about if you are really 100% confident that the paramater will not wind up being just outside the stated boundaries. While uniform distributions are very simple to understand, we find it rare
to find uncertainties that actually look like this. Before using a uniform
distribution, think hard about if you are really 100% confident that the
paramater will not wind up being just outside the stated boundaries.
</p> </p>
<p> <p>
One good example of a uniform distribution uncertainty would be clear physical limitations. You might have complete complete uncertainty on what time of day an event will occur, but can say with 100% confidence it will happen between the hours of 0:00 and 24:00. One good example of a uniform distribution uncertainty would be clear
physical limitations. You might have complete complete uncertainty on what
time of day an event will occur, but can say with 100% confidence it will
happen between the hours of 0:00 and 24:00.
</p> </p>
</Admonition> </Admonition>
## Delta
`delta(value:number)`
Creates a discrete distribution with all of its probability mass at point `value`.
Numbers are often cast into delta distributions automatically. For example, in the function,
`mixture(1,2,normal(5,2))`, the first two arguments will get converted into delta distributions
with values at 1 and 2. Therefore, `mixture(1,2,normal(5,2))` is the same as `mixture(delta(1), delta(2),normal(5,2))`
<Tabs>
<TabItem value="ex1" label="delta(3)" default>
<SquiggleEditor initialSquiggleString="delta(3)" />
</TabItem>
<TabItem value="ex3" label="mixture(1,3,5)">
<SquiggleEditor initialSquiggleString="mixture(1,3,5)" />
</TabItem>
<TabItem value="ex2" label="normal(5,2) * 6">
<SquiggleEditor initialSquiggleString="normal(5,2) * 6" />
</TabItem>
<TabItem value="ex4" label="normal(5,2) .* 6">
<SquiggleEditor initialSquiggleString="normal(5,2) .* 6" />
</TabItem>
</Tabs>
### Arguments
- `value`: Number
## Beta ## Beta
``beta(alpha:number, beta:number)``
`beta(alpha:number, beta:number)`
Creates a [beta distribution](https://en.wikipedia.org/wiki/Beta_distribution) with the given `alpha` and `beta` values. For a good summary of the beta distribution, see [this explanation](https://stats.stackexchange.com/a/47782) on Stack Overflow. Creates a [beta distribution](https://en.wikipedia.org/wiki/Beta_distribution) with the given `alpha` and `beta` values. For a good summary of the beta distribution, see [this explanation](https://stats.stackexchange.com/a/47782) on Stack Overflow.
@ -211,16 +253,16 @@ Creates a [beta distribution](https://en.wikipedia.org/wiki/Beta_distribution) w
<TabItem value="ex1" label="beta(10, 20)" default> <TabItem value="ex1" label="beta(10, 20)" default>
<SquiggleEditor initialSquiggleString="beta(10,20)" /> <SquiggleEditor initialSquiggleString="beta(10,20)" />
</TabItem> </TabItem>
<TabItem value="ex2" label="beta(1000, 1000)" > <TabItem value="ex2" label="beta(1000, 1000)">
<SquiggleEditor initialSquiggleString="beta(1000, 2000)" /> <SquiggleEditor initialSquiggleString="beta(1000, 2000)" />
</TabItem> </TabItem>
<TabItem value="ex3" label="beta(1, 10)" > <TabItem value="ex3" label="beta(1, 10)">
<SquiggleEditor initialSquiggleString="beta(1, 10)" /> <SquiggleEditor initialSquiggleString="beta(1, 10)" />
</TabItem> </TabItem>
<TabItem value="ex4" label="beta(10, 1)" > <TabItem value="ex4" label="beta(10, 1)">
<SquiggleEditor initialSquiggleString="beta(10, 1)" /> <SquiggleEditor initialSquiggleString="beta(10, 1)" />
</TabItem> </TabItem>
<TabItem value="ex5" label="beta(0.8, 0.8)" > <TabItem value="ex5" label="beta(0.8, 0.8)">
<SquiggleEditor initialSquiggleString="beta(0.8, 0.8)" /> <SquiggleEditor initialSquiggleString="beta(0.8, 0.8)" />
</TabItem> </TabItem>
</Tabs> </Tabs>
@ -232,11 +274,13 @@ Creates a [beta distribution](https://en.wikipedia.org/wiki/Beta_distribution) w
<Admonition type="caution" title="Caution with small numbers"> <Admonition type="caution" title="Caution with small numbers">
<p> <p>
Squiggle struggles to show beta distributions when either alpha or beta are below 1.0. This is because the tails at ~0.0 and ~1.0 are very high. Using a log scale for the y-axis helps here. Squiggle struggles to show beta distributions when either alpha or beta are
below 1.0. This is because the tails at ~0.0 and ~1.0 are very high. Using a
log scale for the y-axis helps here.
</p> </p>
<details> <details>
<summary>Examples</summary> <summary>Examples</summary>
<Tabs> <Tabs>
<TabItem value="ex1" label="beta(0.3, 0.3)" default> <TabItem value="ex1" label="beta(0.3, 0.3)" default>
<SquiggleEditor initialSquiggleString="beta(0.3, 0.3)" /> <SquiggleEditor initialSquiggleString="beta(0.3, 0.3)" />
</TabItem> </TabItem>
@ -249,30 +293,32 @@ Creates a [beta distribution](https://en.wikipedia.org/wiki/Beta_distribution) w
<TabItem value="ex4" label="beta(0.9, 0.9)"> <TabItem value="ex4" label="beta(0.9, 0.9)">
<SquiggleEditor initialSquiggleString="beta(.9,.9)" /> <SquiggleEditor initialSquiggleString="beta(.9,.9)" />
</TabItem> </TabItem>
</Tabs> </Tabs>
</details> </details>
</Admonition> </Admonition>
## Exponential ## Exponential
``exponential(rate:number)`` `exponential(rate:number)`
Creates an [exponential distribution](https://en.wikipedia.org/wiki/Exponential_distribution) with the given rate. Creates an [exponential distribution](https://en.wikipedia.org/wiki/Exponential_distribution) with the given rate.
<SquiggleEditor initialSquiggleString="exponential(4)" /> <SquiggleEditor initialSquiggleString="exponential(4)" />
### Arguments ### Arguments
- `rate`: Number greater than zero - `rate`: Number greater than zero
## Triangular distribution ## Triangular distribution
``triangular(low:number, mode:number, high:number)`` `triangular(low:number, mode:number, high:number)`
Creates a [triangular distribution](https://en.wikipedia.org/wiki/Triangular_distribution) with the given low, mode, and high values. Creates a [triangular distribution](https://en.wikipedia.org/wiki/Triangular_distribution) with the given low, mode, and high values.
#### Validity #### Validity
### Arguments ### Arguments
- `low`: Number - `low`: Number
- `mode`: Number greater than `low` - `mode`: Number greater than `low`
- `high`: Number greater than `mode` - `high`: Number greater than `mode`
@ -281,11 +327,12 @@ Creates a [triangular distribution](https://en.wikipedia.org/wiki/Triangular_dis
## FromSamples ## FromSamples
``fromSamples(samples:number[])`` `fromSamples(samples:number[])`
Creates a sample set distribution using an array of samples. Creates a sample set distribution using an array of samples.
<SquiggleEditor initialSquiggleString="fromSamples([1,2,3,4,6,5,5,5])" /> <SquiggleEditor initialSquiggleString="fromSamples([1,2,3,4,6,5,5,5])" />
### Arguments ### Arguments
- `samples`: An array of at least 5 numbers. - `samples`: An array of at least 5 numbers.