如何在单张图中绘制多个负二项分布的概率分布
负二项分布与广义泊松分布多参数概率分布图实现方法
一、负二项分布多参数概率分布图实现
负二项分布常见两种参数化方式:指定成功次数r与成功概率p,或指定均值mu与离散参数size(也叫theta)。以下以R语言为例,实现多参数组合的负二项分布概率图:
代码示例
# 加载绘图包 library(ggplot2) # 定义参数组合:这里固定size取值,变化均值mu;也可按需调整参数组合逻辑 params <- expand.grid(size = c(2, 5, 10), mu = c(1, 3, 5)) # 生成每个参数对应的概率质量函数数据 nb_data <- lapply(1:nrow(params), function(i) { size_val <- params$size[i] mu_val <- params$mu[i] p_val <- size_val / (size_val + mu_val) # 转换为r-p参数化形式 x <- 0:20 # 取值范围,可根据参数大小调整上限 prob <- dnbinom(x, size = size_val, prob = p_val) data.frame(x = x, prob = prob, size = factor(size_val), mu = factor(mu_val)) }) nb_data <- do.call(rbind, nb_data) # 绘制多参数对比图 ggplot(nb_data, aes(x = x, y = prob, color = size, linetype = mu)) + geom_line(linewidth = 1) + geom_point(size = 2) + labs(title = "多参数负二项分布概率质量函数", x = "取值x", y = "概率P(X=x)", color = "离散参数size", linetype = "均值mu") + theme_minimal() + facet_wrap(~size) # 可选分面,更清晰展示不同size下的分布差异
关键注意点
- 若习惯用
mu和theta参数化,可直接调用dnbinom(x, mu = mu_val, size = theta_val)(多数R版本支持) - 取值范围
x需匹配参数:均值mu越大,x的上限应对应提高,避免截断有效概率 - 通过
expand.grid()可灵活生成任意参数组合,满足不同对比需求
二、广义泊松分布多参数概率分布图实现
广义泊松分布的概率质量函数为:
P(X=x) = (λ(λ + xθ)^(x-1) e^(-λ - xθ))/x! ,x=0,1,2,...,其中λ>0,max(-1, -λ/m)<θ<1(m为最大可能取值)
R语言可借助VGAM包的dgenpois()函数实现,步骤如下:
代码示例
# 安装并加载VGAM包(首次使用需执行安装) # install.packages("VGAM") library(VGAM) library(ggplot2) # 定义参数组合:λ取不同均值,θ取不同离散程度参数 params <- expand.grid(lambda = c(1, 3, 5), theta = c(-0.2, 0, 0.3)) # 生成每个参数对应的概率质量函数数据 gp_data <- lapply(1:nrow(params), function(i) { lambda_val <- params$lambda[i] theta_val <- params$theta[i] # 根据θ正负确定x的取值范围:θ负时x存在上限 if(theta_val < 0) { max_x <- floor(-lambda_val / theta_val) x <- 0:max_x } else { x <- 0:20 } prob <- dgenpois(x, lambda = lambda_val, theta = theta_val) data.frame(x = x, prob = prob, lambda = factor(lambda_val), theta = factor(theta_val)) }) gp_data <- do.call(rbind, gp_data) # 绘制多参数对比图 ggplot(gp_data, aes(x = x, y = prob, color = lambda, linetype = theta)) + geom_line(linewidth = 1) + geom_point(size = 2) + labs(title = "多参数广义泊松分布概率质量函数", x = "取值x", y = "概率P(X=x)", color = "参数λ", linetype = "参数θ") + theme_minimal() + facet_wrap(~theta) # 按θ分面,直观对比离散程度差异
关键注意点
- θ参数决定分布离散性:θ=0时退化为普通泊松分布;θ>0为过度离散;θ<0为欠离散且x有上限
- 需保证参数合法性:λ必须大于0,θ范围需满足概率非负,代码中通过θ正负设置x上限避免无效值
- 若不想依赖第三方包,可手动实现概率质量函数,注意x=0时的特殊情况(P(X=0)=e^(-λ))
内容的提问来源于stack exchange,提问作者Katlego Motsatsing
相关产品推荐
相关产品推荐

