R 如何从MCMCglmm中的后验密度模拟感兴趣的数量?

R 如何从MCMCglmm中的后验密度模拟感兴趣的数量?,r,simulation,bayesian,mixed-models,r-zelig,R,Simulation,Bayesian,Mixed Models,R Zelig,我想模拟使用MCMCglmm估算的模型中的感兴趣的数量,大致与Zelig软件包的方式相同。在Zelig中,您可以为独立值设置所需的值,软件计算结果变量的结果(期望值、概率等)。例如: # Creating a dataset: set.seed(666) df <- data.frame(y=rnorm(100,20,20),z=rnorm(100,50,70)) # Loading Zelig library(Zelig) # Model m1.zelig <- zelig(y

我想模拟使用
MCMCglmm
估算的模型中的感兴趣的数量,大致与
Zelig
软件包的方式相同。在
Zelig
中,您可以为独立值设置所需的值,软件计算结果变量的结果(期望值、概率等)。例如:

# Creating a dataset:
set.seed(666)
df <- data.frame(y=rnorm(100,20,20),z=rnorm(100,50,70))

# Loading Zelig
library(Zelig)

# Model
m1.zelig <- zelig(y~z, data=df, model="ls")
summary(m1.zelig)

# Simulating z = 10
s1 <- setx(m1.zelig, z = 10)
simulation <- sim(m1.zelig, x = s1)
summary(simulation)
#创建数据集:
种子(666)

df您可以进行模拟,但不像Zelig中那样容易。您必须更多地了解所拟合模型的结构以及参数在
MCMCglmm
对象中的存储方式

设置数据和拟合:

set.seed(666)
df <- data.frame(y=rnorm(100,20,20),z=rnorm(100,50,70))
library(MCMCglmm)
m1.mcmc <- MCMCglmm(y~z, data=df, family = "gaussian", verbose=FALSE)

如果您想模拟更复杂的模型(线性或广义线性混合模型),则需要更加努力(适当处理随机效应和反向链接函数).

亲爱的Ben,非常感谢您的快速回复。这正是我想做的。关于更复杂模型的模拟,你有什么建议从哪里开始?再次感谢您的回复。我可能会确保我已经仔细阅读了包含大量信息的
MCMCGCLMM
vignettes,并确保您了解模型结构:例如,您需要类似
Z~ model.matrix(~[随机效果公式,截取被抑制])的内容。
;然后将
Z
乘以
$Liab
组件(潜在效应)。运行模型时,您需要设置
pl=TRUE
,以保存潜在效果。您的建议非常有效。然而,当我尝试加入更多的预测因子并运行泊松模型时,结果看起来与我在
Zelig
中得到的结果非常不同。我在
predframe
中包括了其他预测因子,重复了您上面描述的相同模型矩阵(加上附加变量),并乘以用
MCMCglmm'估计的(单水平)泊松模型的
$Sol'分量。最后,为了获得感兴趣的数量,我输入了
exp(mean(predframe$y))
。还有什么我可能遗漏的吗?再次感谢!唯一有趣的事情是在求幂之前取线性预测值(
predframe$y
)的平均值——为什么不干脆
exp(predframe$y)
?否则,最好是一个可复制的示例。(也许你应该问一个新问题,而不是扩展这个问题——我不确定。)
set.seed(666)
df <- data.frame(y=rnorm(100,20,20),z=rnorm(100,50,70))
library(MCMCglmm)
m1.mcmc <- MCMCglmm(y~z, data=df, family = "gaussian", verbose=FALSE)
predframe <- data.frame(z=10)
X <- model.matrix(~z,data=predframe)
predframe$y <- X %*% t(m1.mcmc$Sol)