我正在寻找类似于nlme,lme4和brms中使用的ranef()
的命令,这将允许我在我的MCMCglmm模型中提取单个随机效果。在我的数据集中,我有40个提供者,我想为每个提供者提取随机效果并将其绘制在毛虫图中。任何建议都会很棒。谢谢。
如果它有用,这是我的MCMCglmm模型:
prior.3 <- list(R = list(R1 = list(V = diag(2), nu = 0.002)),
G = list(G1 = list(V = diag(2), nu = 0.002),
G2 = list(V = diag(2), nu = 0.002)))
mc_mod2 <- MCMCglmm(outcome ~ 1, data = filter(data, rem2 == "white" | rem2 == "rem"),
random = ~ idh(rem2):id + us(rem2):provider,
rcov = ~idh(rem2):units,
verbose = TRUE,
prior = prior.3,
family = "gaussian",
nitt = 100000, burnin = 5000,
pr = TRUE)
答案 0 :(得分:9)
更详细一点,因为包中似乎没有内置的毛虫图:请注意,在调用pr=TRUE
时需要使用MCMCglmm
来存储随机效果值。
library(MCMCglmm)
data(PlodiaPO)
model1 <- MCMCglmm(PO~1, random=~FSfamily, data=PlodiaPO, verbose=FALSE,
nitt=1300, burnin=300, thin=1,
pr=TRUE)
if (!require("postMCMCglmm")) {
devtools::install_github("JWiley/postMCMCglmm")
library("postMCMCglmm")
}
ranef()
似乎返回随机效果的矩阵(rows = levels,columns = samples)。转换为具有均值和分位数的数据框:
qfun <- function(x,lev) unname(quantile(x,lev))
rsum <- as.data.frame(t(apply(ranef(model1),1,
function(x) c(est=mean(x),
min=qfun(x,0.025),max=qfun(x,0.975)))))
绘图顺序:
rsum$term <- reorder(factor(rownames(rsum)),
rsum$est)
简介:
library(ggplot2)
ggplot(rsum,aes(term,est))+
geom_pointrange(aes(ymin=min,ymax=max))+
coord_flip()
答案 1 :(得分:0)
我忽略了需要安装的其他软件包(感谢你指出这一点,Ben)。
为了能够运行ranef()
,只需安装postMCMCglmm软件包 - https://github.com/jwiley/postMCMCglmm/
#install.packages("devtools")
require(devtools)
install_github("JWiley/postMCMCglmm")