Skip to contents

Bayesian implementation of the MVMR-Egger model with choice of prior distributions fitted using RStan.

Usage

mvmr_egger_stan(
  data,
  prior = 1,
  n.chains = 3,
  n.burn = 1000,
  n.iter = 5000,
  seed = 12345,
  rho = 0.5,
  orientate = 1,
  ...
)

Arguments

data

A data of class mvmr_format.

prior

An integer for selecting the prior distributions;

  • 1 selects a non-informative set of priors;

  • 2 selects weakly informative priors;

  • 3 selects a pseudo-horseshoe prior on the causal effect;

n.chains

Numeric indicating the number of chains used in the HMC estimation in rstan, the default is 3 chains.

n.burn

Numeric indicating the burn-in period of the Bayesian HMC estimation. The default is 1000 samples.

n.iter

Numeric indicating the number of iterations in the Bayesian HMC estimation. The default is 5000 iterations.

seed

Numeric indicating the random number seed. The default is 12345.

rho

Numeric indicating the correlation coefficient input into the joint prior distribution. The default is 0.5.

orientate

Numeric value to indicate the oriented exposure.

...

Additional arguments passed through to rstan::sampling().

Value

An object of class rstan::stanfit.

References

Bowden J, Davey Smith G, Burgess S. Mendelian randomization with invalid instruments: effect estimation and bias detection through Egger regression. International Journal of Epidemiology, 2015, 44, 2, 512-525. doi:10.1093/ije/dyv080 .

Stan Development Team (2020). "RStan: the R interface to Stan." R package version 2.19.3, https://mc-stan.org/.

Examples

if (requireNamespace("rstan", quietly = TRUE)) {
# Note we recommend setting n.burn and n.iter to larger values
dat <- mvmr_format(
  rsid = dodata$rsid,
  xbeta = cbind(dodata$ldlcbeta,dodata$hdlcbeta,dodata$tgbeta),
  ybeta = dodata$chdbeta,
  xse = cbind(dodata$ldlcse,dodata$hdlcse,dodata$tgse),
  yse = dodata$chdse
)
suppressWarnings(mvegger_fit <- mvmr_egger_stan(dat, n.burn = 500, n.iter = 1000, refresh = 0L))
print(mvegger_fit)
}
#> Inference for Stan model: mvmregger.
#> 3 chains, each with iter=1000; warmup=500; thin=1; 
#> post-warmup draws per chain=500, total post-warmup draws=1500.
#> 
#>                mean se_mean   sd    2.5%     25%     50%     75%   97.5% n_eff
#> intercept     -0.01    0.00 0.00   -0.01   -0.01   -0.01    0.00    0.00  1287
#> estimate[1]    0.53    0.00 0.07    0.38    0.48    0.52    0.58    0.67   928
#> estimate[2]   -0.10    0.00 0.06   -0.23   -0.14   -0.10   -0.06    0.02   895
#> estimate[3]    0.33    0.00 0.08    0.18    0.28    0.33    0.38    0.48  1009
#> sigma          1.46    0.00 0.08    1.31    1.41    1.46    1.51    1.63   978
#> lp__        -161.84    0.07 1.66 -166.00 -162.80 -161.51 -160.59 -159.63   571
#>             Rhat
#> intercept      1
#> estimate[1]    1
#> estimate[2]    1
#> estimate[3]    1
#> sigma          1
#> lp__           1
#> 
#> Samples were drawn using NUTS(diag_e) at Mon Aug 19 14:09:25 2024.
#> For each parameter, n_eff is a crude measure of effective sample size,
#> and Rhat is the potential scale reduction factor on split chains (at 
#> convergence, Rhat=1).