本文整理汇总了C#中Gamma.GetMeanAndVariance方法的典型用法代码示例。如果您正苦于以下问题:C# Gamma.GetMeanAndVariance方法的具体用法?C# Gamma.GetMeanAndVariance怎么用?C# Gamma.GetMeanAndVariance使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Gamma
的用法示例。
在下文中一共展示了Gamma.GetMeanAndVariance方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CalculateDerivativesTrapezoid
public static Vector CalculateDerivativesTrapezoid(Gamma q)
{
Vector gradElogGamma = Vector.Zero(2);
// Get shape and scale of the distribution
double a = q.Shape;
double b = q.Rate;
double mean, variance;
q.GetMeanAndVariance(out mean, out variance);
double upperBound = 10;
int n = 10000;
double ELogGamma = 0, ELogXLogGamma = 0, ExDigamma = 0;
double inc = upperBound/n;
for (int i = 0; i < n; i++) {
double x = inc * (i+1);
double logp = q.GetLogProb(x);
double p = Math.Exp(logp);
double f = p * MMath.GammaLn(x);
ELogGamma += f;
ELogXLogGamma += Math.Log(x)*f;
ExDigamma += x*MMath.Digamma(x)*p;
}
ELogGamma *= inc;
ELogXLogGamma *= inc;
ExDigamma *= inc;
gradElogGamma[0] = ELogXLogGamma + (Math.Log(b) - MMath.Digamma(a))*ELogGamma;
gradElogGamma[1] = -ExDigamma/b;
return gradElogGamma;
}