C# Math.Net Numerics:从负二项式中采样时出错
我正在使用Math.Net从过度分散的泊松分布中采样值。我使用负二项式链接进行此操作,如下所述: 我的代码当前如下所示:C# Math.Net Numerics:从负二项式中采样时出错,c#,statistics,math.net,C#,Statistics,Math.net,我正在使用Math.Net从过度分散的泊松分布中采样值。我使用负二项式链接进行此操作,如下所述: 我的代码当前如下所示: private static double ODPoisson(double lambda, double dispersion) { double p = 1 / (dispersion - 1); double r = lambda * p; if (dispersion == 1) {
private static double ODPoisson(double lambda, double dispersion)
{
double p = 1 / (dispersion - 1);
double r = lambda * p;
if (dispersion == 1)
{
return Poisson.Sample(lambda);
}
else
{
return NegativeBinomial.Sample(r, p);
}
}
我发现,这对lambda的低值很有效。只要我尝试使用1000的lambda和2的离散参数进行采样,代码就会简单地“挂起”,即方法继续运行,但没有返回值。我甚至循环使用这个方法来测试输入参数的各种组合(lambda从1到1000,离散度=2),每次代码都以不同的组合“挂起”。有时,它将对最大lambda=750的所有组合进行采样,其他情况下,最大lambda=500。这只需重新运行console应用程序,不进行代码更改即可实现
在每次运行之前,我都会包含“IsValidParameterSet”检查,即使参数被认为是有效的,仍然不会生成示例。为了进一步测试输入参数是否有效,我在第50百分位使用NegativeBinomial.CDF方法测试了相同的参数,每次都返回一个值
负指数抽样法有错误吗?如果没有,如何解决此问题 听起来像个bug-你能在打开bug报告吗?谢谢@克里斯托弗吕格就行了!