Skip to content

BMIselect

Bayesian MI-LASSO for Variable Selection on Multiply-Imputed Datasets

v1.0.3 · Aug 25, 2025 · Apache License (>= 2)

Description

Provides a suite of Bayesian MI-LASSO for variable selection methods for multiply-imputed datasets. The package includes four Bayesian MI-LASSO models using shrinkage (Multi-Laplace, Horseshoe, ARD) and Spike-and-Slab (Spike-and-Laplace) priors, along with tools for model fitting via MCMC, four-step projection predictive variable selection, and hyperparameter calibration. Methods are suitable for both continuous and binary covariates under missing-at-random or missing-completely-at-random assumptions. See Zou, J., Wang, S. and Chen, Q. (2025), Bayesian MI-LASSO for Variable Selection on Multiply-Imputed Data. ArXiv, 2211.00114. <doi:10.48550/arXiv.2211.00114> for more details. We also provide the frequentist`s MI-LASSO function.

Downloads

504

Last 30 days

7267th

919

Last 90 days

919

Last year

Trend: +21.5% (30d vs prior 30d)

CRAN Check Status

1 ERROR
13 OK
Show all 14 flavors
Flavor Status
r-devel-linux-x86_64-debian-clang OK
r-devel-linux-x86_64-debian-gcc OK
r-devel-linux-x86_64-fedora-clang OK
r-devel-linux-x86_64-fedora-gcc OK
r-devel-macos-arm64 ERROR
r-devel-windows-x86_64 OK
r-oldrel-macos-arm64 OK
r-oldrel-macos-x86_64 OK
r-oldrel-windows-x86_64 OK
r-patched-linux-x86_64 OK
r-release-linux-x86_64 OK
r-release-macos-arm64 OK
r-release-macos-x86_64 OK
r-release-windows-x86_64 OK
Check details (14 non-OK)
OK r-devel-linux-x86_64-debian-clang

*


            
OK r-devel-linux-x86_64-debian-gcc

*


            
OK r-devel-linux-x86_64-fedora-clang

*


            
OK r-devel-linux-x86_64-fedora-gcc

*


            
ERROR r-devel-macos-arm64

re-building of vignette outputs

Error(s) in re-building vignettes:
--- re-building ‘Introduction.Rmd’ using rmarkdown

 *** caught segfault ***
address 0x110, cause 'invalid permissions'

 *** caught segfault ***
address 0x110, cause 'invalid permissions'

Traceback:
 1: H_update_beta(X, Y, XtX, alpha, lambda2, tau2, sigma2)
 2: horseshoe_mcmc(X, Y, intercept = !standardize, nburn = nburn,     npost = npost, seed = seed_chain, verbose = output_verbose,     printevery = printevery, chain_index = chain)
 3: eval(c.expr, envir = args, enclos = envir)
 4: eval(c.expr, envir = args, enclos = envir)
 5: doTryCatch(return(expr), name, parentenv, handler)
 6: tryCatchOne(expr, names, parentenv, handlers[[1L]])
 7: tryCatchList(expr, classes, parentenv, handlers)
 8: tryCatch(eval(c.expr, envir = args, enclos = envir), error = function(e) e)
 9: FUN(X[[i]], ...)

Traceback:
 1: H_update_beta(X, Y, XtX, alpha, lambda2, tau2, sigma2)
 2: horseshoe_mcmc(X, Y, intercept = !standardize, nburn = nburn,     npost = npost, seed = seed_chain, verbose = output_verbose,     printevery = printevery, chain_index = chain)
 3: 10: lapply(X = S, FUN = FUN, ...)
11: doTryCatch(return(expr), name, parentenv, handler)
12: eval(c.expr, envir = args, enclos = envir)
 4: tryCatchOne(expr, names, parentenv, handlers[[1L]])
13: tryCatchList(expr, classes, parentenv, handlers)
14: tryCatch(expr, error = function(e) {    call <- conditionCall(e)    if (!is.null(call)) {        if (identical(call[[1L]], quote(doTryCatch)))             call <- sys.call(-4L)        dcall <- deparse(call, nlines = 1L)        prefix <- paste("Error in", dcall, ": ")        LONG <- 75L        sm <- strsplit(conditionMessage(e), "\n")[[1L]]        w <- 14L + nchar(dcall, type = "w") + nchar(sm[1L], type = "w")        if (is.na(w))             w <- 14L + nchar(dcall, type = "b") + nchar(sm[1L],                 type = "b")        if (w > LONG)             prefix <- paste0(prefix, "\n  ")    }    else prefix <- "Error : "    msg <- paste0(prefix, conditionMessage(e), "\n")    .Internal(seterrmessage(msg[1L]))    if (!silent && isTRUE(getOption("show.error.messages"))) {        cat(msg, file = outFile)        .Internal(printDeferredWarnings())    }    invisible(structure(msg, class = "try-error", condition = e))})
15: try(lapply(X = S, FUN = FUN, ...), silent = TRUE)
16: sendMaster(try(lapply(X = S, FUN = FUN, ...), silent = TRUE))
17: FUN(X[[i]], ...)
18: lapply(seq_len(cores), inner.do)
19: mclapply(argsList, FUN, mc.preschedule = preschedule, mc.set.seed = set.seed,     mc.silent = silent, mc.cores = cores)
20: e$fun(obj, substitute(ex), parent.frame(), e$data)
21: eval(c.expr, envir = args, enclos = envir)
 5: doTryCatch(return(expr), name, parentenv, handler)
 6: tryCatchOne(expr, names, parentenv, handlers[[1L]])
 7: tryCatchList(expr, classes, parentenv, handlers)
 8: tryCatch(eval(c.expr, envir = args, enclos = envir), error = function(e) e)
 9: FUN(X[[i]], ...)
10: lapply(X = S, FUN = FUN, ...)
11: doTryCatch(return(expr), name, parentenv, handler)
12: foreach::foreach(chain = 1:nchains, .combine = list, .multicombine = TRUE,     .maxcombine = ifelse(nchains >= 2, nchains, 2)) %dopar% {    seed_chain = if (!is.null(seed))         seed + chain    else NULL    return(switch(model, Multi_Laplace = {        multi_laplace_mcmc(X, Y, intercept = !standardize, h = extra_parameters$h,             v = extra_parameters$v, nburn = nburn, npost = npost,             seed = seed_chain, verbose = output_verbose, printevery = printevery,             chain_index = chain)tryCatchOne(expr, names, parentenv, handlers[[1L]])
13: tryCatchList(expr, classes, parentenv, handlers)    }, Horseshoe = {        horseshoe_mcmc(X, Y, intercept = !standardize, nburn = nburn,             npost = npost, seed = seed_chain, verbose = output_verbose,             printevery = printevery, chain_index = chain)
14: tryCatch(expr, error = function(e) {    call <- conditionCall(e)    if (!is.null(call)) {        if (identical(call[[1L]], quote(doTryCatch)))             call <- sys.call(-4L)        dcall <- deparse(call, nlines = 1L)        prefix <- paste("Error in", dcall, ": ")        LONG <- 75L        sm <- strsplit(conditionMessage(e), "\n")[[1L]]        w <- 14L + nchar(dcall, type = "w") + nchar(sm[1L], type = "w")        if (is.na(w))             w <- 14L + nchar(dcall, type = "b") + nchar(sm[1L],                 type = "b")        if (w > LONG)             prefix <- paste0(prefix, "\n  ")    }, ARD = {        ARD_mcmc(X, Y, intercept = !standardize, nburn = nburn,             npost = npost, seed = seed_chain, verbose = output_verbose,             printevery = printevery, chain_index = chain)    }    else prefix <- "Error : "    msg <- paste0(prefix, conditionMessage(e), "\n")    .Internal(seterrmessage(msg[1L]))    if (!silent && isTRUE(getOption("show.error.messages"))) {        cat(msg, file = outFile)        .Internal(printDeferredWarnings())    }    invisible(structure(msg, class = "try-error", condition = e))})
15: try(lapply(X = S, FUN = FUN, ...), silent = TRUE)
16: sendMaster(try(lapply(X = S, FUN = FUN, ...), silent = TRUE))
17: FUN(X[[i]], ...)
18: lapply(seq_len(cores), inner.do)
    }, Spike_Laplace = {        spike_laplace_partially_mcmc(X, Y, intercept = !standardize,             a = extra_parameters$a, b = extra_parameters$b, nburn = nburn, 19: mclapply(argsList, FUN, mc.preschedule = preschedule, mc.set.seed = set.seed,     mc.silent = silent, mc.cores = cores)
20: e$fun(obj, substitute(ex), parent.frame(), e$data)            npost = npost, seed = seed_chain, verbose = output_verbose,             printevery = printevery, chain_index = chain)    }))
21: foreach::foreach(chain = 1:nchains, .combine = list, .multicombine = TRUE, }
22:     .maxcombine = ifelse(nchains >= 2, nchains, 2)) %dopar% {    seed_chain = if (!is.null(seed))         seed + chainwithCallingHandlers(expr, warning = function(w) if (inherits(w,     classes)) tryInvokeRestart("muffleWarning"))
    else NULL    return(switch(model, Multi_Laplace = {        multi_laplace_mcmc(X, Y, intercept = !standardize, h = extra_parameters$h, 23: suppressWarnings(foreach::foreach(chain = 1:nchains, .combine = list,     .multicombine = TRUE, .maxcombine = ifelse(nchains >= 2,             v = extra_parameters$v, nburn = nburn, npost = npost,             seed = seed_chain, verbose = output_verbose, printevery = printevery,             chain_index = chain)    }, Horseshoe = {        horseshoe_mcmc(X, Y, intercept = !standardize, nburn = nburn,             npost = npost, seed = seed_chain, verbose = output_verbose,             printevery = printevery, chain_index = chain)    }, ARD = {        ARD_mcmc(X, Y, intercept = !standardize, nburn = nburn,             npost = npost, seed = seed_chain, verbose = output_verbose,             printevery = printevery, chain_index = chain)    }, Spike_Laplace = {        nchains, 2)) %dopar% {    seed_chain = if (!is.null(seed))         seed + chain        spike_laplace_partially_mcmc(X, Y, intercept = !standardize,             a = extra_parameters$a, b = extra_parameters$b, nburn = nburn,             npost = npost, seed = seed_chain, verbose = output_verbose,             printevery = printevery, chain_index = chain)    }))}    else NULL    return(switch(model, Multi_Laplace = {        multi_laplace_mcmc(X, Y, intercept = !standardize, h = extra_parameters$h, 
22: withCallingHandlers(expr, warning = function(w) if (inherits(w,             v = extra_parameters$v, nburn = nburn, npost = npost,             seed = seed_chain, verbose = output_verbose, printevery = printevery,             chain_index = chain)    classes)) tryInvokeRestart("muffleWarning"))
23:     }, Horseshoe = {        horseshoe_mcmc(X, Y, intercept = !standardize, nburn = nburn,             npost = npost, seed = seed_chain, verbose = output_verbose, suppressWarnings(foreach::foreach(chain = 1:nchains, .combine = list,     .multicombine = TRUE, .maxcombine = ifelse(nchains >= 2,         nchains, 2)) %dopar% {    seed_chain = if (!is.null(seed))         seed + chain    else NULL    return(switch(model, Multi_Laplace = {        multi_laplace_mcmc(X, Y, intercept = !standardize, h = extra_parameters$h,             v = extra_parameters$v, nburn = nburn, npost = npost,             seed = seed_chain, verbose = output_verbose, printevery = printevery,             chain_index = chain)    }, Horseshoe = {        horseshoe_mcmc(X, Y, intercept = !standardize, nburn = nburn,             npost = npost, seed = seed_chain, verbose = output_verbose,             printevery = printevery, chain_index = chain)    }, ARD = {        ARD_mcmc(X, Y, intercept = !standardize, nburn = nburn,             printevery = printevery, chain_index = chain)    }, ARD = {        ARD_mcmc(X, Y, intercept = !standardize, nburn = nburn,             npost = npost, seed = seed_chain, verbose = output_verbose,             printevery = printevery, chain_index = chain)    }, Spike_Laplace = {        spike_laplace_partially_mcmc(X, Y, intercept = !standardize,             a = extra_parameters$a, b = extra_parameters$b, nburn = nburn,             npost = npost, seed = seed_chain, verbose = output_verbose,             printevery = printevery, chain_index = chain)    }, Spike_Laplace = {        spike_laplace_partially_mcmc(X, Y, intercept = !standardize,             a = extra_parameters$a, b = extra_parameters$b, nburn = nburn,             npost = npost, seed = seed_chain, verbose = output_verbose,             npost = npost, seed = seed_chain, verbose = output_verbose,             printevery = printevery, chain_index = chain)    }))})
24: BMI_LASSO(data$data_MI$X, data$data_MI$Y, model = "Horseshoe",     nburn = 4000, npost = 4000, output_verbose = FALSE, nchains = 2,     ncores = 2, seed = seed)
25: eval(expr, envir)            printevery = printevery, chain_index = chain)    }))})
24: BMI_LASSO(data$data_MI$X, data$data_MI$Y, model = "Horseshoe",     nburn = 4000, npost = 4000, output_verbose = FALSE, nchains = 2,     ncores = 2, seed = seed)
25: eval(expr, envir)

26: eval(expr, envir)26: eval(expr, envir)

27: withVisible(eval(expr, envir))
28: withCallingHandlers(code, error = function (e) rlang::entrace(e), message = function (cnd) {    watcher$capture_plot_and_output()    if (on_message$capture) {        watcher$push(cnd)    }    if (on_message$silence) {        invokeRestart("muffleMessage")    }}, warning = function (cnd) {    if (getOption("warn") >= 2 || getOption("warn") < 0) {        return()    }    watcher$capture_plot_and_output()27: withVisible(eval(expr, envir))
    if (on_warning$capture) {        cnd <- sanitize_call(cnd)        watcher$push(cnd)28: withCallingHandlers(code, error = function (e) rlang::entrace(e), message = function (cnd)     }    if (on_warning$silence) {        invokeRestart("muffleWarning"){    watcher$capture_plot_and_output()    if (on_message$capture) {    }}, error = function (cnd) {        watcher$push(cnd)    }    if (on_message$silence) {        invokeRestart("muffleMessage")    }}, warning = function (cnd) {    if (getOption("warn") >= 2 || getOption("warn") < 0) {        return()    watcher$capture_plot_and_output()    cnd <- sanitize_call(cnd)    watcher$push(cnd)    switch(on_error, continue = invokeRestart("eval_continue"),         stop = invokeRestart("eval_stop"), error = NULL)})    }    watcher$capture_plot_and_output()    if (on_warning$capture) {
29: eval(call)
30: eval(call)        cnd <- sanitize_call(cnd)        watcher$push(cnd)    }
31: with_handlers({    if (on_warning$silence) {        invokeRestart("muffleWarning")    }    for (expr in tle$exprs) {        ev <- withVisible(eval(expr, envir))        watcher$capture_plot_and_output()        watcher$print_value(ev$value, ev$visible, envir)    }    TRUE}, handlers)
32: }, error = function (cnd) {    watcher$capture_plot_and_output()doWithOneRestart(return(expr), restart)
33: withOneRestart(expr, restarts[[1L]])
34: withRestartList(expr, restarts[-nr])
35:     cnd <- sanitize_call(cnd)    watcher$push(cnd)    switch(on_error, continue = invokeRestart("eval_continue"), doWithOneRestart(return(expr), restart)
36:         stop = invokeRestart("eval_stop"), error = NULL)})
withOneRestart(withRestartList(expr, restarts[-nr]), restarts[[nr]])
37: 29: eval(call)
30: eval(call)
withRestartList(expr, restarts)
38: withRestarts(with_handlers({    for (expr in tle$exprs) {        ev <- withVisible(eval(expr, envir))        watcher$capture_plot_and_output()        watcher$print_value(ev$value, ev$visible, envir)    }    TRUE}, handlers), eval_continue = function() TRUE, eval_stop = function() FALSE)
39: evaluate::evaluate(...)
40: 31: with_handlers({    for (expr in tle$exprs) {        ev <- withVisible(eval(expr, envir))        watcher$capture_plot_and_output()        watcher$print_value(ev$value, ev$visible, envir)    }    TRUE}, handlers)
32: doWithOneRestart(return(expr), restart)
33: evaluate(code, envir = env, new_device = FALSE, keep_warning = if (is.numeric(options$warning)) TRUE else options$warning,     keep_message = if (is.numeric(options$message)) TRUE else options$message,     stop_on_error = if (is.numeric(options$error)) options$error else {        if (options$error && options$include)             0L        else 2L    }, output_handler = knit_handlers(options$render, options))
41: in_dir(input_dir(), expr)
42: withOneRestart(expr, restarts[[1L]])
34: withRestartList(expr, restarts[-nr])
35: doWithOneRestart(return(expr), restart)
36: in_input_dir(evaluate(code, envir = env, new_device = FALSE,     keep_warning = if (is.numeric(options$warning)) TRUE else options$warning,     keep_message = if (is.numeric(options$message)) TRUE else options$message, withOneRestart(withRestartList(expr, restarts[-nr]), restarts[[nr]])
37:     stop_on_error = if (is.numeric(options$error)) options$error else {        if (options$error && options$include)             0L        else 2L    }, output_handler = knit_handlers(options$render, options)))
withRestartList(expr, restarts)
38: 43: eng_r(options)
withRestarts(with_handlers({    for (expr in tle$exprs) {        ev <- withVisible(eval(expr, envir))        watcher$capture_plot_and_output()        watcher$print_value(ev$value, ev$visible, envir)    }44: block_exec(params)
45: call_block(x)
    TRUE}, handlers), eval_continue = function() TRUE, eval_stop = function() FALSE)
46: process_group(group)
47: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),     error = function(e) {39: evaluate::evaluate(...)
        if (progress && is.function(pb$interrupt))             pb$interrupt()        if (is_R_CMD_build() || is_R_CMD_check())             error <<- format(e)    })
40: evaluate(code, envir = env, new_device = FALSE, keep_warning = if (is.numeric(options$warning)) TRUE else options$warning,     keep_message = if (is.numeric(options$message)) TRUE else options$message,     stop_on_error = if (is.numeric(options$error)) options$error else {        if (options$error && options$include)             0L        else 2L    }, output_handler = knit_handlers(options$render, options))
48: with_options(withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),     error = function(e) {41: in_dir(input_dir(), expr)
        if (progress && is.function(pb$interrupt))             pb$interrupt()        if (is_R_CMD_build() || is_R_CMD_check()) 42: in_input_dir(evaluate(code, envir = env, new_device = FALSE,     keep_warning = if (is.numeric(options$warning)) TRUE else options$warning,     keep_message = if (is.numeric(options$message)) TRUE else options$message,     stop_on_error = if (is.numeric(options$error)) options$error else {        if (options$error && options$include)             error <<- format(e)    }), list(rlang_trace_top_env = knit_global()))
            0L        else 2L    }, output_handler = knit_handlers(options$render, options)))49: xfun:::handle_error(with_options(withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),     error = function(e) {        if (progress && is.function(pb$interrupt))             pb$interrupt()        if (is_R_CMD_build() || is_R_CMD_check()) 
43: eng_r(options)            error <<- format(e)    }), list(rlang_trace_top_env = knit_global())), function(loc) {    setwd(wd)
44: block_exec(params)
45: call_block(x)    write_utf8(res, output %n% stdout())    paste0("\nQuitting from ", loc, if (!is.null(error))         paste0("\n", rule(), error, "\n", rule()))}, if (labels[i] != "") sprintf(" [%s]", labels[i]), get_loc)
50: process_file(text, output)
51: knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
52: rmarkdown::render(file, encoding = encoding, quiet = quiet, envir = globalenv(),     output_dir = getwd(), ...)
53: vweave_rmarkdown(...)
46: process_group(group)
47: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),     error = function(e) {        if (progress && is.function(pb$interrupt))             pb$interrupt()        if (is_R_CMD_build() || is_R_CMD_check())             error <<- format(e)    })
48: 
54: engine$weave(file, quiet = quiet, encoding = enc)
55: doTryCatch(return(expr), name, parentenv, handler)with_options(withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),     error = function(e) {        if (progress && is.function(pb$interrupt)) 
56: tryCatchOne(expr, names, parentenv, handlers[[1L]])
57: tryCatchList(expr, classes, parentenv, handlers)            pb$interrupt()        if (is_R_CMD_build() || is_R_CMD_check())             error <<- format(e)
58: tryCatch({    }), list(rlang_trace_top_env = knit_global()))
49:     engine$weave(file, quiet = quiet, encoding = enc)    setwd(startdir)    output <- find_vignette_product(name, by = "weave", engine = engine)xfun:::handle_error(with_options(withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),     error = function(e) {        if (progress && is.function(pb$interrupt))     if (!have.makefile && vignette_is_tex(output)) {        texi2pdf(file = output, clean = FALSE, quiet = quiet)        output <- find_vignette_product(name, by = "texi2pdf",             pb$interrupt()        if (is_R_CMD_build() || is_R_CMD_check())             error <<- format(e)            engine = engine)    }    outputs <- c(outputs, output)}, error = function(e) {    thisOK <<- FALSE    fails <<- c(fails, file)    }), list(rlang_trace_top_env = knit_global())), function(loc) {    setwd(wd)    write_utf8(res, output %n% stdout())    message(gettextf("Error: processing vignette '%s' failed with diagnostics:\n%s",         file, conditionMessage(e)))})    paste0("\nQuitting from ", loc, if (!is.null(error))         paste0("\n", rule(), error, "\n", rule()))}, if (labels[i] != "") sprintf(" [%s]", labels[i]), get_loc)
59: tools::buildVignettes(dir = "/Volumes/Builds/packages/sonoma-arm64/results/4.6/BMIselect.Rcheck/vign_test/BMIselect",     skip = TRUE, ser_elibs = "/Volumes/Temp/tmp/RtmpGsvQRC/file92b255d98505.rds")
An irrecoverable exception occurred. R is aborting now ...

50: process_file(text, output)
51: knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
52: rmarkdown::render(file, encoding = encoding, quiet = quiet, envir = globalenv(),     output_dir = getwd(), ...)
53: vweave_rmarkdown(...)
54: engine$weave(file, quiet = quiet, encoding = enc)
55: doTryCatch(return(expr), name, parentenv, handler)
56: tryCatchOne(expr, names, parentenv, handlers[[1L]])
57: tryCatchList(expr, classes, parentenv, handlers)
58: tryCatch({    engine$weave(file, quiet = quiet, encoding = enc)    setwd(startdir)    output <- find_vignette_product(name, by = "weave", engine = engine)    if (!have.makefile && vignette_is_tex(output)) {        texi2pdf(file = output, clean = FALSE, quiet = quiet)        output <- find_vignette_product(name, by = "texi2pdf",             engine = engine)    }    outputs <- c(outputs, output)}, error = function(e) {    thisOK <<- FALSE    fails <<- c(fails, file)    message(gettextf("Error: processing vignette '%s' failed with diagnostics:\n%s",         file, conditionMessage(e)))})
59: tools::buildVignettes(dir = "/Volumes/Builds/packages/sonoma-arm64/results/4.6/BMIselect.Rcheck/vign_test/BMIselect",     skip = TRUE, ser_elibs = "/Volumes/Temp/tmp/RtmpGsvQRC/file92b255d98505.rds")
An irrecoverable exception occurred. R is aborting now ...

Quitting from Introduction.Rmd:164-171 [unnamed-chunk-6]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<error/rlang_error>
Error in `apply()`:
! dim(X) must have a positive length
---
Backtrace:
    ▆
 1. └─BMIselect::BMI_LASSO(...)
 2.   └─base::lapply(...)
 3.     └─BMIselect (local) FUN(X[[i]], ...)
 4.       └─base::apply(c$post_pool_beta, 2, function(x) mean(abs(x) <= sqrt(stats::var(x))))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Error: processing vignette 'Introduction.Rmd' failed with diagnostics:
dim(X) must have a positive length
--- failed re-building ‘Introduction.Rmd’

SUMMARY: processing the following file failed:
  ‘Introduction.Rmd’

Error: Vignette re-building failed.
Execution halted
OK r-devel-windows-x86_64

*


            
OK r-oldrel-macos-arm64

*


            
OK r-oldrel-macos-x86_64

*


            
OK r-oldrel-windows-x86_64

*


            
OK r-patched-linux-x86_64

*


            
OK r-release-linux-x86_64

*


            
OK r-release-macos-arm64

*


            
OK r-release-macos-x86_64

*


            
OK r-release-windows-x86_64

*


            

Check History

ERROR 13 OK · 0 NOTE · 0 WARNING · 1 ERROR · 0 FAILURE Mar 9, 2026
ERROR r-devel-macos-arm64

re-building of vignette outputs

Error(s) in re-building vignettes:
--- re-building ‘Introduction.Rmd’ using rmarkdown

 *** caught segfault ***
address 0x110, cause 'invalid permissions'

 *** caught segfault ***
address 0x110, cause 'invalid permissions'

Traceback:
 1: H_update_beta(X, Y, XtX, alpha, lambda2, tau2, sigma2)
 2: horseshoe_mcmc(X, Y, intercept = !standardize, nburn = nburn,     npost = npost, seed = seed_chain, verbose = output_verbose,     printevery = printevery, chain_index = chain)
 3: eval(c.expr, envir = 

Dependency Network

Dependencies Reverse dependencies MCMCpack mvnfast GIGrvg MASS Rfast foreach doParallel arm mice abind stringr posterior BMIselect

Version History

new 1.0.3 Mar 10, 2026