我想知道如何从使用Rarm
中的包或rstanarm
包估计的回归模型中模拟感兴趣的数量。我是贝叶斯方法和 R 的新手,并且已经使用Zelig
包一段时间了。我之前问过一个类似的问题,但我想知道是否可以使用这些包估计的后验分布来模拟这些数量。
Zelig
您可以为独立值设置所需的值,并计算结果变量的结果(预期值、概率等)。一个例子:
# Creating a dataset:
set.seed(10)
x <- rnorm(100,20,10)
z <- rnorm(100,10,5)
e <- rnorm(100,0,1)
y <- 2*x+3*z+e
df <- data.frame(x,z,e,y)
# Loading Zelig
require(Zelig)
# Model
m1.zelig <- zelig(y ~ x + z, model="ls", data=df)
summary(m1.zelig)
# Simulating z = 10
s1 <- setx(m1.zelig, z = 10)
simulation <- sim(m1.zelig, x = s1)
summary(simulation)
因此Zelig
将 x 保持在其平均值 (20.56),并在 z = 10 时模拟感兴趣的数量。在这种情况下,y 约为 71。
使用相同的模型arm
:
# Model
require(arm)
m1.arm <- bayesglm(y ~ x + z, data=df)
summary(m1.arm)
并使用rstanarm
:
# Model
require(rstanarm)
m1.stan <- stanlm(y ~ x + z, data=df)
print(m1.stan)
有没有办法用这两个包估计的后验分布来模拟 z = 10 和 x 等于它的平均值并得到 y 的期望值?非常感谢!