计算泊松分布随机变量之和的概率

时间:2013-01-11 08:44:31

标签: java math random

在Java中,我有一组用户,每个用户都有一个已知均值的泊松分布需求:

import org.apache.commons.math3.distribution.PoissonDistribution;

public class User {
  private int mean;
  private PoissonDistribution dist;
  public void setMean(int mean) {
      this.mean = mean;
      this.poissonDistribution = new PoissonDistribution(mean);
  }
}

...
User u1 = new User(); u1.setMean(20);
User u2 = new User(); u2.setMean(30);
User u3 = new User(); u3.setMean(40);

现在我想计算所有User的累积需求低于某个值的概率:

double probabilityBelowX = calculateCumulatedProbability(50, u1, u2, u3); // <- what must this method look like?

我坚持这个问题,如何在Java中解决这个问题。我在数学包中遗漏了什么吗?我知道客户的需求是独立的,所以根据我对泊松分布的了解,我可以简单地加上这些值。但是对于每一个用户需求,我只有cumulativeProbability(int x),但不是一次只有几个?

请指出我正确的方向,也许我正在使用一种完全错误的方法。此外,如果这个问题更适合stackexchange的另一个站点,我会移动它。

1 个答案:

答案 0 :(得分:1)

正如您所指出的那样,the sum of independent Poisson distributions is again a Poisson distribution,其参数等于原始分布参数的总和。

因此,在calculateCumulatedProbability中,您需要创建一个新的PoissonDistribution对象,其平均值等于u1u2u3均值的总和(所以PoissonDistribution(20+30+40)在这种情况下)。然后,该对象上的cumulativeProbability方法将为您提供所需的概率。

您需要在getMean上使用User方法,以便您可以为各个用户检索均值。此外,总有3个用户?如果没有,那么让calculateCumulatedProbability只取两个参数:用户列表和概率计算的值会不会更好?