ood(params1.lambda, p1.eta, p1.omega, sample); auto lh2 = properGeneralizedInverseGaussianLikelihood(lambda, p2.eta, p2.omega, sample); assert(lh0 <= lh1); assert(lh0 <= lh2); assert(lh2 <= lh1);
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 weights = iota(1.0, length + 1.0).array;
auto params1 = generalizedInverseGaussianEstimate!double(sample, weights);
auto params2 = generalizedInverseGaussianFixedLambdaEstimate!double(lambda, sample, weights);
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, weights);
auto lh1 = properGeneralizedInverseGaussianLikelihood(params1.lambda, p1.eta, p1.omega, sample, weights);
auto lh2 = properGeneralizedInverseGaussianLikelihood(lambda, p2.eta, p2.omega, sample, weights);
assert(lh0 <= lh1);
assert(lh0 <= lh2);
assert(lh2 <= lh1);

See Also

atmosphere.params

Meta

Source

See Implementation

Continue to overload GeneralizedHyperbolicPDF.opCall (atmosphere.pdf.GeneralizedHyperbolicPDF.opCall)

GeneralizedHyperbolicPDF.opCall

Undocumented in source. Be warned that the author may not have intended to support it.
class GeneralizedHyperbolicPDF(T)
T
opCall
(
T x
)
if (
isFloatingPoint!T
)

Meta

GeneralizedHyperbolicPDF (atmosphere.pdf.GeneralizedHyperbolicPDF)

GeneralizedHyperbolicPDF

Generalized hyperbolic (generalized inverse Gaussian mixture of normals) PDF

final
class GeneralizedHyperbolicPDF : PDF!T(
T
) if (
isFloatingPoint!T
) {}

Constructors

this
this(T lambda, T alpha, T beta, T delta, T mu)

Members

Functions

opCall
T opCall(T x)
Undocumented in source. Be warned that the author may not have intended to support it.

Examples

auto pdf = new GeneralizedHyperbolicPDF!double(1.1, 1.1, 0.9, 1.1, 1.1);
auto x = pdf(0.1);
assert(x.isNormal);

import scid.calculus : integrate;
auto result = pdf.integrate(-double.infinity, double.infinity);
assert(fabs(result.value - 1) < result.error);

See Also

Meta