为什么我的贝叶斯层次回归 (brms) 无法在我的模型中找到对象?
Why is my Bayesian hierarchical regression (brms) failing to find an object in my model?
我的数据集是基于动物的调查数据。我想要 运行 以下形式的贝叶斯分层模型:
library(brms)
m1 <-
brm(
AWB ~ ndate * NP + Season + CarcassPres
+ (1 | NP/StandardTransect),
offset = log(Tlength),
family = negbinomial,
data = mydata
)
这给出了一个错误:
Error in nlist(model, sdata, algorithm, backend, iter, warmup, thin,
chains, : object 'Tlength' not found
如果我删除那个偏移量,我会因为链条而得到一个完全独立的错误:
Chain 1: Rejecting initial value: Chain 1: Gradient evaluated at the
initial value is not finite. Chain 1: Stan can't start sampling from
this initial value.
我认为 ndate
变量的比例可能会导致问题,但这并不能解决问题。如果我将其保留为高斯族,该模型将起作用,但这不适合我的数据。
我在这里包含了完整的数据集:
structure(list(AWB = c(15, 66, 7, 44, 22, 45, 14, 33, 60, 30,
32, 39, 45, 39, 0, 37, 24, 18, 37, 66, 60, 25, 3, 34, 13, 58,
6, 38, 33, 12, 0, 34, 20, 75, 2, 18, 4, 15, 9, 4, 0, 50, 21,
21, 24, 5, 9, 13, 87, 43, 1, 13, 19, 28, 1, 13, 18, 56, 42, 53,
2, 16, 37, 5, 49, 11, 2, 15, 30, 3, 0, 57, 5, 31, 18, 94, 35,
45, 10, 8, 53, 8, 21, 5, 11, 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, 1475798400, 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, 1537833600, 1541203200, 1541289600, 1551312000,
1551225600, 1554249600, 1554163200, 1555113600, 1554336000, 1555286400,
1582588800, 1582329600, 1611360000, 1611273600, 1611446400, 1612569600,
1612483200), NP = structure(c(2L, 1L, 1L, 2L, 2L, 2L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
1L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 1L), .Label = c("Katavi",
"Ruaha"), class = "factor"), Season = c("Dry", "Dry", "Dry",
"Dry", "Dry", "Dry", "Dry", "Dry", "Dry", "Dry", "Dry", "Wet",
"Wet", "Wet", "Wet", "Wet", "Wet", "Dry", "Dry", "Dry", "Dry",
"Dry", "Dry", "Wet", "Wet", "Wet", "Wet", "Wet", "Wet", "Wet",
"Wet", "Dry", "Dry", "Dry", "Dry", "Dry", "Dry", "Dry", "Dry",
"Dry", "Dry", "Wet", "Wet", "Wet", "Wet", "Wet", "Wet", "Wet",
"Wet", "Wet", "Wet", "Dry", "Dry", "Dry", "Dry", "Dry", "Dry",
"Dry", "Dry", "Dry", "Dry", "Wet", "Wet", "Wet", "Wet", "Wet",
"Wet", "Dry", "Dry", "Dry", "Dry", "Dry", "Dry", "Wet", "Wet",
"Wet", "Wet", "Wet", "Wet", "Wet", "Wet", "Wet", "Wet", "Wet",
"Wet", "Wet", "Wet"), CarcassPres = c(1, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), StandardTransect = structure(c(1L,
2L, 3L, 4L, 6L, 1L, 2L, 3L, 4L, 5L, 7L, 1L, 4L, 5L, 7L, 2L, 3L,
1L, 2L, 3L, 4L, 5L, 7L, 5L, 7L, 1L, 1L, 4L, 4L, 5L, 7L, 1L, 2L,
3L, 4L, 5L, 1L, 4L, 5L, 7L, 7L, 2L, 3L, 1L, 4L, 5L, 7L, 1L, 4L,
5L, 7L, 1L, 4L, 5L, 7L, 1L, 2L, 3L, 4L, 5L, 7L, 2L, 3L, 1L, 4L,
5L, 7L, 1L, 4L, 5L, 7L, 2L, 3L, 2L, 3L, 1L, 4L, 4L, 6L, 6L, 2L,
3L, 1L, 4L, 6L, 2L, 3L), .Label = c("Jongomero", "LakeChada",
"LakeKatavi", "Lunda", "Magangwe", "Mbagi-Mdonya", "Mpululu"), class = "factor"),
Tlength = c(93, 86.7, 35.2, 75, 27.2, 93, 78.2, 35.2, 74.4,
45.8, 10.3, 93, 71, 45.8, 10.3, 63.9, 35.2, 93, 77.9, 35.2,
86.6, 45.8, 10.3, 45.8, 10.3, 93, 93, 68.9, 86.7, 45.8, 10.3,
93, 81.6, 35.2, 90.5, 45.8, 93, 88.2, 45.8, 10.3, 10.3, 64.6,
35.2, 93, 82.3, 45.8, 10.3, 93, 77.9, 45.8, 10.3, 93, 90.3,
45.8, 10.3, 93, 77.4, 35.2, 87.5, 45.8, 10.3, 66, 35.2, 93,
87.5, 45.8, 10.3, 93, 97.8, 45.8, 10.3, 86.6, 35.2, 71.9,
35.2, 93, 85.2, 85.5, 56.1, 56.1, 71.1, 35.2, 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)
我的数据集是基于动物的调查数据。我想要 运行 以下形式的贝叶斯分层模型:
library(brms)
m1 <-
brm(
AWB ~ ndate * NP + Season + CarcassPres
+ (1 | NP/StandardTransect),
offset = log(Tlength),
family = negbinomial,
data = mydata
)
这给出了一个错误:
Error in nlist(model, sdata, algorithm, backend, iter, warmup, thin, chains, : object 'Tlength' not found
如果我删除那个偏移量,我会因为链条而得到一个完全独立的错误:
Chain 1: Rejecting initial value: Chain 1: Gradient evaluated at the initial value is not finite. Chain 1: Stan can't start sampling from this initial value.
我认为 ndate
变量的比例可能会导致问题,但这并不能解决问题。如果我将其保留为高斯族,该模型将起作用,但这不适合我的数据。
我在这里包含了完整的数据集:
structure(list(AWB = c(15, 66, 7, 44, 22, 45, 14, 33, 60, 30,
32, 39, 45, 39, 0, 37, 24, 18, 37, 66, 60, 25, 3, 34, 13, 58,
6, 38, 33, 12, 0, 34, 20, 75, 2, 18, 4, 15, 9, 4, 0, 50, 21,
21, 24, 5, 9, 13, 87, 43, 1, 13, 19, 28, 1, 13, 18, 56, 42, 53,
2, 16, 37, 5, 49, 11, 2, 15, 30, 3, 0, 57, 5, 31, 18, 94, 35,
45, 10, 8, 53, 8, 21, 5, 11, 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, 1475798400, 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, 1537833600, 1541203200, 1541289600, 1551312000,
1551225600, 1554249600, 1554163200, 1555113600, 1554336000, 1555286400,
1582588800, 1582329600, 1611360000, 1611273600, 1611446400, 1612569600,
1612483200), NP = structure(c(2L, 1L, 1L, 2L, 2L, 2L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
1L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 1L), .Label = c("Katavi",
"Ruaha"), class = "factor"), Season = c("Dry", "Dry", "Dry",
"Dry", "Dry", "Dry", "Dry", "Dry", "Dry", "Dry", "Dry", "Wet",
"Wet", "Wet", "Wet", "Wet", "Wet", "Dry", "Dry", "Dry", "Dry",
"Dry", "Dry", "Wet", "Wet", "Wet", "Wet", "Wet", "Wet", "Wet",
"Wet", "Dry", "Dry", "Dry", "Dry", "Dry", "Dry", "Dry", "Dry",
"Dry", "Dry", "Wet", "Wet", "Wet", "Wet", "Wet", "Wet", "Wet",
"Wet", "Wet", "Wet", "Dry", "Dry", "Dry", "Dry", "Dry", "Dry",
"Dry", "Dry", "Dry", "Dry", "Wet", "Wet", "Wet", "Wet", "Wet",
"Wet", "Dry", "Dry", "Dry", "Dry", "Dry", "Dry", "Wet", "Wet",
"Wet", "Wet", "Wet", "Wet", "Wet", "Wet", "Wet", "Wet", "Wet",
"Wet", "Wet", "Wet"), CarcassPres = c(1, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), StandardTransect = structure(c(1L,
2L, 3L, 4L, 6L, 1L, 2L, 3L, 4L, 5L, 7L, 1L, 4L, 5L, 7L, 2L, 3L,
1L, 2L, 3L, 4L, 5L, 7L, 5L, 7L, 1L, 1L, 4L, 4L, 5L, 7L, 1L, 2L,
3L, 4L, 5L, 1L, 4L, 5L, 7L, 7L, 2L, 3L, 1L, 4L, 5L, 7L, 1L, 4L,
5L, 7L, 1L, 4L, 5L, 7L, 1L, 2L, 3L, 4L, 5L, 7L, 2L, 3L, 1L, 4L,
5L, 7L, 1L, 4L, 5L, 7L, 2L, 3L, 2L, 3L, 1L, 4L, 4L, 6L, 6L, 2L,
3L, 1L, 4L, 6L, 2L, 3L), .Label = c("Jongomero", "LakeChada",
"LakeKatavi", "Lunda", "Magangwe", "Mbagi-Mdonya", "Mpululu"), class = "factor"),
Tlength = c(93, 86.7, 35.2, 75, 27.2, 93, 78.2, 35.2, 74.4,
45.8, 10.3, 93, 71, 45.8, 10.3, 63.9, 35.2, 93, 77.9, 35.2,
86.6, 45.8, 10.3, 45.8, 10.3, 93, 93, 68.9, 86.7, 45.8, 10.3,
93, 81.6, 35.2, 90.5, 45.8, 93, 88.2, 45.8, 10.3, 10.3, 64.6,
35.2, 93, 82.3, 45.8, 10.3, 93, 77.9, 45.8, 10.3, 93, 90.3,
45.8, 10.3, 93, 77.4, 35.2, 87.5, 45.8, 10.3, 66, 35.2, 93,
87.5, 45.8, 10.3, 93, 97.8, 45.8, 10.3, 86.6, 35.2, 71.9,
35.2, 93, 85.2, 85.5, 56.1, 56.1, 71.1, 35.2, 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)