Merge pull request #873 from quantified-uncertainty/homepage-changes
Docs improvements - July 23
This commit is contained in:
commit
25c95170e6
|
@ -43,7 +43,7 @@ could be continuous, discrete or mixed.
|
|||
<Story
|
||||
name="Continuous Pointset"
|
||||
args={{
|
||||
code: "toPointSet(normal(5,2))",
|
||||
code: "PointSet.fromDist(normal(5,2))",
|
||||
width,
|
||||
}}
|
||||
>
|
||||
|
@ -57,7 +57,7 @@ could be continuous, discrete or mixed.
|
|||
<Story
|
||||
name="Continuous SampleSet"
|
||||
args={{
|
||||
code: "toSampleSet(normal(5,2), 1000)",
|
||||
code: "SampleSet.fromDist(normal(5,2))",
|
||||
width,
|
||||
}}
|
||||
>
|
||||
|
|
|
@ -339,7 +339,7 @@ A log loss score. Often that often acts as a [scoring rule](https://en.wikipedia
|
|||
Note that it is fairly slow.
|
||||
|
||||
```
|
||||
logScore: ({estimate: distribution, ?prior: distribution, answer: distribution|number}) => number
|
||||
Dist.logScore: ({estimate: distribution, ?prior: distribution, answer: distribution|number}) => number
|
||||
```
|
||||
|
||||
**Examples**
|
||||
|
|
|
@ -38,7 +38,7 @@ Gets the internal samples of a sampleSet distribution. This is separate from the
|
|||
**Examples**
|
||||
|
||||
```
|
||||
toList(toSampleSet(normal(5,2)))
|
||||
toList(SampleSet.fromDist(normal(5,2)))
|
||||
```
|
||||
|
||||
### map
|
||||
|
|
|
@ -31,6 +31,6 @@ The means of sample set distributions can vary dramatically, especially as the n
|
|||
|
||||
<SquiggleEditor
|
||||
defaultCode={`symbolicDist = 5 to 50333333
|
||||
sampleSetDist = toSampleSet(symbolicDist)
|
||||
sampleSetDist = SampleSet.fromDist(symbolicDist)
|
||||
[mean(symbolicDist), mean(sampleSetDist), symbolicDist, sampleSetDist]`}
|
||||
/>
|
||||
|
|
|
@ -23,12 +23,6 @@ Squiggle is still very early. The main first goal is to become stable. This mean
|
|||
|
||||
## Distribution Features
|
||||
|
||||
`Distribution.fromSamples([])`
|
||||
Converts a list of samples, for example, from Guesstimate, into a distribution shape. Maybe takes a list of optional parameters.
|
||||
|
||||
`Distribution.fromCoordinates({xs, ys})`
|
||||
Convert XY coordinates into a distribution. Figure out a good way to do this for continuous, discrete, and mixed distributions.
|
||||
|
||||
[Metalog Distribution](https://en.wikipedia.org/wiki/Metalog_distribution)
|
||||
Add the Metalog distribution, and some convenient methods for generating these distributions. This might be a bit tricky because we might need or build a library to fit data. There's no Metalog javascript library yet, this would be pretty useful. There's already a Metalog library in Python, so that one could be used for inspiration.
|
||||
|
||||
|
|
|
@ -343,13 +343,13 @@ Creates a [triangular distribution](https://en.wikipedia.org/wiki/Triangular_dis
|
|||
|
||||
<SquiggleEditor defaultCode="triangular(1, 2, 4)" />
|
||||
|
||||
## FromSamples
|
||||
## FromList
|
||||
|
||||
`fromSamples(samples:number[])`
|
||||
`SampleSet.fromList(samples:number[])`
|
||||
|
||||
Creates a sample set distribution using an array of samples.
|
||||
|
||||
<SquiggleEditor defaultCode="fromSamples([1,2,3,4,6,5,5,5])" />
|
||||
<SquiggleEditor defaultCode="SampleSet.fromList([1,2,3,4,6,5,5,5])" />
|
||||
|
||||
### Arguments
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ dist1 * dist2`}
|
|||
|
||||
We also provide concatenation of two distributions as a syntax sugar for `*`
|
||||
|
||||
<SquiggleEditor defaultCode="(0.1 to 1) triangular(1,2,3)" />
|
||||
<SquiggleEditor defaultCode="(0.1 to 1) * triangular(1,2,3)" />
|
||||
|
||||
### Division
|
||||
|
||||
|
@ -87,18 +87,11 @@ A projection over a stretched x-axis.
|
|||
log(dist)`}
|
||||
/>
|
||||
|
||||
<SquiggleEditor
|
||||
defaultCode={`dist = beta(1,2)
|
||||
log10(dist)`}
|
||||
/>
|
||||
<SquiggleEditor defaultCode={`log10(5 to 10)`} />
|
||||
|
||||
Base `x`
|
||||
|
||||
<SquiggleEditor
|
||||
defaultCode={`x = 2
|
||||
dist = beta(2,3)
|
||||
log(dist, x)`}
|
||||
/>
|
||||
<SquiggleEditor defaultCode={`log(5 to 10, 2)`} />
|
||||
|
||||
#### Validity
|
||||
|
||||
|
@ -113,45 +106,25 @@ For every point on the x-axis, operate the corresponding points in the y axis of
|
|||
|
||||
TODO: this isn't in the new interpreter/parser yet.
|
||||
|
||||
<SquiggleEditor
|
||||
defaultCode={`dist1 = 1 to 10
|
||||
dist2 = triangular(1,2,3)
|
||||
dist1 .+ dist2`}
|
||||
/>
|
||||
<SquiggleEditor defaultCode={`(1 to 10) .+ triangular(1,2,3)`} />
|
||||
|
||||
### Pointwise subtraction
|
||||
|
||||
TODO: this isn't in the new interpreter/parser yet.
|
||||
|
||||
<SquiggleEditor
|
||||
defaultCode={`dist1 = 1 to 10
|
||||
dist2 = triangular(1,2,3)
|
||||
dist1 .- dist2`}
|
||||
/>
|
||||
<SquiggleEditor defaultCode={`(1 to 10) .- triangular(1,2,3)`} />
|
||||
|
||||
### Pointwise multiplication
|
||||
|
||||
<SquiggleEditor
|
||||
defaultCode={`dist1 = 1 to 10
|
||||
dist2 = triangular(1,2,3)
|
||||
dist1 .* dist2`}
|
||||
/>
|
||||
<SquiggleEditor defaultCode={`(1 to 10) .* triangular(1,2,3)`} />
|
||||
|
||||
### Pointwise division
|
||||
|
||||
<SquiggleEditor
|
||||
defaultCode={`dist1 = uniform(0,20)
|
||||
dist2 = normal(10,8)
|
||||
dist1 ./ dist2`}
|
||||
/>
|
||||
<SquiggleEditor defaultCode={`(uniform(0,10)) ./ normal(10,4)`} />
|
||||
|
||||
### Pointwise exponentiation
|
||||
|
||||
<SquiggleEditor
|
||||
defaultCode={`dist1 = 1 to 10
|
||||
dist2 = triangular(1,2,3)
|
||||
dist1 .^ dist2`}
|
||||
/>
|
||||
<SquiggleEditor defaultCode={`(1 to 10) .^ triangular(1,2,3)`} />
|
||||
|
||||
## Standard functions on distributions
|
||||
|
||||
|
@ -208,21 +181,15 @@ The `sample(distribution)` samples a given distribution.
|
|||
|
||||
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 defaultCode="toSampleSet(normal(5, 10))" />
|
||||
<SquiggleEditor defaultCode="PointSet.fromDist(normal(5, 10))" />
|
||||
|
||||
Or `PointSet` format
|
||||
|
||||
<SquiggleEditor defaultCode="toPointSet(normal(5, 10))" />
|
||||
|
||||
### `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)
|
||||
|
||||
<SquiggleEditor defaultCode="[toSampleSet(0.1 to 1, 100.1), toSampleSet(0.1 to 1, 5000), toSampleSet(0.1 to 1, 20000)]" />
|
||||
<SquiggleEditor defaultCode="PointSet.fromDist(normal(5, 10))" />
|
||||
|
||||
#### Validity
|
||||
|
||||
- Second argument to `toSampleSet` must be a number.
|
||||
- Second argument to `SampleSet.fromDist` must be a number.
|
||||
|
||||
## Normalization
|
||||
|
||||
|
@ -246,7 +213,7 @@ 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.
|
||||
|
||||
<SquiggleEditor defaultCode="inspect(toSampleSet(0.1 to 1, 100))" />
|
||||
<SquiggleEditor defaultCode="inspect(SampleSet.fromDist(0.1 to 1))" />
|
||||
|
||||
Save for a logging side effect, `inspect` does nothing to input and returns it.
|
||||
|
||||
|
|
|
@ -7,46 +7,46 @@ import { SquiggleEditor } from "../../src/components/SquiggleEditor";
|
|||
|
||||
## Expressions
|
||||
|
||||
### Distributions
|
||||
|
||||
<SquiggleEditor defaultCode={`mixture(1 to 2, 3, [0.3, 0.7])`} />
|
||||
|
||||
### Numbers
|
||||
|
||||
<SquiggleEditor defaultCode="4.32" />
|
||||
|
||||
### Arrays
|
||||
### Distributions
|
||||
|
||||
<SquiggleEditor
|
||||
defaultCode={`[beta(1,10), 4, isNormalized(toSampleSet(1 to 2))]`}
|
||||
defaultCode={`a = normal(4,2)
|
||||
b = 30 to 50
|
||||
c = lognormal({mean:90, stdev: 7})
|
||||
d = mixture(a,b,c, [0.3, 0.3, .4])
|
||||
{a:a, b:b, c:c, d:d}`}
|
||||
/>
|
||||
|
||||
### Records
|
||||
### Lists
|
||||
|
||||
<SquiggleEditor
|
||||
defaultCode={`[beta(1,10), 4, isNormalized(SampleSet.fromDist(1 to 2))]`}
|
||||
/>
|
||||
|
||||
<SquiggleEditor defaultCode={`List.make(5,1)`} />
|
||||
|
||||
### Dictionaries
|
||||
|
||||
<SquiggleEditor
|
||||
defaultCode={`d = {dist: triangular(0, 1, 2), weight: 0.25}
|
||||
d.dist`}
|
||||
/>
|
||||
|
||||
## Statements
|
||||
|
||||
A statement assigns expressions to names. It looks like `<symbol> = <expression>`
|
||||
|
||||
<SquiggleEditor
|
||||
defaultCode={`value_of_work = 10 to 70
|
||||
5 + value_of_work / 75`}
|
||||
/>
|
||||
|
||||
### Functions
|
||||
|
||||
We can define functions
|
||||
|
||||
<SquiggleEditor
|
||||
defaultCode={`ozzie_estimate(t) = lognormal(t^(1.1), 0.5)
|
||||
nuno_estimate(t, m) = mixture(normal(-5, 1), lognormal(m, t / 1.25))
|
||||
ozzie_estimate(1) * nuno_estimate(1, 1)`}
|
||||
defaultCode={`f(t) = normal(t^2, t^1.2+.01)
|
||||
f`}
|
||||
/>
|
||||
|
||||
### Anonymous Functions
|
||||
|
||||
<SquiggleEditor defaultCode={`{|t| normal(t^2, t^1.2+.01)}`} />
|
||||
|
||||
## See more
|
||||
|
||||
- [Distribution creation](./DistributionCreation)
|
||||
|
|
|
@ -3,7 +3,21 @@ sidebar_position: 1
|
|||
title: Introduction
|
||||
---
|
||||
|
||||
Squiggle is an _estimation language_, and a syntax for _calculating and expressing beliefs_ involving uncertainty. It has use cases in forecasting and writing evaluations.
|
||||
Squiggle is a simple programming language for intuitive probabilistic estimation. It's meant for quantitative forecasting and evaluations.
|
||||
|
||||
The basics of Squiggle can be pretty simple and intuitive. The more advanced functionality can take some time to learn.
|
||||
|
||||
## What Squiggle Is
|
||||
|
||||
- A simple programming language for doing math with probability distributions
|
||||
- An embeddable language that can be used in Javascript applications
|
||||
- A tool to embed functions as forecasts that can be embedded in other applications
|
||||
|
||||
## What Squiggle Is Not
|
||||
|
||||
- A complete replacement for enterprise Risk Analysis tools (See Crystal Ball, @Risk, Lumina Analytica)
|
||||
- A Probabilistic Programming Language with backwards inference and sophisticated sampling algorithms. (See [PPLs](https://en.wikipedia.org/wiki/Probabilistic_programming))
|
||||
- A visual tool aimed at casual users (see Guesstimate, Causal)
|
||||
|
||||
## Get started
|
||||
|
||||
|
|
|
@ -10,7 +10,8 @@ const path = require("path");
|
|||
/** @type {import('@docusaurus/types').Config} */
|
||||
const config = {
|
||||
title: "Squiggle",
|
||||
tagline: "An estimation language for forecasters",
|
||||
tagline:
|
||||
"A simple programming language for intuitive probabilistic estimation",
|
||||
url: "https://squiggle-language.com",
|
||||
baseUrl: "/",
|
||||
onBrokenLinks: "throw",
|
||||
|
@ -72,6 +73,11 @@ const config = {
|
|||
},
|
||||
{ to: "/blog", label: "Blog", position: "left" },
|
||||
{ to: "/playground", label: "Playground", position: "left" },
|
||||
{
|
||||
href: "https://github.com/quantified-uncertainty/squiggle/discussions",
|
||||
label: "Issues & Discussion",
|
||||
position: "right",
|
||||
},
|
||||
{
|
||||
href: "https://github.com/quantified-uncertainty/squiggle",
|
||||
label: "GitHub",
|
||||
|
|
|
@ -5,6 +5,11 @@
|
|||
width: 100%;
|
||||
}
|
||||
|
||||
.features h3 {
|
||||
font-family: "Lora", serif;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
.featureSvg {
|
||||
height: 200px;
|
||||
width: 200px;
|
||||
|
|
|
@ -4,27 +4,29 @@
|
|||
* work well for content-centric websites.
|
||||
*/
|
||||
|
||||
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600&family=Lato:wght@100;400;700;900&family=Lora:wght@400;500;600&display=swap");
|
||||
|
||||
/* You can override the default Infima variables here. */
|
||||
:root {
|
||||
--ifm-color-primary: #2488df;
|
||||
--ifm-color-primary-dark: #176fcd;
|
||||
--ifm-color-primary-darker: #1f58cb;
|
||||
--ifm-color-primary-darkest: #1e2672;
|
||||
--ifm-color-primary-light: #49acd3;
|
||||
--ifm-color-primary-lighter: #4fb1c7;
|
||||
--ifm-color-primary-lightest: #3dbfd3;
|
||||
--ifm-color-primary: #e74c0f;
|
||||
--ifm-color-primary-dark: #bb4b05;
|
||||
--ifm-color-primary-darker: #9d0c02;
|
||||
--ifm-color-primary-darkest: #5d2200;
|
||||
--ifm-color-primary-light: #e6a036;
|
||||
--ifm-color-primary-lighter: #e79d1d;
|
||||
--ifm-color-primary-lightest: #f5e191;
|
||||
--ifm-code-font-size: 95%;
|
||||
}
|
||||
|
||||
/* For readability concerns, you should choose a lighter palette in dark mode. */
|
||||
html[data-theme="dark"] {
|
||||
--ifm-color-primary: #25c2a0;
|
||||
--ifm-color-primary-dark: #21af90;
|
||||
--ifm-color-primary-darker: #1fa588;
|
||||
--ifm-color-primary-darkest: #1a8870;
|
||||
--ifm-color-primary-light: #29d5b0;
|
||||
--ifm-color-primary-lighter: #32d8b4;
|
||||
--ifm-color-primary-lightest: #4fddbf;
|
||||
--ifm-color-primary: #df774d;
|
||||
--ifm-color-primary-dark: #db8651;
|
||||
--ifm-color-primary-darker: #d7584f;
|
||||
--ifm-color-primary-darkest: #b3693e;
|
||||
--ifm-color-primary-light: #edb25a;
|
||||
--ifm-color-primary-lighter: #ebd489;
|
||||
--ifm-color-primary-lightest: #faf2d4;
|
||||
}
|
||||
|
||||
.docusaurus-highlight-code-line {
|
||||
|
@ -37,3 +39,55 @@ html[data-theme="dark"] {
|
|||
html[data-theme="dark"] .docusaurus-highlight-code-line {
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.hero h1 {
|
||||
font-size: 4em;
|
||||
font-weight: 900;
|
||||
margin-bottom: 0.5rem;
|
||||
color: rgb(230, 72, 79);
|
||||
font-family: "Lato", sans-serif;
|
||||
}
|
||||
|
||||
.navbar__title {
|
||||
font-family: "Lato", sans-serif;
|
||||
font-weight: 900;
|
||||
color: rgb(205, 88, 53);
|
||||
}
|
||||
|
||||
.hero__subtitle {
|
||||
color: #888;
|
||||
font-size: 1.25em;
|
||||
}
|
||||
|
||||
.hero__subtitle2 {
|
||||
color: #ba3e3e;
|
||||
font-size: 1.5em;
|
||||
font-family: "Lora";
|
||||
font-weight: 500;
|
||||
margin-top: 1em;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
max-width: 500px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: "Lora", serif;
|
||||
font-size: 2.5em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.menu__link,
|
||||
.navbar__item {
|
||||
font-family: "Lora", serif;
|
||||
}
|
||||
|
||||
.navbar__item {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
:root {
|
||||
/* --ifm-font-family-base: 'Lora'; */
|
||||
}
|
||||
|
|
|
@ -12,11 +12,8 @@ function HomepageHeader() {
|
|||
<header className={clsx("hero hero--primary", styles.heroBanner)}>
|
||||
<div className="container">
|
||||
<h1 className="hero__title">{siteConfig.title}</h1>
|
||||
<p className="hero__subtitle">
|
||||
<i>Early access</i>
|
||||
</p>
|
||||
<p className="hero__subtitle">{siteConfig.tagline}</p>
|
||||
<div className={styles.buttons}></div>
|
||||
<p className="hero__subtitle">Early Access</p>
|
||||
<p className="hero__subtitle2">{siteConfig.tagline}</p>
|
||||
</div>
|
||||
</header>
|
||||
);
|
||||
|
|
|
@ -4,10 +4,11 @@
|
|||
*/
|
||||
|
||||
.heroBanner {
|
||||
padding: 4rem 0;
|
||||
padding: 2rem 0;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
background: rgb(255, 246, 237);
|
||||
}
|
||||
|
||||
@media screen and (max-width: 966px) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user