Skip to contents

Constructs a mapper that transforms the marginal distribution state from \(\textrm{N}(0,1)\) to the distribution of a given (continuous) quantile function. The ... arguments are used as parameter arguments to qfun, pfun, dfun, and dqfun.

Usage

bru_mapper_marginal(
  qfun,
  pfun = NULL,
  dfun = NULL,
  dqfun = NULL,
  ...,
  inverse = FALSE
)

# S3 method for class 'bru_mapper_marginal'
ibm_n(mapper, ..., state = NULL, n_state = NULL)

# S3 method for class 'bru_mapper_marginal'
ibm_n_output(mapper, input, state = NULL, ..., n_state = NULL)

# S3 method for class 'bru_mapper_marginal'
ibm_values(mapper, ..., state = NULL, n_state = NULL)

# S3 method for class 'bru_mapper_marginal'
ibm_jacobian(mapper, input, state = NULL, ..., reverse = FALSE)

# S3 method for class 'bru_mapper_marginal'
ibm_eval(mapper, input, state = NULL, ..., reverse = FALSE)

Arguments

qfun

A quantile function, supporting lower.tail and log.p arguments, like stats::qnorm().

pfun

A CDF, supporting lower.tail and log.p arguments, like stats::pnorm(). Only needed and used when xor(mapper[["inverse"]], reverse) is TRUE in a method call. Default NULL

dfun

A pdf, supporting log argument, like stats::dnorm(). If NULL (default), uses finite differences on qfun or pfun instead.

dqfun

A function evaluating the reciprocal of the derivative of qfun. If NULL (default), uses dfun(qfun(...),...) or finite differences on qfun or pfun instead.

...

Arguments passed on to other methods

inverse

logical; If FALSE (default), bru_mapper_marginal() defines a mapping from standard Normal to a specified distribution. If TRUE, it defines a mapping from the specified distribution to a standard Normal.

mapper

A mapper S3 object, inheriting from bru_mapper.

state

A vector of latent state values for the mapping, of length ibm_n(mapper, inla_f = FALSE)

n_state

integer giving the length of the state vector for mappers that have state dependent output size.

input

Data input for the mapper.

reverse

logical; control bru_mapper_marginal evaluation. Default FALSE. When TRUE, reverses the direction of the mapping, see details for marginal mappers.

Methods (by generic)

  • ibm_jacobian(bru_mapper_marginal): Non-NULL input values are interpreted as a parameter list for qfun, overriding that of the mapper itself.

  • ibm_eval(bru_mapper_marginal): When xor(mapper[["inverse"]], reverse) is FALSE, ibm_eval() for marginal returns qfun(pnorm(x), param), evaluated in a numerically stable way. Otherwise, evaluates the inverse qnorm(pfun(x, param)) instead.

Examples

m <- bru_mapper_marginal(qexp, pexp, rate = 1 / 8)
(val <- ibm_eval(m, state = -5:5))
#>  [1] 2.293213e-06 2.533739e-04 1.080648e-02 1.841033e-01 1.382030e+00
#>  [6] 5.545177e+00 1.472817e+01 3.026547e+01 5.286181e+01 8.288081e+01
#> [11] 1.205200e+02
ibm_eval(m, state = val, reverse = TRUE)
#>  [1] -5 -4 -3 -2 -1  0  1  2  3  4  5
m <- bru_mapper_marginal(qexp, pexp, dexp, rate = 1 / 8)
ibm_eval2(m, state = -3:3)
#> $offset
#> [1]  0.01080648  0.18410327  1.38203023  5.54517744 14.72817316 30.26547467
#> [7] 52.86180977
#> 
#> $jacobian
#> 7 x 7 diagonal matrix of class "ddiMatrix"
#>      [,1]       [,2]      [,3]   [,4]     [,5]     [,6]     [,7]    
#> [1,] 0.03550271         .      .        .        .        .        .
#> [2,]          . 0.4419829      .        .        .        .        .
#> [3,]          .         . 2.3008        .        .        .        .
#> [4,]          .         .      . 6.383076        .        .        .
#> [5,]          .         .      .        . 12.20108        .        .
#> [6,]          .         .      .        .        . 18.98572        .
#> [7,]          .         .      .        .        .        . 26.26479
#>