truncatedNormalCdf function
Truncated normal cumulative probability density function
min
: left limit.max
: right limit satisfyingmin < max
.meanOfParent
: Mean of the parent normal distribution.stdDevOfParent
: Standard deviation of the parent normal distribution.truncatedNormalPdf(x) > 0
forx
in(xMin, xMax)
and zero elsewhere.
Throws an error of type ErrorOfType<InvalidFunctionParameter>
if xMin >= xMax
.
Implementation
double truncatedNormalCdf(
num x,
num xMin,
num xMax,
num meanOfParent,
num stdDevOfParent,
) {
if (xMin >= xMax) {
throw ErrorOfType<InvalidFunctionParameter>(
message: 'Error in truncatedNormalCdf($x, $xMin, $xMax, '
'$meanOfParent, $stdDevOfParent)',
invalidState: 'min: $xMin >= max: $xMax',
expectedState: 'xMmin < xMmax',
);
}
final invStdDev = 1.0 / stdDevOfParent;
final alpha = (xMin - meanOfParent) * invStdDev;
final beta = (xMax - meanOfParent) * invStdDev;
if (x <= xMin) return 0.0;
if (x >= xMax) return 1.0;
return (stdNormalCdf((x - meanOfParent) * invStdDev) - stdNormalCdf(alpha)) /
(stdNormalCdf(beta) - stdNormalCdf(alpha) + epsilon);
}