You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R语言计算多项分布中B出现次数少于5次的概率?

问题分析与R语言实现方案

首先你当前用的dmultinom(x=c(0,5,0), prob = c(0.02, 0.55, 0.43))是错的——这个函数计算的是恰好出现0个A、5个B、0个C这一种特定组合的概率,而你需要的是B出现次数少于5次(也就是0到4次)的所有可能情况的概率总和。

推荐两种实现方法:

方法一:用二项分布简化计算(高效首选)

因为我们只关心B的出现次数,完全可以把A和C合并成「非B」的类别,对应的概率是1 - 0.55 = 0.45。此时问题转化为:30次独立试验中,成功(出现B)概率为0.55,求成功次数≤4的累积概率,直接用R的pbinom函数即可:

# 计算B出现次数少于5次的概率(即≤4次)
pbinom(4, size = 30, prob = 0.55)

方法二:用多项分布直接计算(验证用)

如果一定要基于原始的三类分布计算,需要遍历B从0到4的所有次数,对每个次数k,计算所有可能的A、C组合的概率之和,再累加所有k的结果:

total_prob <- 0
# 遍历B出现0到4次的所有情况
for (k in 0:4) {
  # 对每个k,A可以取0到30-k,C=30-k-a,计算所有组合的概率和
  prob_k <- sum(sapply(0:(30 - k), function(a) {
    dmultinom(x = c(a, k, 30 - k - a), prob = c(0.02, 0.55, 0.43))
  }))
  total_prob <- total_prob + prob_k
}
# 输出总概率
total_prob

两种方法得到的结果完全一致,但方法一的计算效率远高于方法二,推荐优先使用。

内容的提问来源于stack exchange,提问作者cloudsaint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 02:15:44