Merge branch 'master' into improvements/1080
This commit is contained in:
commit
a81845bcc2
|
@ -5,13 +5,14 @@ let data: DistributionTypes.xyShape = {
|
|||
|
||||
let mixedDist =
|
||||
GenericDistribution.make(
|
||||
~generationSource=GuesstimatorString("mm(3, normal(5,1), [.5,.5])"),
|
||||
~generationSource=
|
||||
GuesstimatorString("mm(uniform(10,12), normal(5,1), [.5,.5])"),
|
||||
~probabilityType=Pdf,
|
||||
~domain=Complete,
|
||||
~unit=UnspecifiedDistribution,
|
||||
(),
|
||||
)
|
||||
|> GenericDistribution.renderIfNeeded(~sampleCount=3000);
|
||||
|> GenericDistribution.renderIfNeeded(~sampleCount=1000);
|
||||
|
||||
let timeDist =
|
||||
GenericDistribution.make(
|
||||
|
@ -30,7 +31,7 @@ let timeDist =
|
|||
}),
|
||||
(),
|
||||
)
|
||||
|> GenericDistribution.renderIfNeeded(~sampleCount=3000);
|
||||
|> GenericDistribution.renderIfNeeded(~sampleCount=1000);
|
||||
|
||||
let domainLimitedDist =
|
||||
GenericDistribution.make(
|
||||
|
@ -40,7 +41,7 @@ let domainLimitedDist =
|
|||
~unit=UnspecifiedDistribution,
|
||||
(),
|
||||
)
|
||||
|> GenericDistribution.renderIfNeeded(~sampleCount=3000);
|
||||
|> GenericDistribution.renderIfNeeded(~sampleCount=1000);
|
||||
|
||||
let distributions = () =>
|
||||
<div>
|
||||
|
|
|
@ -32,4 +32,17 @@ let renderIfNeeded =
|
|||
);
|
||||
| Shape(_) => Some(t)
|
||||
};
|
||||
};
|
||||
} /* }*/;
|
||||
|
||||
// let getTimeY =
|
||||
// (t: genericDistribution, point: TimeTypes.RelativeTimePoint.timeInVector) => {
|
||||
// switch (t) {
|
||||
// | {
|
||||
// generationSource: Shape(shape),
|
||||
// probabilityType: Pdf,
|
||||
// unit: Time(timeVector),
|
||||
// } =>
|
||||
// TimeTypes.RelativeTimePoint.toXValue(timeVector, point)
|
||||
// |> E.O.fmap(x => Shape.Mixed.getY(t, x))
|
||||
// | _ => 2.0
|
||||
// };
|
|
@ -6,6 +6,10 @@ let _lastElement = (a: array('a)) =>
|
|||
| n => Belt.Array.get(a, n - 1)
|
||||
};
|
||||
|
||||
type pointInRange =
|
||||
| Unbounded
|
||||
| X(float);
|
||||
|
||||
module XYShape = {
|
||||
type t = xyShape;
|
||||
|
||||
|
@ -37,8 +41,19 @@ module XYShape = {
|
|||
fromArrays(xs, ys);
|
||||
};
|
||||
|
||||
let getY = (t: t, x: float) => x;
|
||||
|
||||
let integral = transverse((aCurrent, aLast) => aCurrent +. aLast);
|
||||
let derivative = transverse((aCurrent, aLast) => aCurrent -. aLast);
|
||||
|
||||
let massWithin = (t: t, left: pointInRange, right: pointInRange) => {
|
||||
switch (left, right) {
|
||||
| (Unbounded, Unbounded) => t |> ySum
|
||||
| (Unbounded, X(f)) => t |> integral |> getY(_, f)
|
||||
| (X(f), Unbounded) => ySum(t) -. getY(integral(t), f)
|
||||
| (X(l), X(r)) => getY(integral(t), r) -. getY(integral(t), l)
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
module Continuous = {
|
||||
|
@ -99,6 +114,25 @@ module Mixed = {
|
|||
};
|
||||
};
|
||||
|
||||
module Any = {
|
||||
type t = DistributionTypes.pointsType;
|
||||
|
||||
let x = (t: t, x: float) =>
|
||||
switch (t) {
|
||||
| Mixed(m) => `mixed(Mixed.getY(m, x))
|
||||
| Discrete(discreteShape) => `discrete(Discrete.findY(x, discreteShape))
|
||||
| Continuous(continuousShape) =>
|
||||
`continuous(Continuous.findY(x, continuousShape))
|
||||
};
|
||||
|
||||
let massInRange = (t: t, left: pointInRange, right: pointInRange) =>
|
||||
switch (t) {
|
||||
| Mixed(m) => 3.0
|
||||
| Discrete(discreteShape) => 2.0
|
||||
| Continuous(continuousShape) => 3.0
|
||||
};
|
||||
};
|
||||
|
||||
module DomainMixed = {
|
||||
type t = {
|
||||
mixedShape,
|
||||
|
|
|
@ -126,12 +126,14 @@ module Model = {
|
|||
currentDateTime,
|
||||
yearlyMeanGrowthRateIfNotClosed(group),
|
||||
);
|
||||
|
||||
let str =
|
||||
switch (xRisk) {
|
||||
| Some({truthValue: true}) => "0"
|
||||
| Some({truthValue: false}) => difference
|
||||
| None => "uniform(0,1) > .3 ? " ++ difference ++ ": 0"
|
||||
};
|
||||
|
||||
let genericDistribution =
|
||||
GenericDistribution.make(
|
||||
~generationSource=GuesstimatorString(str),
|
||||
|
|
|
@ -48,8 +48,8 @@ const toPdf = (values, sampleCount, min, max) => {
|
|||
const ratioSize$ = ratioSize(samples);
|
||||
const width = ratioSize$ === 'SMALL' ? 20 : 1;
|
||||
|
||||
const cdf = samples.toCdf({ size: sampleCount, width, min, max });
|
||||
continuous = cdf;
|
||||
const pdf = samples.toPdf({ size: sampleCount, width, min, max });
|
||||
continuous = pdf;
|
||||
}
|
||||
return {continuous, discrete};
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue
Block a user