我正在使用R-INLA运行以下模型(治疗、动物.1和动物.2是因素,接触长度是连续的(:
formula <- Encounter.Length ~ Treatment +f(Animal.1, model = "iid", n = n.animal) +
f(Animal.2, copy = "Animal.1")
m.1 <- inla(formula, data = inla.dat)
然而,在运行此代码后,我收到以下错误消息:
inla错误(公式,数据=inla.dat(:在f(Animal.1(中:"协变"必须与"值"匹配,并且两者都必须是"数值"或"因子"/"字符"。
我是使用INLA的新手,想知道这个错误消息意味着什么以及如何修复它。
答案(来自r-inla.help(:B的级别不是a的子集(用于定义B复制的模型(。因此,您必须在级别上定义并集上的模型。
例如:
n <- 3
A <- as.factor(letters[1:n])
B <- as.factor(letters[1+1:n])
y <- 1:n
这不起作用
inla(y ~ -1 + f(A) + f(B, copy = "A"), data = data.frame(A, B))
但确实如此
values <- as.factor(unique(c(levels(A), levels(B))))
inla(y ~ -1 + f(A, values = values) + f(B, copy = "A"),
data = list(A = A, B = B, values = values))