Skip to content

Integrating out variables via Laplace approximation (or other methods) #1382

@ElOceanografo

Description

@ElOceanografo

This is an idea/feature request that I've been thinking about. Relates to this conversation on Discourse, and #1340 . See also this paper. How hard would it be to implement an interface for integrating out variables in a Turing model, using for example the Laplace approximation? This is used in TMB to efficiently fit models with mixed effects or other latent variables/fields, and I think it would be a great addition.

I'm picturing being able to do something like this:

@model function latent_model(x, z)
    a ~ SomeDistribution(1, 2) # parameter
    mu = x * a
    y ~ AnotherDistribution(mu) # latent variable
    z ~ YetAnotherDistribution(y) # likelihood
end

mod = latent_model(xdata,  zdata)
mod_marginal = marginalize(mod, LaplaceApprox(:y))
# ...
chn = sample(mod, sampler, nsamples)
opt = optimize(mod_marginal, MLE()) # fit `a` while integrating out `y`

Does this seem in principle desirable/doable? If so I'd be willing to do some work on it, given a couple pointers on where to get started...

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions