在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的另一个站点,我会移动它。
答案 0 :(得分:1)
正如您所指出的那样,the sum of independent Poisson distributions is again a Poisson distribution,其参数等于原始分布参数的总和。
因此,在calculateCumulatedProbability
中,您需要创建一个新的PoissonDistribution
对象,其平均值等于u1
,u2
和u3
均值的总和(所以PoissonDistribution(20+30+40)
在这种情况下)。然后,该对象上的cumulativeProbability
方法将为您提供所需的概率。
您需要在getMean
上使用User
方法,以便您可以为各个用户检索均值。此外,总有3个用户?如果没有,那么让calculateCumulatedProbability
只取两个参数:用户列表和概率计算的值会不会更好?