squiggle/showcase/entries/Continuous.re

87 lines
2.7 KiB
ReasonML
Raw Normal View History

2020-02-28 10:32:12 +00:00
// Examples:
// mm(floor(uniform(30,35)), normal(50,20), [.25,.5])
// mm(floor(normal(28,4)), normal(32,2), uniform(20,24), [.5,.2,.1])
// mm(5 to 20, floor(normal(20,2)), [.5, .5])"
// floor(3 to 4)
// uniform(0,1) > 0.3 ? lognormal(6.652, -0.41): 0
2020-02-17 22:53:39 +00:00
let timeDist =
DistPlusIngredients.make(
2020-02-25 12:28:26 +00:00
~guesstimatorString="(floor(10 to 15))",
~domain=RightLimited({xPoint: 50.0, excludingProbabilityMass: 0.3}),
2020-02-24 21:33:27 +00:00
~unit=
DistTypes.TimeDistribution({zero: MomentRe.momentNow(), unit: `years}),
2020-02-17 22:53:39 +00:00
(),
2020-02-24 21:33:27 +00:00
);
let setup = dist =>
dist
2020-02-25 12:28:26 +00:00
|> DistPlusIngredients.toDistPlus(
~sampleCount=10000,
~outputXYPoints=2000,
~truncateTo=Some(1000),
2020-03-04 10:27:50 +00:00
)
|> E.O.React.fmapOrNull(distPlus => <DistPlusPlot distPlus />);
2020-02-17 22:53:39 +00:00
let distributions = () =>
<div>
<div>
2020-03-04 10:27:50 +00:00
<h2 className="text-gray-800 text-xl font-bold">
{"Initial Section" |> ReasonReact.string}
</h2>
<h3 className="text-gray-600 text-lg font-bold">
{"Continuous" |> ReasonReact.string}
</h3>
{setup(DistPlusIngredients.make(~guesstimatorString="5 to 20", ()))}
<h3 className="text-gray-600 text-lg font-bold">
{"Discrete" |> ReasonReact.string}
</h3>
{setup(
DistPlusIngredients.make(~guesstimatorString="floor(10 to 20)", ()),
)}
<h3 className="text-gray-600 text-lg font-bold">
{"Mixed" |> ReasonReact.string}
</h3>
{setup(
DistPlusIngredients.make(
~guesstimatorString="mm(5 to 20, floor(20 to 30), [.5,.5])",
(),
),
)}
<h2 className="text-gray-800 text-xl font-bold">
{"Over Time" |> ReasonReact.string}
</h2>
<h3 className="text-gray-600 text-lg font-bold">
{"Continuous" |> ReasonReact.string}
</h3>
{setup(
DistPlusIngredients.make(
~guesstimatorString="5 to 20",
~unit=TimeDistribution({zero: MomentRe.momentNow(), unit: `years}),
(),
),
)}
<h3 className="text-gray-600 text-lg font-bold">
{"Discrete" |> ReasonReact.string}
</h3>
{setup(
DistPlusIngredients.make(
~guesstimatorString="floor(10 to 20)",
~unit=TimeDistribution({zero: MomentRe.momentNow(), unit: `years}),
(),
),
)}
<h3 className="text-gray-600 text-lg font-bold">
{"Mixed" |> ReasonReact.string}
</h3>
2020-02-24 21:33:27 +00:00
{setup(
DistPlusIngredients.make(
2020-03-04 10:27:50 +00:00
~guesstimatorString="mm(5 to 20, floor(20 to 30), [.5,.5])",
~unit=TimeDistribution({zero: MomentRe.momentNow(), unit: `years}),
2020-02-24 21:33:27 +00:00
(),
),
2020-03-04 10:27:50 +00:00
)}
2020-02-19 22:28:16 +00:00
</div>
</div>;
2020-03-04 10:27:50 +00:00
let entry = EntryTypes.(entry(~title="Pdf", ~render=distributions));