Fixed issues with primary models
This commit is contained in:
parent
e80bd4108e
commit
0ef6d106ea
|
@ -24,19 +24,32 @@ let toDistPlus =
|
||||||
t: distPlusIngredients,
|
t: distPlusIngredients,
|
||||||
)
|
)
|
||||||
: option(distPlus) => {
|
: option(distPlus) => {
|
||||||
let samples =
|
let toDist = shape =>
|
||||||
Guesstimator.stringToSamples(t.guesstimatorString, sampleCount);
|
|
||||||
let shape = Samples.T.toShape(~samples, ~outputXYPoints, ~kernelWidth, ());
|
|
||||||
shape
|
|
||||||
|> E.O.fmap(
|
|
||||||
Distributions.DistPlus.make(
|
Distributions.DistPlus.make(
|
||||||
~shape=_,
|
~shape,
|
||||||
~domain=t.domain,
|
~domain=t.domain,
|
||||||
~unit=t.unit,
|
~unit=t.unit,
|
||||||
~guesstimatorString=Some(t.guesstimatorString),
|
~guesstimatorString=Some(t.guesstimatorString),
|
||||||
(),
|
(),
|
||||||
),
|
|
||||||
)
|
)
|
||||||
|> E.O.fmap(Distributions.DistPlus.T.scaleToIntegralSum(~intendedSum=1.0))
|
|> Distributions.DistPlus.T.scaleToIntegralSum(~intendedSum=1.0);
|
||||||
|> applyTruncation(truncateTo);
|
let parsed1 = MathJsParser.fromString(t.guesstimatorString);
|
||||||
|
let shape =
|
||||||
|
switch (parsed1) {
|
||||||
|
| Ok(r) =>
|
||||||
|
let shape = SymbolicDist.toShape(truncateTo |> E.O.default(10000), r);
|
||||||
|
Some(shape |> toDist);
|
||||||
|
| _ =>
|
||||||
|
let fewSamples = Guesstimator.stringToSamples(t.guesstimatorString, 10);
|
||||||
|
if (fewSamples |> E.A.length > 0) {
|
||||||
|
let samples =
|
||||||
|
Guesstimator.stringToSamples(t.guesstimatorString, sampleCount);
|
||||||
|
let shape =
|
||||||
|
Samples.T.toShape(~samples, ~outputXYPoints, ~kernelWidth, ());
|
||||||
|
shape |> E.O.fmap(toDist) |> applyTruncation(truncateTo);
|
||||||
|
} else {
|
||||||
|
None;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
shape;
|
||||||
};
|
};
|
|
@ -35,26 +35,26 @@ module Data = {
|
||||||
makeFundWithInfo(
|
makeFundWithInfo(
|
||||||
"Animal Welfare Fund",
|
"Animal Welfare Fund",
|
||||||
Fund(ANIMAL_WELFARE),
|
Fund(ANIMAL_WELFARE),
|
||||||
Some(4000.0),
|
Some(400000.0),
|
||||||
Some(10.0),
|
Some(100000.0),
|
||||||
),
|
),
|
||||||
makeFundWithInfo(
|
makeFundWithInfo(
|
||||||
"Global Health Fund",
|
"Global Health Fund",
|
||||||
Fund(GLOBAL_HEALTH),
|
Fund(GLOBAL_HEALTH),
|
||||||
Some(4000.0),
|
Some(400000.0),
|
||||||
Some(10.0),
|
Some(100000.0),
|
||||||
),
|
),
|
||||||
makeFundWithInfo(
|
makeFundWithInfo(
|
||||||
"Long Term Future Fund",
|
"Long Term Future Fund",
|
||||||
Fund(LONG_TERM_FUTURE),
|
Fund(LONG_TERM_FUTURE),
|
||||||
Some(4000.0),
|
Some(400000.0),
|
||||||
Some(10.0),
|
Some(100000.0),
|
||||||
),
|
),
|
||||||
makeFundWithInfo(
|
makeFundWithInfo(
|
||||||
"Meta Fund",
|
"Meta Fund",
|
||||||
Fund(ANIMAL_WELFARE),
|
Fund(ANIMAL_WELFARE),
|
||||||
Some(4000.0),
|
Some(400000.0),
|
||||||
Some(10.0),
|
Some(100000.0),
|
||||||
),
|
),
|
||||||
makeFundWithInfo("All", All, None, None),
|
makeFundWithInfo("All", All, None, None),
|
||||||
|];
|
|];
|
||||||
|
@ -63,14 +63,14 @@ module Data = {
|
||||||
module Model = {
|
module Model = {
|
||||||
open Data;
|
open Data;
|
||||||
let currentYear = 2020.;
|
let currentYear = 2020.;
|
||||||
let firstYearStdDev = 0.2;
|
let firstYearStdDev = 400000.;
|
||||||
type yearlyNumericDiff = {
|
type yearlyNumericDiff = {
|
||||||
meanDiff: float,
|
meanDiff: float,
|
||||||
stdDiff: float,
|
stdDiff: float,
|
||||||
};
|
};
|
||||||
|
|
||||||
let yearlyMeanGrowthRateIfNotClosed = (group: group): yearlyNumericDiff => {
|
let yearlyMeanGrowthRateIfNotClosed = (group: group): yearlyNumericDiff => {
|
||||||
{meanDiff: 1.1, stdDiff: 1.08};
|
{meanDiff: 1.1, stdDiff: 1.2};
|
||||||
};
|
};
|
||||||
|
|
||||||
let calculateDifference =
|
let calculateDifference =
|
||||||
|
@ -141,10 +141,12 @@ module Model = {
|
||||||
| None =>
|
| None =>
|
||||||
let foo =
|
let foo =
|
||||||
getGlobalCatastropheChance(dateTime)
|
getGlobalCatastropheChance(dateTime)
|
||||||
|> E.O.fmap(E.Float.with2DigitsPrecision)
|
|> E.O.fmap(r => {
|
||||||
|> E.O.fmap((r: string) =>
|
let chance = r;
|
||||||
"uniform(0,1) > " ++ r ++ " ? " ++ difference ++ ": 0"
|
let opposite = 1.0 -. r;
|
||||||
);
|
let reg = difference;
|
||||||
|
{j|mm(0, $reg, [$chance, $opposite])|j};
|
||||||
|
});
|
||||||
foo |> E.O.default("");
|
foo |> E.O.default("");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -10,9 +10,9 @@ let normal = (mean: float, std: float) =>
|
||||||
let logNormal = (mean: float, std: float) => {
|
let logNormal = (mean: float, std: float) => {
|
||||||
Js.Float.(
|
Js.Float.(
|
||||||
{
|
{
|
||||||
let nMean = toPrecisionWithPrecision(Js.Math.log10(mean), ~digits=4);
|
let nMean = toPrecisionWithPrecision(mean, ~digits=4);
|
||||||
let nStd = toPrecisionWithPrecision(Js.Math.log10(std), ~digits=2);
|
let nStd = toPrecisionWithPrecision(std, ~digits=2);
|
||||||
{j|lognormal($(nMean), $(nStd))|j};
|
{j|lognormal({mean: $(nMean), stdev: $(nStd)})|j};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user