k 个零的概率给出 n 个泊松随机变量的总和是 t?

机器算法验证 可能性 泊松分布 条件概率
2022-04-09 04:15:46

假设我有 iid 随机变量鉴于恰好为零的概率是多少?X1,X2,X3,...XnλX1+X2+X3+...+Xn=tkX1,X2,X3,...Xn

--

我的方法:我从考虑联合概率质量函数开始,其中为零,但我不知道如何进行从这里。如果我使用二项式模型来计算具有 k 个零的概率,我不知道如何对的总和施加约束。X1+X2+X3+...+Xn=tkX1,X2,X3,...XnXn

2个回答

Y=X1+X2++Xn是一个泊松随机变量,参数所以你可以写下的表达式。nλP(Y=t)

对于一组为零的变量,选择一个特定的集合。然后,互补变量集的总和一个泊松随机变量,参数为,并且所选的个变量无关。因此,您可以使用独立性来写下表达式(nk)kZ(nk)λZk

P(Z=t) ,

P(选择个变量为 ,k0)

P(选择为零且选择为零且kZ=t)=P(kY=t)

你能从这里拿走吗?不应该涉及任何二项分布...

观察为条件的分布是多项式(练习)。这提供了一种概念上更简单的方法来思考这个问题——你有盒子,然后随机往里面扔个球。为空的概率是多少?Y:=X1++Xn(X1,,Xn)Y=tntk

嗯,首先,有个球扔到盒子中,没有任何限制。nttn

现在它变得有点复杂了,即使我们只是在数东西。种方法可以选择保持为空的个框。然后我们剩下个球可以扔进剩下的个盒子里,这样每个盒子都不是空的。您可以通过包含/排除来做到这一点,就像在斯特林数的证明中一样https://math.stackexchange.com/questions/550256/stirling-numbers-of-second-type(nk)ktnk

结合这些成分得到所需的概率, ,

1nt(nk)j=0nk(1)nkj(nkj)jt,
tnknk

请注意,答案中没有λ


出于兴趣,作为一个快速练习,我对此进行了编码(借用了我在 Google 中找到的斯特林数函数),以查看答案的样子:

##-- Stirling numbers of the 2nd kind
##-- (Abramowitz/Stegun: 24,1,4 (p. 824-5 ; Table 24.4, p.835)

##> S^{(m)}_n = number of ways of partitioning a set of $n$ elements into $m$
##> non-empty subsets

Stirling2 <- function(n,m)
{
  ## Purpose:  Stirling Numbers of the 2-nd kind
  ##        S^{(m)}_n = number of ways of partitioning a set of
  ##                      $n$ elements into $m$ non-empty subsets
  ## Author: Martin Maechler, Date:  May 28 1992, 23:42
  ## ----------------------------------------------------------------
  ## Abramowitz/Stegun: 24,1,4 (p. 824-5 ; Table 24.4, p.835)
  ## Closed Form : p.824 "C."
  ## ----------------------------------------------------------------

  if (0 > m || m > n) stop("'m' must be in 0..n !")
  k <- 0:m
  sig <- rep(c(1,-1)*(-1)^m, length= m+1)# 1 for m=0; -1 1 (m=1)
  ## The following gives rounding errors for (25,5) :
  ## r <- sum( sig * k^n /(gamma(k+1)*gamma(m+1-k)) )
  ga <- gamma(k+1)
  round(sum( sig * k^n /(ga * rev(ga))))
}


pmf<-function(n,t,k) {
  if (t >= (n-k) & n >= k) {
    (choose(n,k) * factorial(n-k) * Stirling2(t,n-k) )/(n^t)
  } else {
    0
  }
}


lambda <- 1
n <- 10
reps <- 500000
set.seed(2017)
X <- matrix(ncol=n,nrow=reps,data=rpois(n*reps,lambda))

K <- apply(X, 1,function(x){sum(x == 0)})
hist(K)

# restrict only to those that sum to t
Y<-rowSums(X)


t<-8
G<- (Y == t)
sum(G)

k <- 5
#head(X[which(K==k),])
#head(Y[which(K==k)])
#head(X[G,])
#head(Y[G])

posskvalues <- (n-t):n
nk <- length(posskvalues)
empP <- numeric(nk)
thP <- numeric(nk)

for(i in 1:nk) {
  k <- posskvalues[i]
# sum(K[G] == k)
  empP[i] <- sum(K[G] == k)/sum(G)
  thP[i] <- pmf(n,t,k)
}

plot(posskvalues,empP,main=paste("n=",n,", t=",t))
points(posskvalues,thP,pch="x")

在此处输入图像描述