Skip to contents

Corre chains cadenas de dl_mh(). La cadena c empieza en theta0 más una perturbación normal de desviación estándar 0.1 en cada coordenada y usa semillas derivadas de seed y de c, así que el resultado es el mismo en serie o en paralelo.

Usage

dl_mh_cadenas(
  lp,
  theta0,
  bloques,
  chains,
  iter,
  warmup,
  seed,
  cores = 1L,
  thin = 1L
)

Arguments

lp

Función de log-posterior: recibe theta y devuelve un número, o -Inf fuera del soporte (la propuesta se rechaza). Basta conocerla salvo una constante.

theta0

Punto inicial: vector numérico (sus nombres son los de las columnas de draws); lp(theta0) debe ser finita.

bloques

Lista de vectores de índices de theta0; los parámetros de un mismo bloque se proponen juntos.

chains

Número de cadenas.

iter

Iteraciones totales, calentamiento incluido.

warmup

Iteraciones de calentamiento: múltiplo de 200 y menor que iter (con 0 no hay adaptación).

seed

Semilla (número entero), obligatoria: con la misma semilla la cadena se repite exactamente.

cores

Procesos en paralelo (en Windows se usa 1).

thin

Adelgazamiento: después del calentamiento se guarda una de cada thin iteraciones.

Value

Lista de cadenas, cada una como la devuelve dl_mh() (draws, aceptacion y escala).

Examples

lp <- function(theta) -0.5 * sum(theta^2)
cadenas <- dl_mh_cadenas(lp, c(a = 0, b = 0), list(1:2), chains = 2, iter = 2200, warmup = 200,
                         seed = 1)
dl_rhat(lapply(cadenas, `[[`, "draws"))
#>         a         b 
#> 1.0085967 0.9997547