inference

import "github.com/umbralcalc/stochadex/pkg/inference"

Package inference provides statistical inference and likelihood modeling capabilities for stochadex simulations. It includes probability distributions, likelihood functions, gradient computation, and Bayesian inference utilities for parameter estimation and model validation.

Key Features:

Mathematical Background: The package implements various probability distributions and their associated likelihood functions for use in Bayesian inference. Key distributions include:

Usage Patterns:

- Statistical hypothesis testing and model comparison

- Statistical hypothesis testing and model comparison

- Statistical hypothesis testing and model comparison

- Statistical hypothesis testing and model comparison

Index

func CovarianceMatrixFromParams

func CovarianceMatrixFromParams(params *simulator.Params) *mat.SymDense

CovarianceMatrixFromParams retrieves the covariance matrix from params.

func CovarianceMatrixFromParamsOrPartition

func CovarianceMatrixFromParamsOrPartition(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory) *mat.SymDense

CovarianceMatrixFromParamsOrPartition retrieves the covariance matrix from params or indexed partition value, depending on which is set.

func CovarianceMatrixFromPartition

func CovarianceMatrixFromPartition(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory) *mat.SymDense

CovarianceMatrixFromPartition retrieves the covariance matrix from an indexed partition value.

func CovarianceMatrixVarianceFromParams

func CovarianceMatrixVarianceFromParams(params *simulator.Params) *mat.SymDense

CovarianceMatrixVarianceFromParams retrieves the covariance matrix from variance params.

func CovarianceMatrixVarianceFromPartition

func CovarianceMatrixVarianceFromPartition(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory) *mat.SymDense

CovarianceMatrixVarianceFromPartition retrieves the covariance matrix from an indexed partition value for the variance.

func MeanFromParams

func MeanFromParams(params *simulator.Params) *mat.VecDense

MeanFromParams retrieves the mean from params.

func MeanFromParamsOrPartition

func MeanFromParamsOrPartition(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory) *mat.VecDense

MeanFromParamsOrPartition retrieves the mean from params or indexed partition value, depending on which is set.

func MeanFromPartition

func MeanFromPartition(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory) *mat.VecDense

MeanFromPartition retrieves the mean from an indexed partition value.

func MeanGradientFunc

func MeanGradientFunc(params *simulator.Params, likeMeanGrad []float64) []float64

MeanGradientFunc computes the gradient with respect to the mean directly.

func MeanTransform

func MeanTransform(params *simulator.Params, values mat.Vector) mat.Vector

MeanTransform returns the values needed to compute the mean.

func VarianceFromParams

func VarianceFromParams(params *simulator.Params) *mat.VecDense

VarianceFromParams retrieves the variance from params.

func VarianceFromParamsOrPartition

func VarianceFromParamsOrPartition(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory) *mat.VecDense

VarianceFromParamsOrPartition retrieves the variance from params or indexed partition value, depending on which is set.

func VarianceFromPartition

func VarianceFromPartition(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory) *mat.VecDense

VarianceFromPartition retrieves the variance from from an indexed partition value.

func VarianceTransform

func VarianceTransform(params *simulator.Params, values mat.Vector) mat.Vector

VarianceTransform returns the values needed to compute the variance.

type BetaLikelihoodDistribution

BetaLikelihoodDistribution implements a Beta distribution likelihood model for bounded continuous data analysis and parameter estimation.

The Beta distribution is particularly useful for modeling data that is bounded between 0 and 1, such as proportions, probabilities, rates, and normalized measurements. It provides flexible shape modeling through its two shape parameters α (alpha) and β (beta).

Mathematical Background: The Beta distribution Beta(α, β) has probability density function:

f(x | α, β) = x^(α-1) * (1-x)^(β-1) / B(α, β)

where B(α, β) is the Beta function, and x ∈ [0, 1].

Key Properties:

Applications:

Parameter Configuration: The distribution can be configured in two ways:

  1. Direct parameters: Provide “alpha” and “beta” parameters directly
  2. Mean-variance: Provide “mean” and “variance” parameters for automatic conversion

Example:

dist := &BetaLikelihoodDistribution{}
dist.SetSeed(0, settings)
// Configure with mean=0.3, variance=0.05
dist.SetParams(params, partitionIndex, stateHistories, timestepsHistory)

// Evaluate likelihood of observed proportions
logLike := dist.EvaluateLogLike([]float64{0.25, 0.35, 0.28})

Performance:

type BetaLikelihoodDistribution struct {
    Src rand.Source
    // contains filtered or unexported fields
}

func (*BetaLikelihoodDistribution) EvaluateLogLike

func (b *BetaLikelihoodDistribution) EvaluateLogLike(data []float64) float64

func (*BetaLikelihoodDistribution) EvaluateLogLikeMeanGrad

func (b *BetaLikelihoodDistribution) EvaluateLogLikeMeanGrad(data []float64) []float64

func (*BetaLikelihoodDistribution) GenerateNewSamples

func (b *BetaLikelihoodDistribution) GenerateNewSamples() []float64

func (*BetaLikelihoodDistribution) SetParams

func (b *BetaLikelihoodDistribution) SetParams(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory, timestepsHistory *simulator.CumulativeTimestepsHistory)

func (*BetaLikelihoodDistribution) SetSeed

func (b *BetaLikelihoodDistribution) SetSeed(partitionIndex int, settings *simulator.Settings)

type DataComparisonGradientIteration

DataComparisonGradientIteration allows for any log-likelihood gradient to be used in computing the overall comparison distribution gradient.

type DataComparisonGradientIteration struct {
    Likelihood   LikelihoodDistributionWithGradient
    GradientFunc func(
        params *simulator.Params,
        likeMeanGrad []float64,
    ) []float64
    Batch *simulator.StateHistory
}

func (*DataComparisonGradientIteration) Configure

func (d *DataComparisonGradientIteration) Configure(partitionIndex int, settings *simulator.Settings)

func (*DataComparisonGradientIteration) Iterate

func (d *DataComparisonGradientIteration) Iterate(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory, timestepsHistory *simulator.CumulativeTimestepsHistory) []float64

func (*DataComparisonGradientIteration) UpdateMemory

func (d *DataComparisonGradientIteration) UpdateMemory(params *simulator.Params, update general.StateMemoryUpdate)

type DataComparisonIteration

DataComparisonIteration allows for any log-likelihood to be used as a comparison distribution between data values, a mean vector and covariance matrix.

type DataComparisonIteration struct {
    Likelihood LikelihoodDistribution
    // contains filtered or unexported fields
}

func (*DataComparisonIteration) Configure

func (d *DataComparisonIteration) Configure(partitionIndex int, settings *simulator.Settings)

func (*DataComparisonIteration) Iterate

func (d *DataComparisonIteration) Iterate(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory, timestepsHistory *simulator.CumulativeTimestepsHistory) []float64

type DataGenerationIteration

DataGenerationIteration allows for any likelihood to be used as a data generation distribution based on a mean and covariance matrix.

type DataGenerationIteration struct {
    Likelihood LikelihoodDistribution
    // contains filtered or unexported fields
}

func (*DataGenerationIteration) Configure

func (d *DataGenerationIteration) Configure(partitionIndex int, settings *simulator.Settings)

func (*DataGenerationIteration) Iterate

func (d *DataGenerationIteration) Iterate(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory, timestepsHistory *simulator.CumulativeTimestepsHistory) []float64

type GammaLikelihoodDistribution

GammaLikelihoodDistribution assumes the real data are well described by a gamma distribution, given the input mean and variance.

type GammaLikelihoodDistribution struct {
    Src rand.Source
    // contains filtered or unexported fields
}

func (*GammaLikelihoodDistribution) EvaluateLogLike

func (g *GammaLikelihoodDistribution) EvaluateLogLike(data []float64) float64

func (*GammaLikelihoodDistribution) EvaluateLogLikeMeanGrad

func (g *GammaLikelihoodDistribution) EvaluateLogLikeMeanGrad(data []float64) []float64

func (*GammaLikelihoodDistribution) GenerateNewSamples

func (g *GammaLikelihoodDistribution) GenerateNewSamples() []float64

func (*GammaLikelihoodDistribution) SetParams

func (g *GammaLikelihoodDistribution) SetParams(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory, timestepsHistory *simulator.CumulativeTimestepsHistory)

func (*GammaLikelihoodDistribution) SetSeed

func (g *GammaLikelihoodDistribution) SetSeed(partitionIndex int, settings *simulator.Settings)

type LikelihoodDistribution

LikelihoodDistribution defines a likelihood model over observed data for statistical inference and parameter estimation.

This interface represents a probability distribution that can evaluate the likelihood of observed data given parameters and generate new samples from the distribution. It serves as the foundation for Bayesian inference, parameter estimation, and model validation in stochadex simulations.

Mathematical Concept: A likelihood distribution represents the probability model p(data | parameters), where the likelihood function measures how well the model explains observed data given specific parameter values. This is fundamental to:

Interface Methods:

Implementation Requirements:

Example Usage:

dist := &BetaLikelihoodDistribution{}
dist.SetSeed(0, settings)
dist.SetParams(params, partitionIndex, stateHistories, timestepsHistory)

// Evaluate likelihood of observed data
logLike := dist.EvaluateLogLike(observedData)

// Generate new samples for validation
newSamples := dist.GenerateNewSamples()

Related Types:

type LikelihoodDistribution interface {
    SetSeed(partitionIndex int, settings *simulator.Settings)
    SetParams(
        params *simulator.Params,
        partitionIndex int,
        stateHistories []*simulator.StateHistory,
        timestepsHistory *simulator.CumulativeTimestepsHistory,
    )
    EvaluateLogLike(data []float64) float64
    GenerateNewSamples() []float64
}

type LikelihoodDistributionWithGradient

LikelihoodDistributionWithGradient extends LikelihoodDistribution with a mean gradient for optimisation.

type LikelihoodDistributionWithGradient interface {
    LikelihoodDistribution
    EvaluateLogLikeMeanGrad(data []float64) []float64
}

type NegativeBinomialLikelihoodDistribution

NegativeBinomialLikelihoodDistribution assumes the real data are well described by a negative binomial distribution, given the input mean and variance.

type NegativeBinomialLikelihoodDistribution struct {
    Src rand.Source
    // contains filtered or unexported fields
}

func (*NegativeBinomialLikelihoodDistribution) EvaluateLogLike

func (n *NegativeBinomialLikelihoodDistribution) EvaluateLogLike(data []float64) float64

func (*NegativeBinomialLikelihoodDistribution) EvaluateLogLikeMeanGrad

func (n *NegativeBinomialLikelihoodDistribution) EvaluateLogLikeMeanGrad(data []float64) []float64

func (*NegativeBinomialLikelihoodDistribution) GenerateNewSamples

func (n *NegativeBinomialLikelihoodDistribution) GenerateNewSamples() []float64

func (*NegativeBinomialLikelihoodDistribution) SetParams

func (n *NegativeBinomialLikelihoodDistribution) SetParams(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory, timestepsHistory *simulator.CumulativeTimestepsHistory)

func (*NegativeBinomialLikelihoodDistribution) SetSeed

func (n *NegativeBinomialLikelihoodDistribution) SetSeed(partitionIndex int, settings *simulator.Settings)

type NormalLikelihoodDistribution

NormalLikelihoodDistribution models data with a multivariate normal.

Usage hints:

type NormalLikelihoodDistribution struct {
    Src rand.Source
    // contains filtered or unexported fields
}

func (*NormalLikelihoodDistribution) EvaluateLogLike

func (n *NormalLikelihoodDistribution) EvaluateLogLike(data []float64) float64

func (*NormalLikelihoodDistribution) EvaluateLogLikeMeanGrad

func (n *NormalLikelihoodDistribution) EvaluateLogLikeMeanGrad(data []float64) []float64

func (*NormalLikelihoodDistribution) GenerateNewSamples

func (n *NormalLikelihoodDistribution) GenerateNewSamples() []float64

func (*NormalLikelihoodDistribution) SetParams

func (n *NormalLikelihoodDistribution) SetParams(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory, timestepsHistory *simulator.CumulativeTimestepsHistory)

func (*NormalLikelihoodDistribution) SetSeed

func (n *NormalLikelihoodDistribution) SetSeed(partitionIndex int, settings *simulator.Settings)

type PoissonLikelihoodDistribution

PoissonLikelihoodDistribution models count data with a Poisson distribution.

Usage hints:

type PoissonLikelihoodDistribution struct {
    Src rand.Source
    // contains filtered or unexported fields
}

func (*PoissonLikelihoodDistribution) EvaluateLogLike

func (p *PoissonLikelihoodDistribution) EvaluateLogLike(data []float64) float64

func (*PoissonLikelihoodDistribution) EvaluateLogLikeMeanGrad

func (p *PoissonLikelihoodDistribution) EvaluateLogLikeMeanGrad(data []float64) []float64

func (*PoissonLikelihoodDistribution) GenerateNewSamples

func (p *PoissonLikelihoodDistribution) GenerateNewSamples() []float64

func (*PoissonLikelihoodDistribution) SetParams

func (p *PoissonLikelihoodDistribution) SetParams(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory, timestepsHistory *simulator.CumulativeTimestepsHistory)

func (*PoissonLikelihoodDistribution) SetSeed

func (p *PoissonLikelihoodDistribution) SetSeed(partitionIndex int, settings *simulator.Settings)

type PosteriorCovarianceIteration

PosteriorCovarianceIteration updates an estimate of the covariance matrix of the posterior distribution over params using log-likelihood and param values given in the state history of other partitions, and a mean vector.

type PosteriorCovarianceIteration struct {
}

func (*PosteriorCovarianceIteration) Configure

func (p *PosteriorCovarianceIteration) Configure(partitionIndex int, settings *simulator.Settings)

func (*PosteriorCovarianceIteration) Iterate

func (p *PosteriorCovarianceIteration) Iterate(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory, timestepsHistory *simulator.CumulativeTimestepsHistory) []float64

type PosteriorLogNormalisationIteration

PosteriorLogNormalisationIteration updates the cumulative normalisation of the posterior distribution over params using log-likelihood values given in the state history of other partitions as well as a specified past discounting factor.

type PosteriorLogNormalisationIteration struct {
}

func (*PosteriorLogNormalisationIteration) Configure

func (p *PosteriorLogNormalisationIteration) Configure(partitionIndex int, settings *simulator.Settings)

func (*PosteriorLogNormalisationIteration) Iterate

func (p *PosteriorLogNormalisationIteration) Iterate(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory, timestepsHistory *simulator.CumulativeTimestepsHistory) []float64

type PosteriorMeanIteration

PosteriorMeanIteration updates an estimate of the mean of the posterior distribution over params using log-likelihood and param values given in the state history of other partitions.

type PosteriorMeanIteration struct {
    Transform func(
        params *simulator.Params,
        values mat.Vector,
    ) mat.Vector
}

func (*PosteriorMeanIteration) Configure

func (p *PosteriorMeanIteration) Configure(partitionIndex int, settings *simulator.Settings)

func (*PosteriorMeanIteration) Iterate

func (p *PosteriorMeanIteration) Iterate(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory, timestepsHistory *simulator.CumulativeTimestepsHistory) []float64

type TLikelihoodDistribution

TLikelihoodDistribution assumes the real data are well described by a Student’s t-distribution, given the input degrees of freedom, mean and covariance matrix.

type TLikelihoodDistribution struct {
    Src rand.Source
    // contains filtered or unexported fields
}

func (*TLikelihoodDistribution) EvaluateLogLike

func (t *TLikelihoodDistribution) EvaluateLogLike(data []float64) float64

func (*TLikelihoodDistribution) EvaluateLogLikeMeanGrad

func (t *TLikelihoodDistribution) EvaluateLogLikeMeanGrad(data []float64) []float64

func (*TLikelihoodDistribution) GenerateNewSamples

func (t *TLikelihoodDistribution) GenerateNewSamples() []float64

func (*TLikelihoodDistribution) SetParams

func (t *TLikelihoodDistribution) SetParams(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory, timestepsHistory *simulator.CumulativeTimestepsHistory)

func (*TLikelihoodDistribution) SetSeed

func (t *TLikelihoodDistribution) SetSeed(partitionIndex int, settings *simulator.Settings)

type WishartLikelihoodDistribution

WishartLikelihoodDistribution assumes the real data are well described by a Wishart distribution, given the input degrees of freedom and scale matrix.

type WishartLikelihoodDistribution struct {
    Src rand.Source
    // contains filtered or unexported fields
}

func (*WishartLikelihoodDistribution) EvaluateLogLike

func (w *WishartLikelihoodDistribution) EvaluateLogLike(data []float64) float64

func (*WishartLikelihoodDistribution) EvaluateLogLikeMeanGrad

func (w *WishartLikelihoodDistribution) EvaluateLogLikeMeanGrad(data []float64) []float64

func (*WishartLikelihoodDistribution) GenerateNewSamples

func (w *WishartLikelihoodDistribution) GenerateNewSamples() []float64

func (*WishartLikelihoodDistribution) SetParams

func (w *WishartLikelihoodDistribution) SetParams(params *simulator.Params, partitionIndex int, stateHistories []*simulator.StateHistory, timestepsHistory *simulator.CumulativeTimestepsHistory)

func (*WishartLikelihoodDistribution) SetSeed

func (w *WishartLikelihoodDistribution) SetSeed(partitionIndex int, settings *simulator.Settings)

Generated by gomarkdoc