package edu.stanford.nlp.stats;
/**
* An interface for classes which are probability distributions over other probability distributions.
* This class could also represent non-conjugate priors, but we thought this name would be more
* representative of the common case.
*
* @author grenager
* @author jrfinkel
*
* @param <T>
* @param <E>
*/
public interface ConjugatePrior<T extends ProbabilityDistribution<E>, E> extends ProbabilityDistribution<T> {
/**
* Marginalizes over all possible likelihood distributions to give the marginal probability of
* the observation.
*
*/
double getPredictiveProbability(E observation);
double getPredictiveLogProbability(E observation);
/**
* Gets the posterior probability of the observation, after conditioning on all of the evidence.
* Marginalizes over all possible likelihood distributions.
*
*/
double getPosteriorPredictiveProbability(Counter<E> evidence, E observation);
double getPosteriorPredictiveLogProbability(Counter<E> evidence, E observation);
/**
* Gets the ConjugatePrior which results from conditioning on all of these evidence.
*
*/
ConjugatePrior<T,E> getPosteriorDistribution(Counter<E> evidence);
}