2020-02-16 11:45:19 +00:00
|
|
|
type assumption =
|
|
|
|
| ADDS_TO_1
|
|
|
|
| ADDS_TO_CORRECT_PROBABILITY;
|
2020-02-18 08:51:11 +00:00
|
|
|
|
2020-02-16 11:45:19 +00:00
|
|
|
type assumptions = {
|
|
|
|
continuous: assumption,
|
|
|
|
discrete: assumption,
|
|
|
|
discreteProbabilityMass: option(float),
|
|
|
|
};
|
2020-02-18 08:51:11 +00:00
|
|
|
|
2020-06-26 06:38:14 +00:00
|
|
|
let buildSimple = (~continuous: option(DistTypes.continuousShape), ~discrete: option(DistTypes.discreteShape)): option(DistTypes.shape) => {
|
2020-07-17 01:14:42 +00:00
|
|
|
let continuous = continuous |> E.O.default(Continuous.make(`Linear, {xs: [||], ys: [||]}, Some(0.0), None));
|
|
|
|
let discrete = discrete |> E.O.default(Discrete.make({xs: [||], ys: [||]}, Some(0.0), None));
|
2020-02-24 21:01:29 +00:00
|
|
|
let cLength =
|
2020-03-14 21:18:34 +00:00
|
|
|
continuous
|
2020-07-08 16:00:13 +00:00
|
|
|
|> Continuous.getShape
|
2020-03-14 21:18:34 +00:00
|
|
|
|> XYShape.T.xs
|
|
|
|
|> E.A.length;
|
2020-07-08 16:00:13 +00:00
|
|
|
let dLength = discrete |> Discrete.getShape |> XYShape.T.xs |> E.A.length;
|
2020-02-24 21:01:29 +00:00
|
|
|
switch (cLength, dLength) {
|
|
|
|
| (0 | 1, 0) => None
|
|
|
|
| (0 | 1, _) => Some(Discrete(discrete))
|
|
|
|
| (_, 0) => Some(Continuous(continuous))
|
|
|
|
| (_, _) =>
|
2020-02-25 12:54:52 +00:00
|
|
|
let mixedDist =
|
2020-07-08 16:00:13 +00:00
|
|
|
Mixed.make(
|
2020-02-24 21:01:29 +00:00
|
|
|
~continuous,
|
2020-07-17 01:14:42 +00:00
|
|
|
~discrete,
|
|
|
|
None,
|
|
|
|
None,
|
2020-02-25 12:54:52 +00:00
|
|
|
);
|
|
|
|
Some(Mixed(mixedDist));
|
2020-02-24 21:01:29 +00:00
|
|
|
};
|
2020-07-13 19:44:45 +00:00
|
|
|
};
|