Skip to content

Commit b9e7745

Browse files
committed
add draws formats from posterior package
closes #540
1 parent afd4eb8 commit b9e7745

File tree

3 files changed

+106
-0
lines changed

3 files changed

+106
-0
lines changed

DESCRIPTION

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ Imports:
4141
loo (>= 2.1.0),
4242
Matrix (>= 1.2-13),
4343
nlme (>= 3.1-124),
44+
posterior,
4445
rstan (>= 2.21.1),
4546
rstantools (>= 2.1.0),
4647
shinystan (>= 2.3.0),

NAMESPACE

+18
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ S3method(as.array,stanreg)
55
S3method(as.data.frame,stanreg)
66
S3method(as.data.frame,summary.stanreg)
77
S3method(as.matrix,stanreg)
8+
S3method(as_draws,stanreg)
9+
S3method(as_draws_array,stanreg)
10+
S3method(as_draws_df,stanreg)
11+
S3method(as_draws_list,stanreg)
12+
S3method(as_draws_matrix,stanreg)
13+
S3method(as_draws_rvars,stanreg)
814
S3method(bayes_R2,stanreg)
915
S3method(coef,stanmvreg)
1016
S3method(coef,stanreg)
@@ -94,6 +100,12 @@ S3method(waic,stanreg)
94100
export(R2)
95101
export(Surv)
96102
export(VarCorr)
103+
export(as_draws)
104+
export(as_draws_array)
105+
export(as_draws_df)
106+
export(as_draws_list)
107+
export(as_draws_matrix)
108+
export(as_draws_rvars)
97109
export(bayes_R2)
98110
export(cauchy)
99111
export(compare_models)
@@ -244,6 +256,12 @@ importFrom(loo,waic)
244256
importFrom(loo,waic.function)
245257
importFrom(loo,waic.matrix)
246258
importFrom(nlme,VarCorr)
259+
importFrom(posterior,as_draws)
260+
importFrom(posterior,as_draws_array)
261+
importFrom(posterior,as_draws_df)
262+
importFrom(posterior,as_draws_list)
263+
importFrom(posterior,as_draws_matrix)
264+
importFrom(posterior,as_draws_rvars)
247265
importFrom(rstan,constrain_pars)
248266
importFrom(rstan,extract)
249267
importFrom(rstan,extract_sparse_parts)

R/draws.R

+87
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
#' Create a \code{draws} object from a \code{stanreg} object
2+
#'
3+
#' Convert a \code{stanreg} object to a format supported by the \pkg{posterior}
4+
#' package. To subset iterations, chains, or draws, use
5+
#' \code{\link[posterior:subset_draws]{subset_draws}} after making the
6+
#' \code{draws} object.
7+
#'
8+
#' @name draws-stanreg
9+
#' @aliases as_draws as_draws_matrix as_draws_array as_draws_df as_draws_rvars as_draws_list
10+
#'
11+
#' @param x A \code{stanreg} object.
12+
#' @param pars,regex_pars See \code{\link{as.matrix.stanreg}}.
13+
#' @param ... Arguments passed to individual methods.
14+
#'
15+
#' @examples
16+
#' fit <- stan_glm(mpg ~ wt + cyl, data = mtcars)
17+
#' head(as_draws_df(fit))
18+
#' posterior <- as_draws_array(fit)
19+
#' posterior::summarize_draws(posterior)
20+
#'
21+
#' as_draws_array(fit, variable = c("wt", "sigma"))
22+
#'
23+
NULL
24+
25+
#' @rdname draws-stanreg
26+
#' @importFrom posterior as_draws
27+
#' @method as_draws stanreg
28+
#' @export
29+
#' @export as_draws
30+
as_draws.stanreg <- function(x, pars = NULL, regex_pars = NULL, ...) {
31+
as_draws_array(x, pars = pars, regex_pars = regex_pars, ...)
32+
}
33+
34+
#' @rdname draws-stanreg
35+
#' @importFrom posterior as_draws_matrix
36+
#' @method as_draws_matrix stanreg
37+
#' @export
38+
#' @export as_draws_matrix
39+
as_draws_matrix.stanreg <- function(x, pars = NULL, regex_pars = FALSE, ...) {
40+
posterior::as_draws_matrix(
41+
as.matrix.stanreg(x, pars = pars, regex_pars = regex_pars, ...)
42+
)
43+
}
44+
45+
#' @rdname draws-stanreg
46+
#' @importFrom posterior as_draws_array
47+
#' @method as_draws_array stanreg
48+
#' @export
49+
#' @export as_draws_array
50+
as_draws_array.stanreg <- function(x, pars = NULL, regex_pars = FALSE, ...) {
51+
posterior::as_draws_array(
52+
as.array.stanreg(x, pars = pars, regex_pars = regex_pars, ...)
53+
)
54+
}
55+
56+
#' @rdname draws-stanreg
57+
#' @importFrom posterior as_draws_df
58+
#' @method as_draws_df stanreg
59+
#' @export
60+
#' @export as_draws_df
61+
as_draws_df.stanreg <- function(x, pars = NULL, regex_pars = FALSE, ...) {
62+
posterior::as_draws_df(
63+
as.array.stanreg(x, pars = pars, regex_pars = regex_pars, ...)
64+
)
65+
}
66+
67+
#' @rdname draws-stanreg
68+
#' @importFrom posterior as_draws_list
69+
#' @method as_draws_list stanreg
70+
#' @export
71+
#' @export as_draws_list
72+
as_draws_list.stanreg <- function(x, pars = NULL, regex_pars = FALSE, ...) {
73+
posterior::as_draws_list(
74+
as.array.stanreg(x, pars = pars, regex_pars = regex_pars, ...)
75+
)
76+
}
77+
78+
#' @rdname draws-stanreg
79+
#' @importFrom posterior as_draws_rvars
80+
#' @method as_draws_rvars stanreg
81+
#' @export
82+
#' @export as_draws_rvars
83+
as_draws_rvars.stanreg <- function(x, pars = NULL, regex_pars = FALSE, ...) {
84+
posterior::as_draws_rvars(
85+
as.array.stanreg(x, pars = pars, regex_pars = regex_pars, ...)
86+
)
87+
}

0 commit comments

Comments
 (0)