public ConditionalGaussianDistributionParams CreateDistributionGaussianOrNull( Leaf leaf, OptimizationParameterList gaussianParameters, Converter <Leaf, SufficientStatistics> predictorLeafToBoolStats) { if (leaf.Length == 0) { Debug.WriteLine("Branch length of zero observed"); } // TODO: make continuous BooleanStatistics hasPredictor = (BooleanStatistics)predictorLeafToBoolStats(leaf); if (hasPredictor.IsMissing()) { ConditionalGaussianDistributionParams.GetNullInstance(); //return null; // Predictor data is missing, so skip this leaf. } ConditionalGaussianDistributionParams plainConditionalDistribution = GetPlainConditionalGaussianDistribution(leaf, gaussianParameters); if (!hasPredictor) { return(plainConditionalDistribution); } else { double delta = GetOffset(gaussianParameters); ConditionalGaussianDistributionParams offsetConditionalDistribution = plainConditionalDistribution.AddOffsetToMean(delta); return(offsetConditionalDistribution); } //return CreateDistributionGaussianOrNull(plainConditionalDistribution, hasPredictor, delta); }
public override void ReflectClassInDictionaries(DiscreteStatistics discreteStatistics, Leaf leaf, ref Dictionary <string, BooleanStatistics> predictorMapToCreate, ref Dictionary <string, BooleanStatistics> targetMapToCreate) { BooleanStatistics leafHasTarget = (int)discreteStatistics == (int)DistributionClass.True; if (!targetMapToCreate.ContainsKey(leaf.CaseName)) { targetMapToCreate.Add(leaf.CaseName, leafHasTarget); } else { targetMapToCreate[leaf.CaseName] = leafHasTarget; } }
public static Converter <Leaf, SufficientStatistics> DictionaryToLeafMap(Dictionary <string, BooleanStatistics> caseIdToNonMissingValue) { return(delegate(Leaf leaf) { string name = leaf.CaseName; if (name == null || !caseIdToNonMissingValue.ContainsKey(name)) { return BooleanStatistics.GetMissingInstance(); } else { return (BooleanStatistics)caseIdToNonMissingValue[name]; } }); }
public static SufficientStatistics Parse(string val) { SufficientStatistics result; if ( MissingStatistics.Parse(val, out result) || GaussianStatistics.Parse(val, out result) || BooleanStatistics.Parse(val, out result) || DiscreteStatistics.Parse(val, out result) || ContinuousStatistics.Parse(val, out result)) { return(result); } throw new ArgumentException(string.Format("Unable to parse {0} into an instance of ISufficientStatistics", val)); }
//public static bool operator !=(BooleanStatistics stats1, BooleanStatistics stats2) //{ // return !(stats1 == stats2); //} //public static bool operator ==(BooleanStatistics boolStats1, BooleanStatistics boolStats2) //{ // DiscreteStatistics d1 = boolStats1 as DiscreteStatistics; // DiscreteStatistics d2 = boolStats2 as DiscreteStatistics; // return d1 == d2; //} new internal static bool Parse(string val, out SufficientStatistics result) { result = null; if (val.Equals("true", StringComparison.CurrentCultureIgnoreCase) || val == "1") { result = BooleanStatistics.GetInstance(true); } else if (val.Equals("false", StringComparison.CurrentCultureIgnoreCase) || val == "0") { result = BooleanStatistics.GetInstance(false); } else if (val.Equals("null", StringComparison.CurrentCultureIgnoreCase) || val == "-1") { result = BooleanStatistics.GetMissingInstance(); } return(result != null); }
public ConditionalGaussianDistribution CreateDistributionGaussianOrNull( Leaf leaf, OptimizationParameterList gaussianParameters, Converter <Leaf, SufficientStatistics> predictorLeafToBoolStats) { if (leaf.Length == 0) { Debug.WriteLine("Branch length of zero observed"); } ConditionalGaussianDistribution plainConditionalDistribution = GetPlainConditionalGaussianDistribution(leaf, gaussianParameters); BooleanStatistics hasPredictor = (BooleanStatistics)predictorLeafToBoolStats(leaf); if (hasPredictor.IsMissing()) { return(null); // Predictor data is missing, so skip this leaf. } double delta = GetOffset(gaussianParameters); return(LabelledLeafDistributionGaussian.CreateDistributionGaussianOrNull(plainConditionalDistribution, hasPredictor, delta)); }