/// <summary> /// VMP message to 'mean' /// </summary> /// <param name="sample">Constant value for 'sample'.</param> /// <param name="precision">Incoming message from 'precision'. Must be a proper distribution. If uniform, the result will be uniform.</param> /// <returns>The outgoing VMP message to the 'mean' argument</returns> /// <remarks><para> /// The outgoing message is the exponential of the average log-factor value, where the average is over all arguments except 'mean'. /// The formula is <c>exp(sum_(precision) p(precision) log(factor(sample,mean,precision)))</c>. /// </para></remarks> /// <exception cref="ImproperMessageException"><paramref name="precision"/> is not a proper distribution</exception> public static SparseGaussianList MeanAverageLogarithm(IList<double> sample, [Proper]SparseGammaList precision, SparseGaussianList result) { result.SetToFunction(sample, precision, (s, p) => GaussianOp.MeanAverageLogarithm(s, p)); return result; }
/// <summary> /// EP message to 'sample' /// </summary> /// <param name="mean">Incoming message from 'mean'. Must be a proper distribution. If uniform, the result will be uniform.</param> /// <param name="precision">Constant value for 'precision'.</param> /// <returns>The outgoing EP message to the 'sample' argument</returns> /// <remarks><para> /// The outgoing message is a distribution matching the moments of 'sample' as the random arguments are varied. /// The formula is <c>proj[p(sample) sum_(mean) p(mean) factor(sample,mean,precision)]/p(sample)</c>. /// </para></remarks> /// <exception cref="ImproperMessageException"><paramref name="mean"/> is not a proper distribution</exception> public static SparseGaussianList SampleAverageConditional([SkipIfUniform] SparseGaussianList mean, IList<double> precision, SparseGaussianList result) { result.SetToFunction(mean, precision, (m, p) => GaussianOp.SampleAverageConditional(m, p)); return result; }
/// <summary> /// EP message to 'mean' /// </summary> /// <param name="sample">Constant value for 'sample'.</param> /// <param name="precision">Constant value for 'precision'.</param> /// <returns>The outgoing EP message to the 'mean' argument</returns> /// <remarks><para> /// The outgoing message is the factor viewed as a function of 'mean' conditioned on the given values. /// </para></remarks> public static SparseGaussianList MeanAverageConditional(IList<double> sample, IList<double> precision, SparseGaussianList result) { result.SetToFunction(sample, precision, (s, p) => GaussianOp.MeanAverageConditional(s, p)); return result; }
/// <summary> /// VMP message to 'sample' /// </summary> /// <param name="mean">Constant value for 'mean'.</param> /// <param name="precision">Incoming message from 'precision'. Must be a proper distribution. If uniform, the result will be uniform.</param> /// <returns>The outgoing VMP message to the 'sample' argument</returns> /// <remarks><para> /// The outgoing message is the exponential of the average log-factor value, where the average is over all arguments except 'sample'. /// The formula is <c>exp(sum_(precision) p(precision) log(factor(sample,mean,precision)))</c>. /// </para></remarks> /// <exception cref="ImproperMessageException"><paramref name="precision"/> is not a proper distribution</exception> public static SparseGaussianList SampleAverageLogarithm(IList<double> mean, [Proper] SparseGammaList precision, SparseGaussianList result) { result.SetToFunction(mean, precision, (m, p) => GaussianOp.SampleAverageLogarithm(m, p)); return result; }
/// <summary> /// EP message to 'sample' /// </summary> /// <param name="sample">Incoming message from 'sample'.</param> /// <param name="mean">Constant value for 'mean'.</param> /// <param name="precision">Incoming message from 'precision'. Must be a proper distribution. If uniform, the result will be uniform.</param> /// <returns>The outgoing EP message to the 'sample' argument</returns> /// <remarks><para> /// The outgoing message is a distribution matching the moments of 'sample' as the random arguments are varied. /// The formula is <c>proj[p(sample) sum_(precision) p(precision) factor(sample,mean,precision)]/p(sample)</c>. /// </para></remarks> /// <exception cref="ImproperMessageException"><paramref name="precision"/> is not a proper distribution</exception> public static SparseGaussianList SampleAverageConditional(SparseGaussianList sample, IList<double> mean, [SkipIfUniform] SparseGammaList precision, SparseGaussianList result) { result.SetToFunction<Gaussian, double, Gamma>(sample, mean, precision, (s, m, p) => GaussianOp.SampleAverageConditional(s, m, p)); return result; }
/// <summary> /// EP message to 'mean' /// </summary> /// <param name="sample">Constant value for 'sample'.</param> /// <param name="mean">Incoming message from 'mean'. Must be a proper distribution. If uniform, the result will be uniform.</param> /// <param name="precision">Incoming message from 'precision'. Must be a proper distribution. If uniform, the result will be uniform.</param> /// <returns>The outgoing EP message to the 'mean' argument</returns> /// <remarks><para> /// The outgoing message is a distribution matching the moments of 'mean' as the random arguments are varied. /// The formula is <c>proj[p(mean) sum_(precision) p(precision) factor(sample,mean,precision)]/p(mean)</c>. /// </para></remarks> /// <exception cref="ImproperMessageException"><paramref name="mean"/> is not a proper distribution</exception> /// <exception cref="ImproperMessageException"><paramref name="precision"/> is not a proper distribution</exception> public static SparseGaussianList MeanAverageConditional(IList<double> sample, [SkipIfUniform] SparseGaussianList mean, [SkipIfUniform] SparseGammaList precision, SparseGammaList to_precision, SparseGaussianList result) { result.SetToFunction(sample, mean, precision, to_precision, (s, m, p, tp) => GaussianOp.MeanAverageConditional(s, m, p, tp)); return result; }
/// <include file='FactorDocs.xml' path='factor_docs/message_op_class[@name="SparseGaussianListOp"]/message_doc[@name="MeanAverageConditional(ISparseList{double}, SparseGaussianList, SparseGammaList, SparseGammaList, SparseGaussianList)"]/*'/> public static SparseGaussianList MeanAverageConditional( ISparseList <double> sample, [SkipIfUniform] SparseGaussianList mean, [SkipIfUniform] SparseGammaList precision, SparseGammaList to_precision, SparseGaussianList result) { result.SetToFunction(sample, mean, precision, to_precision, (s, m, p, tp) => GaussianOp.MeanAverageConditional(s, m, p, tp)); return(result); }
/// <include file='FactorDocs.xml' path='factor_docs/message_op_class[@name="SparseGaussianListOp"]/message_doc[@name="MeanAverageConditional(SparseGaussianList, ISparseList{double}, SparseGaussianList)"]/*'/> public static SparseGaussianList MeanAverageConditional([SkipIfUniform] SparseGaussianList sample, ISparseList <double> precision, SparseGaussianList result) { result.SetToFunction(sample, precision, (s, p) => GaussianOp.MeanAverageConditional(s, p)); return(result); }
/// <include file='FactorDocs.xml' path='factor_docs/message_op_class[@name="SparseGaussianListOp"]/message_doc[@name="SampleAverageConditional(SparseGaussianList, ISparseList{double}, SparseGaussianList)"]/*'/> public static SparseGaussianList SampleAverageConditional([SkipIfUniform] SparseGaussianList mean, ISparseList <double> precision, SparseGaussianList result) { result.SetToFunction(mean, precision, (m, p) => GaussianOp.SampleAverageConditional(m, p)); return(result); }
/// <include file='FactorDocs.xml' path='factor_docs/message_op_class[@name="SparseGaussianListOp"]/message_doc[@name="MeanAverageLogarithm(ISparseList{double}, SparseGammaList, SparseGaussianList)"]/*'/> public static SparseGaussianList MeanAverageLogarithm(ISparseList <double> sample, [Proper] SparseGammaList precision, SparseGaussianList result) { result.SetToFunction(sample, precision, (s, p) => GaussianOp.MeanAverageLogarithm(s, p)); return(result); }
/// <include file='FactorDocs.xml' path='factor_docs/message_op_class[@name="SparseGaussianListOp"]/message_doc[@name="SampleAverageLogarithm(ISparseList{double}, SparseGammaList, SparseGaussianList)"]/*'/> public static SparseGaussianList SampleAverageLogarithm(ISparseList <double> mean, [Proper] SparseGammaList precision, SparseGaussianList result) { result.SetToFunction(mean, precision, (m, p) => GaussianOp.SampleAverageLogarithm(m, p)); return(result); }