我正在维护一个软件包,该软件包使用Polya-Gamma潜变量技术使用BayesLogit
进行贝叶斯逻辑回归,并从Markov Chain-Monte Carlo(MCMC)返回样本。 BayesLogit
不再位于CRAN上,我可以使用
install_version("BayesLogit", version = "0.6")
但是这种破解将阻止我的软件包提交给CRAN。 source code最近一次更新是在一年前,所以我认为它不会返回CRAN。
我发现another package使用相似的语法执行相同的操作。但是该软件包也不在CRAN上,而是与
一起安装devtools::install_github("kasparmartens/PolyaGamma")
CRAN软件包是否使用Polya-Gamma方案实现贝叶斯逻辑回归并返回MCMC样本?
答案 0 :(得分:2)
我和同事的处境相似(我们依赖BayesLogit的一个程序包,最终被存档了),因此我们决定将为MATLAB开发的C ++ Polya-Gamma采样器实现打包为R程序包。当前在CRAN上以软件包pgdraw的形式出现。从我们的测试来看,它实际上甚至比原始的BayesLogit包还要快。
答案 1 :(得分:0)
我们决定使用RStan,因为它已经在CRAN上,并且已在软件包的另一部分中使用过。与Polya-Gamma方案相比,我们更喜欢CRAN上实现贝叶斯回归的方案。
Stan文件包含:
// Code for 0-1 loss Bayes Logistic Regression model
data {
int<lower=0> n; // number of observations
int<lower=0> p; // number of covariates
matrix[n,p] x; // Matrix of covariates
int<lower=0,upper=1> y[n]; // Responses
real<lower=0> beta_sd; // Stdev of beta
}
parameters {
vector[p] beta;
}
model {
beta ~ normal(0,beta_sd);
y ~ bernoulli_logit(x * beta); // Logistic regression
}
我们称之为:
bayes_log_reg <- rstan::stan(stan_file, data = data, seed = seed,
iter = n_bootstrap * 2, chains = 1)
stan_bayes_sample <- rstan::extract(bayes_log_reg)$beta
有关详细信息,请参见the package vignette。
我意识到,在一般情况下,许多其他软件包都实现了贝叶斯逻辑回归。