为什么我的贝叶斯分层回归 (brms) 无法在我的模型中找到对象?

问题描述

我的数据集基于动物的调查数据。我想运行以下形式的贝叶斯分层模型:

library(brms)

m1 <-
  brm(
    AWB ~ ndate * NP + Season + Carcasspres
    + (1 | NP/StandardTransect),offset = log(Tlength),family = negbinomial,data = mydata
   )

这给出了一个错误

nlist(model,sdata,algorithm,backend,iter,warmup,thin,链,:找不到对象“Tlength”

如果我删除那个偏移量,我会因为链而得到一个完全独立的错误

链 1:拒绝初始值:链 1:梯度在 初始值不是有限的。链 1:Stan 无法从 这个初始值。

我认为 ndate 变量的比例可能会导致问题,但这并不能解决问题。如果我将其保留为高斯族,该模型将起作用,但这不适用于我的数据。

在这里包含了完整的数据集:

structure(list(AWB = c(15,66,7,44,22,45,14,33,60,30,32,39,37,24,18,25,3,34,13,58,6,38,12,20,75,2,4,15,9,50,21,5,87,43,1,19,28,56,42,53,16,49,11,57,31,94,35,10,8,83,27),ndate = c(1377043200,1376611200,1376524800,1377129600,1377216000,1412899200,1413763200,1413590400,1412812800,1413072000,1412985600,1426809600,1426636800,1426723200,1426550400,1428451200,1428364800,1442448000,1441843200,1441756800,1442361600,1443139200,1443052800,1461974400,1461888000,1462147200,1463702400,1462060800,1475798400,1463529600,1463443200,1475884800,1477526400,1477440000,1475971200,1478822400,1478736000,1478649600,1478563200,1478908800,1485734400,1485648000,1487808000,1487721600,1487980800,1487894400,1489190400,1489104000,1489276800,1492646400,1497484800,1497398400,1497657600,1497571200,1511222400,1510272000,1510185600,1511136000,1511395200,1511308800,1519344000,1519430400,1524009600,1524096000,1524182400,1537833600,1537920000,1537747200,1538006400,1541203200,1541289600,1551312000,1551225600,1554249600,1554163200,1555113600,1554336000,1555286400,1582588800,1582329600,1611360000,1611273600,1611446400,1612569600,1612483200),NP = structure(c(2L,1L,2L,1L),.Label = c("Katavi","Ruaha"),class = "factor"),Season = c("Dry","Dry","Wet","Wet"),Carcasspres = c(1,0),StandardTransect = structure(c(1L,3L,4L,6L,5L,7L,3L),.Label = c("Jongomero","LakeChada","LakeKatavi","Lunda","Magangwe","Mbagi-Mdonya","mpululu"),Tlength = c(93,86.7,35.2,27.2,93,78.2,74.4,45.8,10.3,71,63.9,77.9,86.6,68.9,81.6,90.5,88.2,64.6,82.3,90.3,77.4,87.5,97.8,71.9,85.2,85.5,56.1,71.1,68.7,86.5,60.7,56.6,78.7)),row.names = c(NA,-87L),class = "data.frame")

解决方法

在评论中,Ben 发现问题与我对偏移量的规范有关。

此模型有效:

brm(AWB ~ ndate * NP + Season + CarcassPres + (1 | NP/StandardTransect) + offset(log(Tlength)),family = negbinomial,data = mydata)