Matlab code for fitting a Hierarchical Logistic-Normal Distribution
by Jonathan Huang and Tomasz Malisiewicz
Are Dirichlet Distributions too simple for you?
Are you getting tired of the Exponential Family?
... Then the Logistic Normal Distribution might be right up your alley!
Top Row: Dirichlet Distributions, Bottom Row: Logistic-Normal Distributions
The generative process for the Hierarchical Logistic-Normal Distribution can be summarized as follows:
- Draw V from a Multivariate Gaussian, N(μ,Σ).
- Exponentiate V.
- Project to the Simplex to get a probability vector P (At this point we have a Logistic-Normal distribution).
- Draw N samples from Multinomial(P).
Download MATLAB Code
Algorithm Details (pdf)
List of included .m Files
- hlnscript.m - example script which illustrates code usage
- hlnEM.m - EM scheme for fitting an HLN distribution
- conditionalMode.m - hlnEM subroutine
- plotlogisticnormal.m - Plot samples from a Logistic Normal on a 2-Simplex
- plotLNlevelsets.m - Plot level sets of a Logistic Normal pdf on a 2-Simplex
- minimize.m - Carl Rasmussen's Conjugate Gradient code
- genHLNsamples.m - Generate samples from a Hierarchical Logistic-Normal Distribution
- genSamps.m - Generate samples from a Logistic-Normal distribution
The output of hlnscript should look something like the following figure.
- First make sure you have the Matlab Statistics Toolbox.
- Unzip hlnfit.zip.
- Open Matlab and run hlnscript
Click to go Back