Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
58 lines (39 sloc) 2.29 KB
The dirichlet module contains routines for using Beta, Gamma, and
Dirichlet densities. In particular, it implements mixture Dirichlet
priors, which are useful in a variety of parameter estimation tasks.
The Dirichlet PDF is:
\begin{equation}
P(\vec{p}) = \frac{\Gamma{\sum_i \alpha_i}}{\prod_i \Gamma(\alpha_i)} \prod_i p_i^{\alpha_i-1}
\end{equation}
\subsection{The dirichlet API}
The module implements one object, \ccode{ESL\_MIXDCHLET}, which holds
a mixture Dirichlet prior.
The API consists of the following functions:
\vspace{1em}
\begin{tabular}{ll}\hline
\multicolumn{2}{c}{\textbf{mixture Dirichlet priors}}\\
\ccode{esl\_mixdchlet\_Create()} & Allocates a new mixture Dirichlet.\\
\ccode{esl\_mixdchlet\_Destroy()} & Free's a mixture Dirichlet.\\
\ccode{esl\_mixdchlet\_MPParameters()} & Mean posterior probability parameter estimation.\\
\multicolumn{2}{c}{\textbf{Dirichlet, Gamma density routines}}\\
\ccode{esl\_dirichlet\_LogProbData()} & $\log P( \mbox{count vector} \mid \mbox{mixture Dirichlet}$.\\
\ccode{esl\_dirichlet\_LogProbProbs()} & $\log P( \mbox{prob vector} \mid \mbox{mixture Dirichlet}$.\\
\ccode{esl\_dirichlet\_LogGamma()} & $\log \Gamma(x)$.\\
\multicolumn{2}{c}{\textbf{Sampling code}}\\
\ccode{esl\_dirichlet\_\{D,F\}Sample()} & Sample a probability vector from a Dirichlet.\\
\ccode{esl\_dirichlet\_\{D,F\}SampleUniform()} & Sample a probability vector uniformly.\\
\ccode{esl\_dirichlet\_SampleBeta()} & Sample from Beta$(\theta_1, \theta_2$).\\
\multicolumn{2}{c}{\textbf{Input from file}}\\
\ccode{esl\_mixdchlet\_Read()} & Input of a mixture Dirichlet from a file.\\ \hline
\end{tabular}
\subsection{Example of using the dirichlet API}
An example that reads a mixture Dirichlet prior from a file, samples a
probability vector from it, samples a count vector from the
probability vector, then infers which mixture component generated the
data and uses mean posterior estimation to reestimate the probability
vector from the counts:
\input{cexcerpts/dirichlet_example}
\subsection{Accessing information in the ESL\_MIXDCHLET object}
You may need to access the information in the \ccode{ESL\_MIXDCHLET}
object. The data fields inside this structure are:
\input{cexcerpts/dirichlet_mixdchlet}
You can’t perform that action at this time.