Call Jstat for mean instead of calculate it
Value: [1e-8 to 1e-4]
This commit is contained in:
parent
dd942fe29e
commit
32a881d06a
|
@ -16,12 +16,20 @@ describe("dotSubtract", () => {
|
||||||
mkExponential(rate),
|
mkExponential(rate),
|
||||||
)
|
)
|
||||||
let meanResult = E.R2.bind(DistributionOperation.Constructors.mean(~env), dotDifference)
|
let meanResult = E.R2.bind(DistributionOperation.Constructors.mean(~env), dotDifference)
|
||||||
let meanAnalytical = mean -. 1.0 /. rate
|
let meanAnalytical =
|
||||||
|
mean -.
|
||||||
|
SymbolicDist.Exponential.mean({rate: rate})->E.R2.toExn(
|
||||||
|
"On trusted input this should never happen",
|
||||||
|
)
|
||||||
switch meanResult {
|
switch meanResult {
|
||||||
| Ok(meanValue) => meanValue->expect->toBeCloseTo(meanAnalytical)
|
| Ok(meanValue) => meanValue->expect->toBeCloseTo(meanAnalytical)
|
||||||
| Error(_) => raise(MeanFailed)
|
| Error(_) => raise(MeanFailed)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
/*
|
||||||
|
It seems like this test should work, and it's plausible that
|
||||||
|
there's some bug in `pointwiseSubtract`
|
||||||
|
*/
|
||||||
Skip.test("mean of normal minus exponential (property)", () => {
|
Skip.test("mean of normal minus exponential (property)", () => {
|
||||||
assert_(
|
assert_(
|
||||||
property2(float_(), floatRange(1e-5, 1e5), (mean, rate) => {
|
property2(float_(), floatRange(1e-5, 1e5), (mean, rate) => {
|
||||||
|
@ -33,12 +41,11 @@ describe("dotSubtract", () => {
|
||||||
)
|
)
|
||||||
let meanResult = E.R2.bind(DistributionOperation.Constructors.mean(~env), dotDifference)
|
let meanResult = E.R2.bind(DistributionOperation.Constructors.mean(~env), dotDifference)
|
||||||
// according to algebra or random variables,
|
// according to algebra or random variables,
|
||||||
let meanAnalytical = mean -. 1.0 /. rate
|
let meanAnalytical =
|
||||||
Js.Console.log3(
|
mean -.
|
||||||
mean,
|
SymbolicDist.Exponential.mean({rate: rate})->E.R2.toExn(
|
||||||
rate,
|
"On trusted input this should never happen",
|
||||||
E.R.fmap(x => abs_float(x -. meanAnalytical) /. abs_float(meanAnalytical), meanResult),
|
)
|
||||||
)
|
|
||||||
switch meanResult {
|
switch meanResult {
|
||||||
| Ok(meanValue) => abs_float(meanValue -. meanAnalytical) /. abs_float(meanValue) < 1e-2 // 1% relative error
|
| Ok(meanValue) => abs_float(meanValue -. meanAnalytical) /. abs_float(meanValue) < 1e-2 // 1% relative error
|
||||||
| Error(err) => err === DistributionTypes.OperationError(DivisionByZeroError)
|
| Error(err) => err === DistributionTypes.OperationError(DivisionByZeroError)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user