lass="storage-class">in T[] weights,
in T relTolerance = sqrt(T.epsilon)
,
in T absTolerance = sqrt(T.epsilon)
)
if (
isFloatingPoint!T
)
  • Tuple!(T, "lambda", T, "chi", T, "psi") generalizedInverseGaussianEstimate(GeneralizedInverseGaussinStatistic!T stat, T relTolerance, T absTolerance)
  • Parameters

    sample T[]

    obeservation.

    weights T[]

    sample weights.

    relTolerance T

    Relative tolerance.

    absTolerance T

    Absolute tolerance.

    Preconditions: ax and bx shall be finite reals.
    relTolerance shall be normal positive real.
    absTolerance shall be normal positive real no less then T.epsilon*2.

    References: "Algorithms for Minimization without Derivatives", Richard Brent, Prentice-Hall, Inc. (1973)

    Examples

    import std.range;
    import std.random;
    import atmosphere.random;
    import atmosphere.likelihood;
    import atmosphere.params;
    auto length = 1000;
    auto lambda = -2.0, chi = 1.4, psi = 2.3;
    auto rng = Random(1234);
    auto sample = new GeneralizedInverseGaussianRNG!double(rng, lambda, chi, psi).take(length).array;
    auto params1 = generalizedInverseGaussianEstimate(sample);
    auto params2 = generalizedInverseGaussianFixedLambdaEstimate!double(lambda, sample);
    auto p0 = GIGChiPsi!double(chi, psi);
    auto p1 = GIGChiPsi!double(params1.chi, params1.psi);
    auto p2 = GIGChiPsi!double(params2.chi, params2.psi);
    auto lh0 = properGeneralizedInverseGaussianLikelihood(lambda, p0.eta, p0.omega, sample);
    auto lh1 = properGeneralizedInverseGaussianLikelih