如何在gamlss中为比例数据(非计数)拟合Beta-Binomial模型
解决比例数据拟合Beta-Binomial回归的问题
问题根源
gamlss包的BB(Beta-Binomial)分布族要求响应变量是整数型的成功次数,但你传入的是连续型的比例值p,即便设置weights=n也无法改变内部对响应变量类型的校验逻辑,这直接导致了错误和警告。
可行解决方案
方案1:用brms包直接拟合(推荐)
brms的beta_binomial族支持通过trials()参数指定试验数n,响应变量直接用比例p即可,无需将p*n取整为整数成功次数。示例代码:
library(dplyr) library(brms) df <- tibble( cluster = LETTERS[1:20] ) |> mutate( p = rbeta(n(), 1, 1), n = as.integer(3 * runif(n())) ) # 拟合Beta-Binomial回归 fit <- brm( bf(p | trials(n) ~ log(n)), data = df, family = beta_binomial(), chains = 4, iter = 2000 ) summary(fit)
方案2:gamlss中用Beta回归加随机效应替代
如果坚持使用gamlss,可以用BE(Beta)分布族结合聚类随机效应,模拟Beta-Binomial的过度离散特性,同时支持连续比例作为响应变量:
library(dplyr) library(gamlss) df <- tibble( cluster = LETTERS[1:20] ) |> mutate( p = rbeta(n(), 1, 1), n = as.integer(3 * runif(n())) ) # 带聚类随机效应的Beta回归 fit <- gamlss( p ~ log(n) + random(cluster), weights = n, data = df, family = BE(mu.link='identity') ) summary(fit)
内容的提问来源于stack exchange,提问作者mihagazvoda
相关产品推荐
相关产品推荐

