Skip to contents

Adds a set of start points to each chain. These start points are sampled from a user-defined multivariate normal across subjects.

Usage

init_chains(
  emc,
  start_mu = NULL,
  start_var = NULL,
  particles = 1000,
  cores_per_chain = 1,
  cores_for_chains = length(emc)
)

Arguments

emc

An emc object made by make_emc()

start_mu

A vector. Mean of multivariate normal used in proposal distribution

start_var

A matrix. Variance covariance matrix of multivariate normal used in proposal distribution. Smaller values will lead to less deviation around the mean.

particles

An integer. Number of starting values

cores_per_chain

An integer. How many cores to use per chain. Parallelizes across participant calculations.

cores_for_chains

An integer. How many cores to use to parallelize across chains. Default is the number of chains.

Value

An emc object

Examples

# \donttest{
# Make a design and an emc object
design_DDMaE <- design(data = forstmann,model=DDM,
                           formula =list(v~0+S,a~E, t0~1, s~1),
                           constants=c(s=log(1)))
#> Parameter(s) SZ, Z, st0, sv not specified in formula and assumed constant.
#> 
#>  Sampled Parameters: 
#> [1] "v_Sleft"     "v_Sright"    "a"           "a_Eneutral"  "a_Eaccuracy"
#> [6] "t0"         
#> 
#>  Design Matrices: 
#> $v
#>      S v_Sleft v_Sright
#>   left       1        0
#>  right       0        1
#> 
#> $a
#>         E a a_Eneutral a_Eaccuracy
#>     speed 1          0           0
#>   neutral 1          1           0
#>  accuracy 1          0           1
#> 
#> $t0
#>  t0
#>   1
#> 
#> $s
#>  s
#>  1
#> 
#> $SZ
#>  SZ
#>   1
#> 
#> $Z
#>  Z
#>  1
#> 
#> $st0
#>  st0
#>    1
#> 
#> $sv
#>  sv
#>   1
#> 

DDMaE <- make_emc(forstmann, design_DDMaE)
#> Processing data set 1
#> Likelihood speedup factor: 4 (3955 unique trials)
# set up our mean starting points (same used across subjects).
mu <- c(v_Sleft=-2,v_Sright=2,a=log(1),a_Eneutral=log(1.5),a_Eaccuracy=log(2),
       t0=log(.2))
# Small variances to simulate start points from a tight range
var <- diag(0.05, length(mu))
# Initialize chains, 4 cores per chain, and parallelizing across our 3 chains as well
# so 4*3 cores used.
DDMaE <- init_chains(DDMaE, start_mu = mu, start_var = var,
                     cores_per_chain = 1, cores_for_chains = 1)
# Afterwards we can just use fit
# DDMaE <- fit(DDMaE, cores_per_chain = 4)
# }