Compare commits
1 Commits
develop
...
docs-clean
Author | SHA1 | Date | |
---|---|---|---|
|
67c478b4c0 |
|
@ -26,6 +26,7 @@ export interface SquiggleEditorProps {
|
||||||
diagramStart?: number;
|
diagramStart?: number;
|
||||||
/** If the result is a function, where the function ends */
|
/** If the result is a function, where the function ends */
|
||||||
diagramStop?: number;
|
diagramStop?: number;
|
||||||
|
height?: number;
|
||||||
/** If the result is a function, how many points along the function it samples */
|
/** If the result is a function, how many points along the function it samples */
|
||||||
diagramCount?: number;
|
diagramCount?: number;
|
||||||
/** when the environment changes. Used again for notebook magic*/
|
/** when the environment changes. Used again for notebook magic*/
|
||||||
|
@ -51,6 +52,7 @@ export let SquiggleEditor: React.FC<SquiggleEditorProps> = ({
|
||||||
diagramStart = 0,
|
diagramStart = 0,
|
||||||
diagramStop = 10,
|
diagramStop = 10,
|
||||||
diagramCount = 20,
|
diagramCount = 20,
|
||||||
|
height = 200,
|
||||||
onChange,
|
onChange,
|
||||||
bindings = defaultBindings,
|
bindings = defaultBindings,
|
||||||
jsImports = defaultImports,
|
jsImports = defaultImports,
|
||||||
|
@ -78,6 +80,7 @@ export let SquiggleEditor: React.FC<SquiggleEditorProps> = ({
|
||||||
</div>
|
</div>
|
||||||
<SquiggleChart
|
<SquiggleChart
|
||||||
width={width}
|
width={width}
|
||||||
|
height={height}
|
||||||
environment={environment}
|
environment={environment}
|
||||||
squiggleString={expression}
|
squiggleString={expression}
|
||||||
chartSettings={chartSettings}
|
chartSettings={chartSettings}
|
||||||
|
|
|
@ -22,22 +22,26 @@ If both values are above zero, a `lognormal` distribution is used. If not, a `no
|
||||||
When <code>5 to 10</code> is entered, both numbers are positive, so it
|
When <code>5 to 10</code> is entered, both numbers are positive, so it
|
||||||
generates a lognormal distribution with 5th and 95th percentiles at 5 and
|
generates a lognormal distribution with 5th and 95th percentiles at 5 and
|
||||||
10.
|
10.
|
||||||
<SquiggleEditor initialSquiggleString="5 to 10" />
|
<SquiggleEditor initialSquiggleString="5 to 10" height={60} />
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="ex3" label="to(5,10)">
|
<TabItem value="ex3" label="to(5,10)">
|
||||||
<code>5 to 10</code> does the same thing as <code>to(5,10)</code>.
|
<code>5 to 10</code> does the same thing as <code>to(5,10)</code>.
|
||||||
<SquiggleEditor initialSquiggleString="to(5,10)" />
|
<SquiggleEditor initialSquiggleString="to(5,10)" height={60} width={600} />
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="ex2" label="-5 to 5">
|
<TabItem value="ex2" label="-5 to 5">
|
||||||
When <code>-5 to 5</code> is entered, there's negative values, so it
|
When <code>-5 to 5</code> is entered, there's negative values, so it
|
||||||
generates a normal distribution. This has 5th and 95th percentiles at 5 and
|
generates a normal distribution. This has 5th and 95th percentiles at 5 and
|
||||||
10.
|
10.
|
||||||
<SquiggleEditor initialSquiggleString="-5 to -3" />
|
<SquiggleEditor initialSquiggleString="-5 to -3" height={60} width={600} />
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="ex4" label="1 to 10000">
|
<TabItem value="ex4" label="1 to 10000">
|
||||||
It's very easy to generate distributions with very long tails. If this
|
It's very easy to generate distributions with very long tails. If this
|
||||||
happens, you can click the "log x scale" box to view this using a log scale.
|
happens, you can click the "log x scale" box to view this using a log scale.
|
||||||
<SquiggleEditor initialSquiggleString="1 to 10000" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="1 to 10000"
|
||||||
|
height={60}
|
||||||
|
width={600}
|
||||||
|
/>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|
||||||
|
@ -76,16 +80,31 @@ The `mixture` mixes combines multiple distributions to create a mixture. You can
|
||||||
|
|
||||||
<Tabs>
|
<Tabs>
|
||||||
<TabItem value="ex1" label="Simple" default>
|
<TabItem value="ex1" label="Simple" default>
|
||||||
<SquiggleEditor initialSquiggleString="mixture(1 to 2, 5 to 8, 9 to 10)" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="mixture(1 to 2, 5 to 8, 9 to 10)"
|
||||||
|
height={60}
|
||||||
|
/>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="ex2" label="With Weights">
|
<TabItem value="ex2" label="With Weights">
|
||||||
<SquiggleEditor initialSquiggleString="mixture(1 to 2, 5 to 8, 9 to 10, [0.1, 0.1, 0.8])" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="mixture(1 to 2, 5 to 8, 9 to 10, [0.1, 0.1, 0.8])"
|
||||||
|
height={60}
|
||||||
|
width={600}
|
||||||
|
/>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="ex3" label="With Continuous and Discrete Inputs">
|
<TabItem value="ex3" label="With Continuous and Discrete Inputs">
|
||||||
<SquiggleEditor initialSquiggleString="mixture(1 to 5, 8 to 10, 1, 3, 20)" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="mixture(1 to 5, 8 to 10, 1, 3, 20)"
|
||||||
|
height={60}
|
||||||
|
width={600}
|
||||||
|
/>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="ex4" label="Array of Distributions Input">
|
<TabItem value="ex4" label="Array of Distributions Input">
|
||||||
<SquiggleEditor initialSquiggleString="mx([1 to 2, exponential(1)], [1,1])" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="mx([1 to 2, exponential(1)], [1,1])"
|
||||||
|
height={60}
|
||||||
|
width={600}
|
||||||
|
/>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|
||||||
|
@ -113,7 +132,7 @@ The `mixture` mixes combines multiple distributions to create a mixture. You can
|
||||||
<SquiggleEditor
|
<SquiggleEditor
|
||||||
initialSquiggleString={`hours_the_project_will_take = 5 to 20
|
initialSquiggleString={`hours_the_project_will_take = 5 to 20
|
||||||
chance_of_doing_anything = 0.8
|
chance_of_doing_anything = 0.8
|
||||||
mx(hours_the_project_will_take, 0, [chance_of_doing_anything, 1 - chance_of_doing_anything])`}
|
mx(hours_the_project_will_take, 0, [chance_of_doing_anything, 1 - chance_of_doing_anything])`} height={60}
|
||||||
/>
|
/>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -128,7 +147,7 @@ mx(hours_the_project_will_take, 0, [chance_of_doing_anything, 1 - chance_of_doin
|
||||||
initialSquiggleString={`forecast = 3 to 30
|
initialSquiggleString={`forecast = 3 to 30
|
||||||
chance_completely_wrong = 0.05
|
chance_completely_wrong = 0.05
|
||||||
forecast_if_completely_wrong = -100 to 200
|
forecast_if_completely_wrong = -100 to 200
|
||||||
mx(forecast, forecast_if_completely_wrong, [1-chance_completely_wrong, chance_completely_wrong])`}
|
mx(forecast, forecast_if_completely_wrong, [1-chance_completely_wrong, chance_completely_wrong])`} height={60}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -141,10 +160,14 @@ Creates a [normal distribution](https://en.wikipedia.org/wiki/Normal_distributio
|
||||||
|
|
||||||
<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)" height={60} />
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="ex2" label="normal(100000000000, 100000000000)">
|
<TabItem value="ex2" label="normal(100000000000, 100000000000)">
|
||||||
<SquiggleEditor initialSquiggleString="normal(100000000000, 100000000000)" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="normal(100000000000, 100000000000)"
|
||||||
|
height={60}
|
||||||
|
width={600}
|
||||||
|
/>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|
||||||
|
@ -165,7 +188,7 @@ Creates a [log-normal distribution](https://en.wikipedia.org/wiki/Log-normal_dis
|
||||||
you take the log of our lognormal distribution. They can be difficult to directly reason about.
|
you take the log of our lognormal distribution. They can be difficult to directly reason about.
|
||||||
Because of this complexity, we recommend typically using the <a href="#to">to</a> syntax instead of estimating `mu` and `sigma` directly.
|
Because of this complexity, we recommend typically using the <a href="#to">to</a> syntax instead of estimating `mu` and `sigma` directly.
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString="lognormal(0, 0.7)" />
|
<SquiggleEditor initialSquiggleString="lognormal(0, 0.7)" height={60} />
|
||||||
|
|
||||||
### Arguments
|
### Arguments
|
||||||
|
|
||||||
|
@ -189,7 +212,8 @@ Because of this complexity, we recommend typically using the <a href="#to">to</a
|
||||||
normalStdDev = 2
|
normalStdDev = 2
|
||||||
logOfLognormal = log(lognormal(normalMean, normalStdDev))
|
logOfLognormal = log(lognormal(normalMean, normalStdDev))
|
||||||
[logOfLognormal, normal(normalMean, normalStdDev)]`}
|
[logOfLognormal, normal(normalMean, normalStdDev)]`}
|
||||||
/>
|
/>{" "}
|
||||||
|
height={60}
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Uniform
|
## Uniform
|
||||||
|
@ -198,7 +222,7 @@ logOfLognormal = log(lognormal(normalMean, normalStdDev))
|
||||||
|
|
||||||
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)" height={60} />
|
||||||
|
|
||||||
### Arguments
|
### Arguments
|
||||||
|
|
||||||
|
@ -236,19 +260,35 @@ with values at 1 and 2. Therefore, this is the same as `mixture(pointMass(1),poi
|
||||||
|
|
||||||
<Tabs>
|
<Tabs>
|
||||||
<TabItem value="ex1" label="pointMass(3)" default>
|
<TabItem value="ex1" label="pointMass(3)" default>
|
||||||
<SquiggleEditor initialSquiggleString="pointMass(3)" />
|
<SquiggleEditor initialSquiggleString="pointMass(3)" height={60} />
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="ex3" label="mixture(1,3,5)">
|
<TabItem value="ex3" label="mixture(1,3,5)">
|
||||||
<SquiggleEditor initialSquiggleString="mixture(1,3,5)" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="mixture(1,3,5)"
|
||||||
|
height={60}
|
||||||
|
width={600}
|
||||||
|
/>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="ex2" label="normal(5,2) * 6">
|
<TabItem value="ex2" label="normal(5,2) * 6">
|
||||||
<SquiggleEditor initialSquiggleString="normal(5,2) * 6" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="normal(5,2) * 6"
|
||||||
|
height={60}
|
||||||
|
width={600}
|
||||||
|
/>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="ex4" label="dotAdd(normal(5,2), 6)">
|
<TabItem value="ex4" label="dotAdd(normal(5,2), 6)">
|
||||||
<SquiggleEditor initialSquiggleString="dotAdd(normal(5,2), 6)" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="dotAdd(normal(5,2), 6)"
|
||||||
|
height={60}
|
||||||
|
width={600}
|
||||||
|
/>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="ex5" label="dotMultiply(normal(5,2), 6)">
|
<TabItem value="ex5" label="dotMultiply(normal(5,2), 6)">
|
||||||
<SquiggleEditor initialSquiggleString="dotMultiply(normal(5,2), 6)" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="dotMultiply(normal(5,2), 6)"
|
||||||
|
height={60}
|
||||||
|
width={600}
|
||||||
|
/>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|
||||||
|
@ -264,19 +304,35 @@ Creates a [beta distribution](https://en.wikipedia.org/wiki/Beta_distribution) w
|
||||||
|
|
||||||
<Tabs>
|
<Tabs>
|
||||||
<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)" height={60} />
|
||||||
</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)"
|
||||||
|
height={60}
|
||||||
|
width={600}
|
||||||
|
/>
|
||||||
</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)"
|
||||||
|
height={60}
|
||||||
|
width={600}
|
||||||
|
/>
|
||||||
</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)"
|
||||||
|
height={60}
|
||||||
|
width={600}
|
||||||
|
/>
|
||||||
</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)"
|
||||||
|
height={60}
|
||||||
|
width={600}
|
||||||
|
/>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|
||||||
|
@ -295,16 +351,28 @@ Creates a [beta distribution](https://en.wikipedia.org/wiki/Beta_distribution) w
|
||||||
<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)" height={60} />
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="ex2" label="beta(0.5, 0.5)">
|
<TabItem value="ex2" label="beta(0.5, 0.5)">
|
||||||
<SquiggleEditor initialSquiggleString="beta(0.5, 0.5)" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="beta(0.5, 0.5)"
|
||||||
|
height={60}
|
||||||
|
width={600}
|
||||||
|
/>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="ex3" label="beta(0.8, 0.8)">
|
<TabItem value="ex3" label="beta(0.8, 0.8)">
|
||||||
<SquiggleEditor initialSquiggleString="beta(.8,.8)" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="beta(.8,.8)"
|
||||||
|
height={60}
|
||||||
|
width={600}
|
||||||
|
/>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<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)"
|
||||||
|
height={60}
|
||||||
|
width={600}
|
||||||
|
/>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
</details>
|
</details>
|
||||||
|
@ -316,7 +384,7 @@ Creates a [beta distribution](https://en.wikipedia.org/wiki/Beta_distribution) w
|
||||||
|
|
||||||
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)" height={60} />
|
||||||
|
|
||||||
### Arguments
|
### Arguments
|
||||||
|
|
||||||
|
@ -334,7 +402,7 @@ Creates a [triangular distribution](https://en.wikipedia.org/wiki/Triangular_dis
|
||||||
- `mode`: Number greater than `low`
|
- `mode`: Number greater than `low`
|
||||||
- `high`: Number greater than `mode`
|
- `high`: Number greater than `mode`
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString="triangular(1, 2, 4)" />
|
<SquiggleEditor initialSquiggleString="triangular(1, 2, 4)" height={60} />
|
||||||
|
|
||||||
## FromSamples
|
## FromSamples
|
||||||
|
|
||||||
|
@ -342,7 +410,10 @@ Creates a [triangular distribution](https://en.wikipedia.org/wiki/Triangular_dis
|
||||||
|
|
||||||
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])"
|
||||||
|
height={60}
|
||||||
|
/>
|
||||||
|
|
||||||
### Arguments
|
### Arguments
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ chosen from the second distribution.
|
||||||
initialSquiggleString={`dist1 = 1 to 10
|
initialSquiggleString={`dist1 = 1 to 10
|
||||||
dist2 = triangular(1,2,3)
|
dist2 = triangular(1,2,3)
|
||||||
dist1 + dist2`}
|
dist1 + dist2`}
|
||||||
|
height={60}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
### Subtraction
|
### Subtraction
|
||||||
|
@ -31,6 +32,7 @@ the value of one random sample chosen from the second distribution.
|
||||||
initialSquiggleString={`dist1 = 1 to 10
|
initialSquiggleString={`dist1 = 1 to 10
|
||||||
dist2 = triangular(1,2,3)
|
dist2 = triangular(1,2,3)
|
||||||
dist1 - dist2`}
|
dist1 - dist2`}
|
||||||
|
height={60}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
### Multiplication
|
### Multiplication
|
||||||
|
@ -43,12 +45,9 @@ chosen from the second distribution.
|
||||||
initialSquiggleString={`dist1 = 1 to 10
|
initialSquiggleString={`dist1 = 1 to 10
|
||||||
dist2 = triangular(1,2,3)
|
dist2 = triangular(1,2,3)
|
||||||
dist1 * dist2`}
|
dist1 * dist2`}
|
||||||
|
height={60}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
We also provide concatenation of two distributions as a syntax sugar for `*`
|
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString="(0.1 to 1) triangular(1,2,3)" />
|
|
||||||
|
|
||||||
### Division
|
### Division
|
||||||
|
|
||||||
A proportional scaling (normally a shrinking if the second distribution has values higher than 1).
|
A proportional scaling (normally a shrinking if the second distribution has values higher than 1).
|
||||||
|
@ -61,6 +60,7 @@ tends to be particularly unstable.
|
||||||
initialSquiggleString={`dist1 = 1 to 10
|
initialSquiggleString={`dist1 = 1 to 10
|
||||||
dist2 = triangular(1,2,3)
|
dist2 = triangular(1,2,3)
|
||||||
dist1 / dist2`}
|
dist1 / dist2`}
|
||||||
|
height={60}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
### Exponentiation
|
### Exponentiation
|
||||||
|
@ -69,13 +69,14 @@ A projection over a contracted x-axis. The exponentiation operation represents t
|
||||||
the exponentiation of the value of one random sample chosen from the first distribution to the power of
|
the exponentiation of the value of one random sample chosen from the first distribution to the power of
|
||||||
the value one random sample chosen from the second distribution.
|
the value one random sample chosen from the second distribution.
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString={`(0.1 to 1) ^ beta(2, 3)`} />
|
<SquiggleEditor initialSquiggleString={`(0.1 to 1) ^ beta(2, 3)`} height={60} />
|
||||||
|
|
||||||
### Taking the base `e` exponential
|
### Taking the base `e` exponential
|
||||||
|
|
||||||
<SquiggleEditor
|
<SquiggleEditor
|
||||||
initialSquiggleString={`dist = triangular(1,2,3)
|
initialSquiggleString={`dist = triangular(1,2,3)
|
||||||
exp(dist)`}
|
exp(dist)`}
|
||||||
|
height={60}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
### Taking logarithms
|
### Taking logarithms
|
||||||
|
@ -85,19 +86,22 @@ A projection over a stretched x-axis.
|
||||||
<SquiggleEditor
|
<SquiggleEditor
|
||||||
initialSquiggleString={`dist = triangular(1,2,3)
|
initialSquiggleString={`dist = triangular(1,2,3)
|
||||||
log(dist)`}
|
log(dist)`}
|
||||||
|
height={60}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<SquiggleEditor
|
<SquiggleEditor
|
||||||
initialSquiggleString={`dist = beta(1,2)
|
initialSquiggleString={`dist = beta(1,2)+1
|
||||||
log10(dist)`}
|
log10(dist)`}
|
||||||
|
height={60}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
Base `x`
|
Base `x`
|
||||||
|
|
||||||
<SquiggleEditor
|
<SquiggleEditor
|
||||||
initialSquiggleString={`x = 2
|
initialSquiggleString={`x = 2
|
||||||
dist = beta(2,3)
|
dist = beta(2,3)+1
|
||||||
log(dist, x)`}
|
log(dist, x)`}
|
||||||
|
height={60}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
#### Validity
|
#### Validity
|
||||||
|
@ -111,22 +115,20 @@ For every point on the x-axis, operate the corresponding points in the y axis of
|
||||||
|
|
||||||
**Pointwise operations are done with `PointSetDist` internals rather than `SampleSetDist` internals**.
|
**Pointwise operations are done with `PointSetDist` internals rather than `SampleSetDist` internals**.
|
||||||
|
|
||||||
TODO: this isn't in the new interpreter/parser yet.
|
|
||||||
|
|
||||||
<SquiggleEditor
|
<SquiggleEditor
|
||||||
initialSquiggleString={`dist1 = 1 to 10
|
initialSquiggleString={`dist1 = 1 to 10
|
||||||
dist2 = triangular(1,2,3)
|
dist2 = triangular(1,2,3)
|
||||||
dist1 .+ dist2`}
|
dist1 .+ dist2`}
|
||||||
|
height={60}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
### Pointwise subtraction
|
### Pointwise subtraction
|
||||||
|
|
||||||
TODO: this isn't in the new interpreter/parser yet.
|
|
||||||
|
|
||||||
<SquiggleEditor
|
<SquiggleEditor
|
||||||
initialSquiggleString={`dist1 = 1 to 10
|
initialSquiggleString={`dist1 = 1 to 10
|
||||||
dist2 = triangular(1,2,3)
|
dist2 = triangular(1,2,3)
|
||||||
dist1 .- dist2`}
|
dist1 .- dist2`}
|
||||||
|
height={60}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
### Pointwise multiplication
|
### Pointwise multiplication
|
||||||
|
@ -135,6 +137,7 @@ dist1 .- dist2`}
|
||||||
initialSquiggleString={`dist1 = 1 to 10
|
initialSquiggleString={`dist1 = 1 to 10
|
||||||
dist2 = triangular(1,2,3)
|
dist2 = triangular(1,2,3)
|
||||||
dist1 .* dist2`}
|
dist1 .* dist2`}
|
||||||
|
height={60}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
### Pointwise division
|
### Pointwise division
|
||||||
|
@ -143,6 +146,7 @@ dist1 .* dist2`}
|
||||||
initialSquiggleString={`dist1 = uniform(0,20)
|
initialSquiggleString={`dist1 = uniform(0,20)
|
||||||
dist2 = normal(10,8)
|
dist2 = normal(10,8)
|
||||||
dist1 ./ dist2`}
|
dist1 ./ dist2`}
|
||||||
|
height={60}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
### Pointwise exponentiation
|
### Pointwise exponentiation
|
||||||
|
@ -151,6 +155,7 @@ dist1 ./ dist2`}
|
||||||
initialSquiggleString={`dist1 = 1 to 10
|
initialSquiggleString={`dist1 = 1 to 10
|
||||||
dist2 = triangular(1,2,3)
|
dist2 = triangular(1,2,3)
|
||||||
dist1 .^ dist2`}
|
dist1 .^ dist2`}
|
||||||
|
height={60}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
## Standard functions on distributions
|
## Standard functions on distributions
|
||||||
|
@ -160,7 +165,7 @@ dist1 .^ dist2`}
|
||||||
The `pdf(dist, x)` function returns the density of a distribution at the
|
The `pdf(dist, x)` function returns the density of a distribution at the
|
||||||
given point x.
|
given point x.
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString="pdf(normal(0,1),0)" />
|
<SquiggleEditor initialSquiggleString="pdf(normal(0,1),0)" height={60} />
|
||||||
|
|
||||||
#### Validity
|
#### Validity
|
||||||
|
|
||||||
|
@ -172,7 +177,7 @@ given point x.
|
||||||
The `cdf(dist, x)` gives the cumulative probability of the distribution
|
The `cdf(dist, x)` gives the cumulative probability of the distribution
|
||||||
or all values lower than x. It is the inverse of `quantile`.
|
or all values lower than x. It is the inverse of `quantile`.
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString="cdf(normal(0,1),0)" />
|
<SquiggleEditor initialSquiggleString="cdf(normal(0,1),0)" height={60} />
|
||||||
|
|
||||||
#### Validity
|
#### Validity
|
||||||
|
|
||||||
|
@ -185,7 +190,7 @@ The `quantile(dist, prob)` gives the value x or which the probability for all va
|
||||||
lower than x is equal to prob. It is the inverse of `cdf`. In the literature, it
|
lower than x is equal to prob. It is the inverse of `cdf`. In the literature, it
|
||||||
is also known as the quantiles function.
|
is also known as the quantiles function.
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString="quantile(normal(0,1),0.5)" />
|
<SquiggleEditor initialSquiggleString="quantile(normal(0,1),0.5)" height={60} />
|
||||||
|
|
||||||
#### Validity
|
#### Validity
|
||||||
|
|
||||||
|
@ -196,29 +201,35 @@ is also known as the quantiles function.
|
||||||
|
|
||||||
The `mean(distribution)` function gives the mean (expected value) of a distribution.
|
The `mean(distribution)` function gives the mean (expected value) of a distribution.
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString="mean(normal(5, 10))" />
|
<SquiggleEditor initialSquiggleString="mean(normal(5, 10))" height={60} />
|
||||||
|
|
||||||
### Sampling a distribution
|
### Sampling a distribution
|
||||||
|
|
||||||
The `sample(distribution)` samples a given distribution.
|
The `sample(distribution)` samples a given distribution.
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString="sample(normal(0, 10))" />
|
<SquiggleEditor initialSquiggleString="sample(normal(0, 10))" height={60} />
|
||||||
|
|
||||||
## Converting between distribution formats
|
## Converting between distribution formats
|
||||||
|
|
||||||
Recall the [three formats of distributions](https://develop--squiggle-documentation.netlify.app/docs/Discussions/Three-Types-Of-Distributions). We can force any distribution into `SampleSet` format
|
Recall the [three formats of distributions](https://develop--squiggle-documentation.netlify.app/docs/Discussions/Three-Types-Of-Distributions). We can force any distribution into `SampleSet` format
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString="toSampleSet(normal(5, 10))" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="toSampleSet(normal(5, 10))"
|
||||||
|
height={60}
|
||||||
|
/>
|
||||||
|
|
||||||
Or `PointSet` format
|
Or `PointSet` format
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString="toPointSet(normal(5, 10))" />
|
<SquiggleEditor initialSquiggleString="toPointSet(normal(5, 10))" height={60} />
|
||||||
|
|
||||||
### `toSampleSet` has two signatures
|
### `toSampleSet` has two signatures
|
||||||
|
|
||||||
Above, we saw the unary `toSampleSet`, which uses an internal hardcoded number of samples. If you'd like to provide the number of samples, it has a binary signature as well (floored)
|
Above, we saw the unary `toSampleSet`, which uses an internal hardcoded number of samples. If you'd like to provide the number of samples, it has a binary signature as well (floored)
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString="[toSampleSet(0.1 to 1, 100.1), toSampleSet(0.1 to 1, 5000), toSampleSet(0.1 to 1, 20000)]" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="[toSampleSet(0.1 to 1, 100.1), toSampleSet(0.1 to 1, 5000), toSampleSet(0.1 to 1, 20000)]"
|
||||||
|
height={60}
|
||||||
|
/>
|
||||||
|
|
||||||
#### Validity
|
#### Validity
|
||||||
|
|
||||||
|
@ -230,13 +241,19 @@ Some distribution operations (like horizontal shift) return an unnormalized dist
|
||||||
|
|
||||||
We provide a `normalize` function
|
We provide a `normalize` function
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString="normalize((0.1 to 1) + triangular(0.1, 1, 10))" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="normalize((0.1 to 1) + triangular(0.1, 1, 10))"
|
||||||
|
height={60}
|
||||||
|
/>
|
||||||
|
|
||||||
#### Validity - Input to `normalize` must be a dist
|
#### Validity - Input to `normalize` must be a dist
|
||||||
|
|
||||||
We provide a predicate `isNormalized`, for when we have simple control flow
|
We provide a predicate `isNormalized`, for when we have simple control flow
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString="isNormalized((0.1 to 1) * triangular(0.1, 1, 10))" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="isNormalized((0.1 to 1) * triangular(0.1, 1, 10))"
|
||||||
|
height={60}
|
||||||
|
/>
|
||||||
|
|
||||||
#### Validity
|
#### Validity
|
||||||
|
|
||||||
|
@ -246,20 +263,28 @@ We provide a predicate `isNormalized`, for when we have simple control flow
|
||||||
|
|
||||||
You may like to debug by right clicking your browser and using the _inspect_ functionality on the webpage, and viewing the _console_ tab. Then, wrap your squiggle output with `inspect` to log an internal representation.
|
You may like to debug by right clicking your browser and using the _inspect_ functionality on the webpage, and viewing the _console_ tab. Then, wrap your squiggle output with `inspect` to log an internal representation.
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString="inspect(toSampleSet(0.1 to 1, 100))" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="inspect(toSampleSet(0.1 to 1, 100))"
|
||||||
|
height={60}
|
||||||
|
/>
|
||||||
|
|
||||||
Save for a logging side effect, `inspect` does nothing to input and returns it.
|
Save for a logging side effect, `inspect` does nothing to input and returns it.
|
||||||
|
|
||||||
## Truncate
|
## Truncate
|
||||||
|
|
||||||
You can cut off from the left
|
You can truncate the left side, the right side, or both.
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString="truncateLeft(0.1 to 1, 0.5)" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="truncateLeft(0.1 to 1, 0.5)"
|
||||||
|
height={40}
|
||||||
|
/>
|
||||||
|
|
||||||
You can cut off from the right
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="truncateRight(0.1 to 1, 0.5)"
|
||||||
|
height={40}
|
||||||
|
/>
|
||||||
|
|
||||||
<SquiggleEditor initialSquiggleString="truncateRight(0.1 to 1, 0.5)" />
|
<SquiggleEditor
|
||||||
|
initialSquiggleString="truncate(0.1 to 1, 0.5, 1.5)"
|
||||||
You can cut off from both sides
|
height={40}
|
||||||
|
/>
|
||||||
<SquiggleEditor initialSquiggleString="truncate(0.1 to 1, 0.5, 1.5)" />
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user