Skip to content

coevolve 1.2.1

Latest

Choose a tag to compare

@ScottClaessens ScottClaessens released this 07 Oct 09:59
· 16 commits to main since this release

coevolve 1.2.1

New Features

  • Added further documentation about repeated observations models (#120)
  • Added vignette "Algorithmic scaling" (#121)
  • Models with Gaussian variables and no repeated observations now use a
    conditionally non-centred parameterisation for latent terminal drift, i.e.
    the terminal drift of non-Gaussian variables and of missing Gaussian values.
    Latent drift is written as a standard normal innovation conditional on the
    observed Gaussian residuals of the same taxon. This is a change of variables
    that leaves the model, the posterior, and the pointwise log-likelihood
    unchanged, but removes a funnel between the drift parameters and the latent
    terminal drift that caused poor mixing in mixed Gaussian and non-Gaussian
    models. Thanks to @yuhangxoox for the diagnosis (#124)

Bug Fixes

  • Fixed the continuous time intercept term in the expected change along a
    branch, A^-1 (exp(A t) - I) b. Since version 1.0.0 this matrix was
    symmetrised before being multiplied by b, which is only correct when the
    selection matrix A is symmetric (e.g., no cross-selection effects). Both
    the Stan and JAX backends now use the exact expression. In our comparisons
    the selection (A) and drift (Q) parameters were essentially unchanged,
    because b is weakly identified and absorbs most of the difference.
    Posterior estimates of b itself can shift; in one simulated example they
    moved by up to about 0.6 posterior standard deviations
  • Fixed coev_plot_predictive_check() when nuts_sampler = "nutpie". The
    JAX backend now returns yrep posterior predictions alongside the other
    model parameters, matching the Stan backend (#118)
  • log_lik = TRUE is now supported with nuts_sampler = "nutpie". The JAX
    backend previously ignored the argument and returned no log_lik, so
    loo and waic could not be computed from nutpie fits (#118)
  • Fixed prior_only = TRUE for models with Gaussian variables and no
    repeated observations. terminal_drift only received a prior inside the
    likelihood block, leaving it improper when the likelihood was skipped.
    Sampling failed to initialise with nuts_sampler = "nutpie" and was
    unreliable with nuts_sampler = "stan" (#118)
  • Fixed the pointwise log_lik and yrep for Gaussian variables with
    missing data. The generated quantities block used the -9999 missing
    value placeholder when constructing residuals, which corrupted the
    conditional densities of the other variables of the same observation