コード例 #1
0
        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 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));
        }