基于逆CDF方法生成多lambda值的泊松分布用于泊松回归
用逆CDF方法生成多lambda值的泊松回归数据
核心逻辑
泊松分布的逆CDF生成思路:对每个给定的λ(即我们计算出的mu),先生成一个(0,1)区间的均匀随机数U,再找到最小的非负整数k,使得泊松分布的累积概率P(X≤k)≥U,这个k就是对应λ的泊松随机数。针对多λ场景,我们可以写一个自定义函数,逐个处理每个mu值生成对应随机数。
实现代码
# 样本量 n <- 10 # 回归系数 beta0 <- 1 beta1 <- 0.2 # 生成协变量x x <- runif(n = n, min = 0, max = 1.5) # 计算每个样本对应的mu值(即lambda) mu <- exp(beta0 + beta1 * x) # 自定义逆CDF生成泊松随机数的函数 rpois_icdf <- function(lambda) { u <- runif(1) k <- 0 cdf <- exp(-lambda) # P(X=0)的概率 while (cdf < u) { k <- k + 1 cdf <- cdf + (lambda^k / factorial(k)) * exp(-lambda) } return(k) } # 批量处理所有mu值生成y y <- sapply(mu, rpois_icdf) # 构建数据集 data <- data.frame(y = y, x = x) # 查看数据集 print(data)
说明
- 自定义函数
rpois_icdf针对单个lambda实现逆CDF逻辑,通过sapply可批量处理所有mu值,生成对应长度的泊松随机数序列。 - 仅替换原代码中
rpois的生成逻辑,其余步骤保持一致,确保生成的数据集符合泊松回归的结构要求。
内容的提问来源于stack exchange,提问作者user22130474
相关产品推荐
相关产品推荐

