Title: | Bayesian Copula Regression |
---|---|
Description: | Tools for Bayesian copula generalized linear models (GLMs). The sampling scheme is based on Pitt, Chan, and Kohn (2006) <doi:10.1093/biomet/93.3.537>. Regression parameters (including coefficients and dispersion parameters) are estimated via the adaptive random walk Metropolis approach developed by Haario, Saksman, and Tamminen (1999) <doi:10.1007/s001800050022>. The prior for the correlation matrix is based on Hoff (2007) <doi:10.1214/07-AOAS107>. |
Authors: | Ethan Alt [aut, cre], Yash Bhosale [aut] |
Maintainer: | Ethan Alt <[email protected]> |
License: | GPL (>= 2) |
Version: | 0.1.3 |
Built: | 2024-11-28 06:48:12 UTC |
Source: | CRAN |
Sample from a GLM via Bayesian copula regression model. Uses random-walk Metropolis to update regression coefficients and dispersion parameters. Assumes Inverse Wishart prior on augmented data.
bayescopulaglm( formula.list, family.list, data, histdata = NULL, b0 = NULL, c0 = NULL, alpha0 = NULL, gamma0 = NULL, Gamma0 = NULL, S0beta = NULL, sigma0logphi = NULL, v0 = NULL, V0 = NULL, beta0 = NULL, phi0 = NULL, M = 10000, burnin = 2000, thin = 1, adaptive = TRUE )
bayescopulaglm( formula.list, family.list, data, histdata = NULL, b0 = NULL, c0 = NULL, alpha0 = NULL, gamma0 = NULL, Gamma0 = NULL, S0beta = NULL, sigma0logphi = NULL, v0 = NULL, V0 = NULL, beta0 = NULL, phi0 = NULL, M = 10000, burnin = 2000, thin = 1, adaptive = TRUE )
formula.list |
A |
family.list |
A |
data |
A |
histdata |
Optional historical data set for power prior on |
b0 |
Optional power prior hyperparameter. Ignored if |
c0 |
A |
alpha0 |
A |
gamma0 |
A |
Gamma0 |
Initial value for correlation matrix. If |
S0beta |
A |
sigma0logphi |
A |
v0 |
An integer scalar giving degrees of freedom for Inverse Wishart prior. If |
V0 |
An integer giving inverse scale parameter for Inverse Wishart prior. If |
beta0 |
A |
phi0 |
A |
M |
Number of desired posterior samples after burn-in and thinning |
burnin |
burn-in parameter |
thin |
post burn-in thinning parameter |
adaptive |
logical indicating whether to use adaptive random walk MCMC to estimate parameters. This takes longer, but generally has a better acceptance rate |
A named list.
["betasample"]
gives a -dimensional list of sampled coefficients as matrices.
["phisample"]
gives a matrix of sampled dispersion parameters.
["Gammasample"]
gives a array of sampled correlation matrices.
["betaaccept"]
gives a matrix where each row indicates whether the proposal for the regression coefficient was accepted.
["phiaccept"]
gives a matrix where each row indicates whether the proposal for the dispersion parameter was accepted
set.seed(1234) n <- 100 M <- 100 x <- runif(n, 1, 2) y1 <- 0.25 * x + rnorm(100) y2 <- rpois(n, exp(0.25 * x)) formula.list <- list(y1 ~ 0 + x, y2 ~ 0 + x) family.list <- list(gaussian(), poisson()) data = data.frame(y1, y2, x) ## Perform copula regression sampling with default ## (noninformative) priors sample <- bayescopulaglm( formula.list, family.list, data, M = M, burnin = 0, adaptive = F ) ## Regression coefficients summary(do.call(cbind, sample$betasample)) ## Dispersion parameters summary(sample$phisample) ## Posterior mean correlation matrix apply(sample$Gammasample, c(1,2), mean) ## Fraction of accepted betas colMeans(sample$betaaccept) ## Fraction of accepted dispersion parameters colMeans(sample$phiaccept)
set.seed(1234) n <- 100 M <- 100 x <- runif(n, 1, 2) y1 <- 0.25 * x + rnorm(100) y2 <- rpois(n, exp(0.25 * x)) formula.list <- list(y1 ~ 0 + x, y2 ~ 0 + x) family.list <- list(gaussian(), poisson()) data = data.frame(y1, y2, x) ## Perform copula regression sampling with default ## (noninformative) priors sample <- bayescopulaglm( formula.list, family.list, data, M = M, burnin = 0, adaptive = F ) ## Regression coefficients summary(do.call(cbind, sample$betasample)) ## Dispersion parameters summary(sample$phisample) ## Posterior mean correlation matrix apply(sample$Gammasample, c(1,2), mean) ## Fraction of accepted betas colMeans(sample$betaaccept) ## Fraction of accepted dispersion parameters colMeans(sample$phiaccept)
Sample from the predictive posterior density of a copula generalized linear model regression
## S3 method for class 'bayescopulaglm' predict(object, newdata, nsims = 1, ...)
## S3 method for class 'bayescopulaglm' predict(object, newdata, nsims = 1, ...)
object |
Result from calling |
newdata |
|
nsims |
number of posterior draws to take. The default and minimum is 1. The maximum is the number of simulations in |
... |
further arguments passed to or from other methods |
array
of dimension c(n, J, nsims)
of predicted values, where J
is the number of endpoints
set.seed(1234) n <- 100 M <- 1000 x <- runif(n, 1, 2) y1 <- 0.25 * x + rnorm(100) y2 <- rpois(n, exp(0.25 * x)) formula.list <- list(y1 ~ 0 + x, y2 ~ 0 + x) family.list <- list(gaussian(), poisson()) data = data.frame(y1, y2, x) ## Perform copula regression sampling with default ## (noninformative) priors sample <- bayescopulaglm( formula.list, family.list, data, M = M ) predict(sample, newdata = data)
set.seed(1234) n <- 100 M <- 1000 x <- runif(n, 1, 2) y1 <- 0.25 * x + rnorm(100) y2 <- rpois(n, exp(0.25 * x)) formula.list <- list(y1 ~ 0 + x, y2 ~ 0 + x) family.list <- list(gaussian(), poisson()) data = data.frame(y1, y2, x) ## Perform copula regression sampling with default ## (noninformative) priors sample <- bayescopulaglm( formula.list, family.list, data, M = M ) predict(sample, newdata = data)