首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSVS和spike slab之前的JAGS

SSVS和spike slab之前的JAGS
EN

Stack Overflow用户
提问于 2017-12-12 01:30:37
回答 1查看 856关注 0票数 4

我对这个话题/在讨论板上的帖子非常陌生,所以如果有什么不清楚的地方,我提前道歉。

我对在JAGS中执行随机搜索变量选择(SSVS)很感兴趣。我在网上看到过执行SSVS的人的代码(例如http://www4.stat.ncsu.edu/~reich/ABA/code/SSVS,我复制了下面的代码),但我的理解是,要执行这种方法,我需要在JAGS中使用spike slab。尖峰可以是点质量,也可以是方差非常小的分布。看看大多数人的代码,只定义了一个分布(在上面的一个中,他们定义了一个关于伽马的分布,β=伽马*δ),我相信他们假设的是峰值上的一个点质量。

所以我的问题是:

1)有人能解释一下为什么下面的代码使用SSVS方法吗?例如,我们如何知道这不是使用GVS,这也是另一种使用Gibbs采样器的方法?

2)这是尖峰上的点质量吗?

3)如果我想使用模拟数据来测试Gibbs采样器是否正确地从尖峰/板材中提取,我该怎么做呢?我会为一个尖峰和一个板材编写代码吗?我应该在后面寻找什么来查看它是否正确绘制?

代码语言:javascript
复制
model_string <- "model{ 
# Likelihood
for(i in 1:n){
Y[i] ~ dpois(lambda[I]) 
log(lambda[i]) <- log(N[i]) + alpha + inprod(beta[],X[i,])
}
#Priors
for(j in 1:p){
gamma[j] ~ dnorm(0,tau)
delta[j] ~ dbern(prob)
beta[j] <- gamma[j]*delta[j] 
} 
prob ~ dunif(0,1) 
tau ~ dgamma(.1,.1) 
alpha ~ dnorm(0,0.1) 
}"

我也在JAGS的帮助页面上问过:https://sourceforge.net/p/mcmc-jags/discussion/610036/thread/a44343e0/#ab47

EN

回答 1

Stack Overflow用户

发布于 2018-04-13 08:19:25

我还(试图)在JAGs中做一些贝叶斯变量选择的工作。我绝对不是这个话题的专家,但是如果我们多聊聊这个话题,也许我们可以一起学习。以下是我对此代码中的变量选择的解释:

代码语言:javascript
复制
model_string <- "model{ 
Likelihood
for(i in 1:n){
Y[i] ~ dpois(lambda[I]) 
log(lambda[i]) <- log(N[i]) + alpha + inprod(beta[],X[i,]) 
}

Priors
for(j in 1:p){
gamma[j] ~ dnorm(0,tau)     
delta[j] ~ dbern(prob)       # delta has a Bernoulli distributed prior (so it can only be 1:included or 0:notincluded)
beta[j] <- gamma[j]*delta[j] # delta is the inclusion probability
} 
prob ~ dunif(0,1)            # This is then setting an uninformative prior around the probability of a varible being included into the model
tau ~ dgamma(.1,.1) 
alpha ~ dnorm(0,0.1) 
}"

我尝试注释掉模型中的变量选择部分。上面的代码看起来与Kuo & Mallick的贝叶斯变量选择方法非常相似。我目前在调整spike和slab方法时遇到了麻烦,因此估计值正确地混合在一起,而不是“卡住”在0或1上。

所以我的前科设置得更像这样:

代码语言:javascript
复制
 beta~ dnorm(0,tau)
 tau <-(100*(1-gamma))+(0.001*(gamma))     # tau is the inclusion probability 
 gamma~dbern(0.5)

我发现这篇文章有助于解释不同变量选择方法之间的差异(它涉及到GVS和SSVS):

O’Hara, R.B. & Sillanpää, M.J. (2009). A review of Bayesian variable selection methods: What, how and which. Bayesian Anal., 4, 85–118

或者这篇博文:https://darrenjw.wordpress.com/2012/11/20/getting-started-with-bayesian-variable-selection-using-jags-and-rjags/

如果之前的测试版上没有SSVS,那么之前的版本看起来更像这样:

代码语言:javascript
复制
Priors
for(j in 1:p){     
beta[j] <- ~ dnorm(0,0.01) # just setting a normally (or whatever drstribution you're working in) distributed prior around beta.
} 
tau ~ dgamma(.1,.1) 
alpha ~ dnorm(0,0.1) 
}"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47758236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档