分析贝叶斯模型 (Rjags) 中的效果
Analyzing Effect in a Bayesian Model (Rjags)
"考虑以下三组保险的精算理赔数据
投保人,
year: 1 2 3 4 5
Grp1: 9 7 6 13 12
Grp2: 6 4 2 8 10
Grp3: 8 8 3 4 9
运行 R 和 Jags 应用以下分层模型来分析数据:
Yij ∼ Poisson(λij )
λij = Pijθj
θij ∼ Ga(α, β) Pij ∼ Ga(γ, δ)
α ∼ Ga(5, 5) γ ∼ U(0, 100)
β ∼ Ga(25, 1) δ ∼ U(0, 100),
where i = 1, 2, 3 and j = 1, . . . , 5.
关于群体效应和年份效应,你的结论是什么?
我已经起草了我的模型规范,以便使用 JAGS 将其拉入 R 中。我的问题是,如何在 R 中编写代码以分别测试 Group 的效果和 Year 的效果?我只对一个变量使用过锯齿。
这是我的千篇一律的 JAGS 代码:
library(rjags)
forJags<-list( )
inits<-list( )
foo<jags.model(file="m2n4.bug",data = forJags,inits=inits)
out<-coda.samples(model=foo, variable.names = c( ), n.iter=50000,thin=5)
summary(out)
这是我的模型:
model
{
for (i in 1:3,j in 1:5){
Y[i,j] ~ dpois(lambda[i,j])
lambda[i,j] = P[i,j]*theta[i,j]
theta[i,j] ~dgamma(alpha,beta)
P[i,j] ~ dgamma(gamma,delta)
}
alpha ~ dgamma(5,5)
beta ~ dgamma(25,1)
gamma ~ dunif(0,100)
delta ~ dunif(0,100)
}
任何告诉我如何编码以便我单独测试效果的输入都是巨大的。
将您的模型定义为:
model
{
for (j in 1:5){P[j] ~ dgamma(gamma,delta)}
for (i in 1:3){
for(j in 1:5){
Y[i,j] ~ dpois(lambda[i,j])
lambda[i,j] = P[j]*theta[i,j]
theta[i,j] ~ dgamma(alpha,beta)
}
}
alpha ~ dgamma(5,5)
beta ~ dgamma(25,1)
gamma ~ dunif(0,100)
delta ~ dunif(0,100)
}
然后 运行:
library(rjags)
Y<-rbind(c(9, 7, 6, 13, 12),c( 6 ,4 ,2 ,8 ,10),c(8 ,8, 3, 4, 9))
forJags<-list('Y' = Y)
foo<-jags.model(file="m2n4.bug",data = forJags)
out<-coda.samples(model=foo, variable.names = c("theta","P"),n.iter=50000,thin=5)
summary(out)
然后您将能够看到 P
(年份)的单独效果和单一效果(theta
)
"考虑以下三组保险的精算理赔数据 投保人,
year: 1 2 3 4 5
Grp1: 9 7 6 13 12
Grp2: 6 4 2 8 10
Grp3: 8 8 3 4 9
运行 R 和 Jags 应用以下分层模型来分析数据:
Yij ∼ Poisson(λij )
λij = Pijθj
θij ∼ Ga(α, β) Pij ∼ Ga(γ, δ)
α ∼ Ga(5, 5) γ ∼ U(0, 100)
β ∼ Ga(25, 1) δ ∼ U(0, 100),
where i = 1, 2, 3 and j = 1, . . . , 5.
关于群体效应和年份效应,你的结论是什么?
我已经起草了我的模型规范,以便使用 JAGS 将其拉入 R 中。我的问题是,如何在 R 中编写代码以分别测试 Group 的效果和 Year 的效果?我只对一个变量使用过锯齿。
这是我的千篇一律的 JAGS 代码:
library(rjags)
forJags<-list( )
inits<-list( )
foo<jags.model(file="m2n4.bug",data = forJags,inits=inits)
out<-coda.samples(model=foo, variable.names = c( ), n.iter=50000,thin=5)
summary(out)
这是我的模型:
model
{
for (i in 1:3,j in 1:5){
Y[i,j] ~ dpois(lambda[i,j])
lambda[i,j] = P[i,j]*theta[i,j]
theta[i,j] ~dgamma(alpha,beta)
P[i,j] ~ dgamma(gamma,delta)
}
alpha ~ dgamma(5,5)
beta ~ dgamma(25,1)
gamma ~ dunif(0,100)
delta ~ dunif(0,100)
}
任何告诉我如何编码以便我单独测试效果的输入都是巨大的。
将您的模型定义为:
model
{
for (j in 1:5){P[j] ~ dgamma(gamma,delta)}
for (i in 1:3){
for(j in 1:5){
Y[i,j] ~ dpois(lambda[i,j])
lambda[i,j] = P[j]*theta[i,j]
theta[i,j] ~ dgamma(alpha,beta)
}
}
alpha ~ dgamma(5,5)
beta ~ dgamma(25,1)
gamma ~ dunif(0,100)
delta ~ dunif(0,100)
}
然后 运行:
library(rjags)
Y<-rbind(c(9, 7, 6, 13, 12),c( 6 ,4 ,2 ,8 ,10),c(8 ,8, 3, 4, 9))
forJags<-list('Y' = Y)
foo<-jags.model(file="m2n4.bug",data = forJags)
out<-coda.samples(model=foo, variable.names = c("theta","P"),n.iter=50000,thin=5)
summary(out)
然后您将能够看到 P
(年份)的单独效果和单一效果(theta
)