Learn R Programming

rstan (version 2.9.0-3)

as.array: Create array, matrix, or data.frame objects from samples in a stanfit object

Description

The samples without warmup included in a stanfit object can be coerced to array, matrix, or data.frame

Usage

## S3 method for class 'stanfit':
as.array(x, \dots) 
  ## S3 method for class 'stanfit':
as.matrix(x, \dots)
  ## S3 method for class 'stanfit':
as.data.frame(x, \dots)
  ## S3 method for class 'stanfit':
is.array(x) 
  ## S3 method for class 'stanfit':
dim(x)
  ## S3 method for class 'stanfit':
dimnames(x)
  ## S3 method for class 'stanfit':
names(x)
  ## S3 method for class 'stanfit':
names(x) <- value

Arguments

x
An object of S4 class stanfit
...
Additional parameters that can be passed to extract for extracting samples from stanfit object. For now, pars is the only additional parameter.
value
A character vector to set/replace the parameter names in the stanfit object.

Value

  • as.array, as.matrix, and as.data.frame return an array, matrix, or data.frame of samples respectively.

    dim and dimnames return the dim and dimnames of the array object that could be created, while names returns the third element of the dimnames, which are the names of the margins of the posterior distribution. The names assignment method allows for assigning more interpretable names to them.

    is.array returns TRUE for stanfit objects that include samples; otherwise FALSE.

    When the stanfit object does not contain samples, empty objects are returned from as.array, as.matrix, as.data.frame, dim, dimnames, and names.

Details

as.array and as.matrix can be applied to a stanfit object to coerce the samples without warmup to array or matrix. The as.data.frame method first calls as.matrix and then coerces this matrix to a data.frame.

The array has three named dimensions: iterations, chains, parameters. For as.matrix, all chains are combined, leaving a matrix of iterations by parameters.

See Also

S4 class stanfit and its method extract

Examples

Run this code
ex_model_code <- '
  parameters {
    real alpha[2,3];
    real beta[2]; 
  } 
  model {
    for (i in 1:2) for (j in 1:3) 
      alpha[i, j] ~ normal(0, 1); 
    for (i in 1:2) 
      beta[i] ~ normal(0, 2); 
    # beta ~ normal(0, 2) // vectorized version
  } 
'

## fit the model 
fit <- stan(model_code = ex_model_code, chains = 4) 

dim(fit)
dimnames(fit)
is.array(fit) 
a <- as.array(fit)
m <- as.matrix(fit)
d <- as.data.frame(fit)

Run the code above in your browser using DataLab