通过Polya-Gamma方案进行贝叶斯逻辑回归的CRAN软件包

时间:2019-02-13 14:35:07

标签: r logistic-regression bayesian

我正在维护一个软件包,该软件包使用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样本?

2 个答案:

答案 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

我意识到,在一般情况下,许多其他软件包都实现了贝叶斯逻辑回归。