我想估算一个包含(.*)total-games(.*)|.*
包R
的二项式模型。该模型应包含截距和斜率 - 包括固定和随机部分。如何指定已接受的MCMCglmm
? (注意,here is a similar question,但是在一个更复杂的环境中。)
假设数据具有以下形式:
prior
实际上,数据是由
生成的 y x cluster
1 0 -0.56047565 1
2 1 -0.23017749 1
3 0 1.55870831 1
4 1 0.07050839 1
5 0 0.12928774 1
6 1 1.71506499 1
答案 0 :(得分:3)
有关模型的问题中的信息,建议指定set.seed(123)
nj <- 15 # number of individuals per cluster
J <- 30 # number of clusters
n <- nj * J
x <- rnorm(n)
y <- rbinom(n, 1, prob = 0.6)
cluster <- factor(rep(1:nj, each = J))
dat <- data.frame(y = y, x = x, cluster = cluster)
和fixed = y ~ 1 + x
。使用random = ~ us(1 + x):cluster
,您可以将随机效果关联起来(参见第{3.4节和Hadfield's 2010 jstatsoft-article中的第2节)
首先,因为你只有一个因变量(us()
),前面的 G 部分(参见公式4和Hadfield's 2010 jstatsoft-article中的第3.6节)对于随机效应方差,只需要有一个名为y
的列表元素。此列表元素不是实际的先前分布 - 这由Hadfield指定为inverse-Wishart distribution。但是使用G1
,您可以指定此反Whishart分布的参数,这些参数是维基百科表示法中的比例矩阵(和G1
表示法中的V
)和自由度(维基百科表示法中的和MCMCglmm
表示法中的nu
)。由于你有两个随机效应(截距和斜率)MCMCglmm
必须是一个2 x 2矩阵。经常选择的是二维单位矩阵V
。哈德菲尔德经常使用diag(2)
作为自由度(参见his course notes)
现在,您还必须在先前的残差方差中指定 R 部分。在这里,Hadfield再次指定了反Whishart分布,让用户指定其参数。由于我们只有一个残差方差,nu = 0.002
必须是标量(假设为V
)。 V = 0.5
的可选元素是R
。使用此元素指定,是否应将残差方差固定为某个值(而不是必须写入fix
或fix = TRUE
)(然后fix = 1
或fix = FALSE
)。请注意,您不会将fix = 0
的剩余差异修改为0.5
!因此,当您在Hadfield的课程笔记fix = 0.5
中找到时,请将其读作fix = 1
并查看fix = TRUE
的哪个值已修复。
我们设置前面的内容如下:
V
有了这个先验,我们可以运行prior0 <- list(G = list(G1 = list(V = diag(2), nu = 0.002)),
R = list(V = 0.5, nu = 0.002, fix = FALSE))
:
MCMCglmm
Gibbs-sampler对固定效果的抽取可以在library("MCMCglmm") # for MCMCglmm()
set.seed(123)
mod0 <- MCMCglmm(fixed = y ~ 1 + x,
random = ~ us(1 + x):cluster,
data = dat,
family = "categorical",
prior = prior0)
中找到,mod0$Sol
中的方差参数的绘制。
通常二项式模型要求固定残差方差,因此我们将残差方差设定为mod0$VCV
0.5
通过比较set.seed(123)
prior1 <- list(G = list(G1 = list(V = diag(2), nu = 0.002)),
R = list(V = 0.5, nu = 0.002, fix = TRUE))
mod1 <- MCMCglmm(fixed = y ~ 1 + x,
random = ~ us(1 + x):cluster,
data = dat,
family = "categorical",
prior = prior1)
和mod0$VCV[, 5]
可以看出差异。在后一种情况下,所有条目都是mod1$VCV[, 5]
指定的。