/// <summary> /// VMP message to 'probsTrue' /// </summary> /// <param name="sample">Constant value for 'sample'.</param> /// <returns>The outgoing VMP message to the 'probsTrue' argument</returns> /// <remarks><para> /// The outgoing message is the factor viewed as a function of 'probsTrue' conditioned on the given values. /// </para></remarks> public static SparseBetaList ProbsTrueAverageLogarithm(IList <bool> sample) { int count = sample.Count; var trueCounts = SparseVector.Constant(count, 1.0); var falseCounts = SparseVector.Constant(count, 2.0); bool[] sampleAsArray = (bool[])sample; for (int i = 0; i < sampleAsArray.Length; i++) { if (!sampleAsArray[i]) { continue; } trueCounts[i] = 2; falseCounts[i] = 1; } return(new SparseBetaList(trueCounts, falseCounts)); }