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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:25:43