glmmTMB: 在eval(family$initialize) 处发生错误:y的取值必须在 [0, 1] 之间(包含0 和1)
我在尝试使用一个简单的混合效应模型,响应变量为连续变量(% 分数)/100,因此界限在 (0,1) 之间。我有一个离散自变量作为因子,其取值为每周上课2 天或4 天,以及一个随机效应(班次编号,共5 个班次,也作为一个因子设定)。
数据框的结构如下:
> head(data)
Final_Exam Overall_Percentage Year Semester Section Days Instructor
1 0.9500 0.8900 2026 Spring 1 4 tanner
2 0.6483 0.8956 2026 Spring 1 4 tanner
3 0.9733 0.9872 2026 Spring 1 4 tanner
4 0.9344 0.9777 2026 Spring 1 4 tanner
5 0.8828 0.9443 2026 Spring 1 4 tanner
6 0.8300 0.9313 2026 Spring 1 4 tanner
完整的模型是:
> model.grades.1 = glmmTMB(Overall_Percentage ~ Days + (1|Section), family=beta, data=data)
Error in family() : argument "a" is missing, with no default
我从没见过有人在beta分布中添加一个名为a 的参数,这是不是在让我通过设置一个种子来参数化误差分布,好像包含了一个离散度参数?如果是这样,我应该去哪里查找该怎么做?
或者:
> model.grades.2 = glmmTMB(Overall_Percentage ~ Days + (1|Section), family=ordbeta, data=data)
Error in eval(family$initialize) : y values must be 0 <= y <= 1
但我的响应变量被限定在0 < Overall_Percentage < 1
> summary(Overall_Percentage)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.0278 0.8012 0.8904 0.8478 0.9414 0.9999
> which(Overall_Percentage <= 0 | Overall_Percentage >= 1) #check for 0s and 1s
integer(0)
我想使用ordbeta家族,因为看起来它是为这类数据结构设计的,但我还没看到解决这个错误的方法。有什么建议?
> R.Version() # macbook pro 2019
$platform
[1] "x86_64-apple-darwin20"
$arch
[1] "x86_64"
$os
[1] "darwin20"
$system
[1] "x86_64, darwin20"
$status
[1] ""
$major
[1] "4"
$minor
[1] "5.3"
$year
[1] "2026"
$month
[1] "03"
$day
[1] "11"
$`svn rev`
[1] "89597"
$language
[1] "R"
$version.string
[1] "R version 4.5.3 (2026-03-11)"
$nickname
[1] "Reassured Reassurer"
解决方案
(太长,不能作为评论。)
这看起来没问题(glmmTMB 版本1.1.14,但如果在最近的版本中工作方式不同,我也会感到惊讶……)
library(glmmTMB)
data <- expand.grid(Days = 1:20, Section = factor(1:20))
set.seed(101)
data$Overall_Percentage <- runif(nrow(data), min = 0.02, max = 0.99999)
model.grades.2 = glmmTMB(Overall_Percentage ~ Days + (1|Section),
family=ordbeta, data=data)
model.grades.2
Formula: Overall_Percentage ~ Days + (1 | Section)
Data: data
AIC BIC logLik -2*log(L) df.resid
8.90981 32.85859 1.54510 -3.09019 394
Random-effects (co)variances:
Conditional model:
Groups Name Std.Dev.
Section (Intercept) 0.1239
Number of obs: 400 / Conditional model: Section, 20
Dispersion parameter for ordbeta family (): 2.13
lower cutoff estimate: 4.62e-14, 1
Fixed Effects:
Conditional model:
(Intercept) Days
0.013364 0.005404
所以我猜你需要给我们展示你数据的更多信息。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。