Math.Net数值:从负二项式采样出错

时间:2015-06-01 08:16:00

标签: c# statistics mathdotnet

我正在使用Math.Net从过度分散的泊松分布中采样值。我正在使用负二项链接执行此操作,如下所述:https://stat.ethz.ch/pipermail/r-help/2002-June/022425.html

我的代码目前看起来像这样:

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和分散参数2进行采样,代码只需“挂起”,即方法保持运行但不返回任何值。我甚至已经通过这种方法来测试输入参数的各种组合(lambda从1到1000,dispersion = 2),并且代码每次都以不同的组合“挂起”。有时它会为lambda = 750的所有组合进行采样,其他时间最多为lambda = 500.只需重新运行控制台应用程序并且不进行代码更改即可。

我在每次运行之前都包含了'IsValidParameterSet'检查,即使参数被认为有效,仍然不会生成样本。为了进一步测试输入参数是否有效,我在第50百分位使用NegativeBinomial.CDF方法测试了相同的参数,并且每次都返回一个值。

NegativeBinomial.Sample方法中是否有错误?如果没有,我该如何解决这个问题?

0 个答案:

没有答案