/// <summary>Evidence message for EP.</summary> /// <param name="sample">Incoming message from <c>sample</c>.</param> /// <param name="mean">Constant value for <c>mean</c>.</param> /// <param name="to_sample">Outgoing message to <c>sample</c>.</param> /// <returns>Logarithm of the factor's average value across the given argument distributions.</returns> /// <remarks> /// <para>The formula for the result is <c>log(sum_(sample) p(sample) factor(sample,mean))</c>.</para> /// </remarks> public static double LogAverageFactor(Poisson sample, double mean, [Fresh] Poisson to_sample) { return(to_sample.GetLogAverageOf(sample)); }
/// <summary>Evidence message for EP.</summary> /// <param name="sample">Incoming message from <c>sample</c>.</param> /// <param name="mean">Incoming message from <c>mean</c>.</param> /// <param name="to_sample">Previous outgoing message to <c>sample</c>.</param> /// <returns>Logarithm of the factor's contribution the EP model evidence.</returns> /// <remarks> /// <para>The formula for the result is <c>log(sum_(sample,mean) p(sample,mean) factor(sample,mean) / sum_sample p(sample) messageTo(sample))</c>. Adding up these values across all factors and variables gives the log-evidence estimate for EP.</para> /// </remarks> public static double LogEvidenceRatio(Poisson sample, Gamma mean, Poisson to_sample) { return(LogAverageFactor(sample, mean) - to_sample.GetLogAverageOf(sample)); }