protected override ConditionalGaussianDistribution GetPlainConditionalGaussianDistribution(BranchOrLeaf branchOrLeaf, OptimizationParameterList gaussianParameters) { double alphaTimesVariance = gaussianParameters["AlphaVariance"].Value; ConditionalGaussianDistribution plainConditionalDistribution = ConditionalGaussianDistribution.GetInstance(); // 0 (const part of mean) ax + b, Mean := b plainConditionalDistribution.Mean = 0; // 1 (ax + b = x), linearCoefficent := a. plainConditionalDistribution.LinearCoefficent = 1; plainConditionalDistribution.Variance = alphaTimesVariance * branchOrLeaf.Length; return(plainConditionalDistribution); }
protected override ConditionalGaussianDistribution GetPlainConditionalGaussianDistribution(BranchOrLeaf branchOrLeaf, OptimizationParameterList gaussianParameters) { double alphaTimesVariance = gaussianParameters["AlphaVariance"].Value; double mean = gaussianParameters["Mean"].Value; double alpha = gaussianParameters["Alpha"].Value; ConditionalGaussianDistribution plainConditionalDistribution = ConditionalGaussianDistribution.GetInstance(); double root1MinusAlphaTimesBranchLength = Math.Sqrt(1 - alpha * branchOrLeaf.Length); // ax + b, Mean := b plainConditionalDistribution.Mean = mean * (1.0 - root1MinusAlphaTimesBranchLength); // ax + b = x, LinearCoefficent := a plainConditionalDistribution.LinearCoefficent = root1MinusAlphaTimesBranchLength; plainConditionalDistribution.Variance = alphaTimesVariance * branchOrLeaf.Length; return(plainConditionalDistribution); }