在 k 个独立案例中观察到至少一个零的泊松概率

机器算法验证 r 可能性 泊松分布
2022-04-22 05:16:19

我有一组来自生物实验的观察结果。我已经计算了每个染色体上特定事件的发生次数n细胞,最后我得到了每条染色体的最终平均值。

2.2, 6.4, 3.4, 10.2, 4.45

所以我有 5 条染色体,平均上面提到的事件数量。

我计算了上述任何染色体变为零的泊松概率。

我使用了 R function:ppois(q=0,lambda=wt[1:5])并得到了 probabilities 1.108032e-01 1.661557e-03 3.337327e-02 3.717032e-05 1.167857e-02,这表明总概率为 0.15,因此可以观察任何零事件的染色体。

现在我想知道在什么值下,这些概率变为零或可以忽略不计。我该如何继续实现这一目标?

2个回答
## Just repeating what you did for completion
> wt <-  c(2.2,6.4,3.4,10.2,4.45)
> p  <-  ppois(q=0, lambda=wt)
> 
> sum(ppois(q=0,lambda=wt))
[1] 0.1575537
> 
> tol <- .Machine$double.eps # 2.220446e-16
> wt  <- seq(0,250, by=0.01)
> wt[which( ppois(q=0, lambda=wt) < tol )[1]]
[1] 36.05

所以当泊松率在 36 左右时,随机变量为 0 的概率是微乎其微的。当然,您可以考虑不同的容差水平(我使用了我的计算机 R 可以处理的最小数字,但这非常极端)

这是一种非常特别的方式,您可以通过假设检验将其形式化。

答案取决于你的问题。

以下是我的解释:

你有 5 条染色体,你对其中任何一条独立于其他染色体为零的事件感兴趣,你称之为“总概率”。您想知道单个比率的哪种组合可确保该总概率为零或可忽略不计。

关键是你所说的可以忽略不计。

如果你愿意接受它们都不为零的1%lambda=6.3的可能性,那么你的答案是,所有染色体都具有统一的比率。

 > sum(dpois(x=0,lambda=rep(6.3,5)))    # uniform rate for all 5 chromosomes
 [1] 0.009182           # less than 1% total probability

5%的机会,答案是lambda=4.7

然而,单独的费率可以更小或更大,只要它们有助于将总数保持在公差范围内。例如:

 > sum(dpois(x=0,lambda=c(6,6,7,8,8)))  # non-uniform rates
 [1] 0.00654   # also less than 1% total probability

解决方案(统一费率):

定义一个进行计算的函数。在这里,我假设所有费率都是相等的,尽管您可以直接将 lambda 设置为rate并传入任何费率向量。

 all_chrom_zero <- function(rate) {
     sum(dpois(x=0,lambda=rep(rate,5)))
  }

然后使用sapply它在试用率列表上运行它,并选择低于您的置信度阈值的最小比率——在本例中为 1%

 tol <- 0.01
 wt<-seq(0,10,0.1)   # candidate rates
 min(wt[which(sapply(wt,all_chrom_zero)<0.01)])
 [1] 6.3

上面的代码已经被构造成一个没有太多困难的矩阵(使用sapply)。因此,您可以完全取消统一假设,并实际运行您的代码来模拟各种 5 元组的速率。

如果您的生物模型有关于单个染色体比率分布的信息,这将是一个加分项。如果没有,您可以从高斯分布中为每个染色体的速率抽取随机样本,每个样本都以均匀解为中心,然后对这些进行计算,或者如果您喜欢蛮力计算,您可以(只是为了好玩!)也运行在 5D 网格上进行计算,并在不同的公差水平上寻找“等概率”曲线。

Background forsapply Usingsapply可以避免 R 中的显式循环,并且对于构建模拟非常强大。如果您需要一些背景知识,我在此处的答案中引用了一些有用的引物

其它你可能感兴趣的问题