This vignette is a decision guide, not a technical deep dive. Use it to pick an entry point:
ild_lme() when the main need is
multilevel regression with residual
temporal correlation (AR1/CAR1, random effects).ild_brms() when
uncertainty, priors, and
Bayesian partial pooling across persons matter
most.ild_kfas() when the target is
discrete-time latent temporal state estimation (single
series per fit).ild_ctsem() when the target is
continuous-time latent dynamics under irregular
measurement timing.Ask:
ild_lme() /
nlme vs ild_brms()
(Stan); KFAS in tidyILD is likelihood /
ML-oriented for the wrapped fits.ild_diagnostics() / bundle from ild_diagnose()
for standard models; KFAS: ild_diagnose()
emphasizes innovations, ACF, and bundle sections tuned
for state space (see ?ild_diagnose).ild_lme() (lme4 / nlme) |
ild_brms() |
ild_kfas() (KFAS) |
ild_ctsem() (ctsem) |
|
|---|---|---|---|---|
| Typical use | Multilevel regression, AR1/CAR1 on residuals | Hierarchical Bayes, flexible priors | Univariate latent level (v1), single .ild_id per
fit |
Continuous-time latent dynamics with irregular timing |
| ID structure | Multiple .ild_id, random effects |
Multiple .ild_id, partial pooling |
One person per fit (v1); not pooled latent state across IDs | v1 wrapper is conservative (single-series focus) |
| Temporal structure | Residual AR1/CAR1; spacing-informed choice | Flexible time / residual modeling | Discrete-time local level on observation order | Continuous-time drift/diffusion parameterization |
| Priors | N/A (frequentist) | Yes (user-specified) | Implicit via likelihood / ML | Depends on ctsem fit mode (ctStanFit /
ctFit) |
| Predictive checks | Via bundle / extensions | PPC via brms (pp_check) |
Forecast / innovation plots (not PPC); see
ild_autoplot(bundle) for KFAS |
Bundle diagnostics + ctsem residual/fitted views |
| Provenance / report | ild_provenance, ild_report |
Same | Same; KFAS stores state spec, smoothing,
fit_context |
Same; ctsem fit type and scaling recorded |
Important: ild_kfas() is
not a drop-in replacement for a
multilevel model with person-level random effects. If
you fit separate state-space models per person, use
fit_context = "independent_series_per_id"
when that matches your design and read
GR_KFAS_UNMODELED_BETWEEN_PERSON_HETEROGENEITY
and related guardrails.
vignette("temporal-dynamics-model-choice", package = "tidyILD")vignette("tidyILD-workflow", package = "tidyILD")vignette("ild-analysis-report", package = "tidyILD")vignette("kfas-state-space-modeling", package = "tidyILD")vignette("kfas-irregular-timing-spacing", package = "tidyILD")vignette("ctsem-continuous-time-dynamics", package = "tidyILD")vignette("ild-decomposition-and-spacing", package = "tidyILD")inst/dev/KFAS_V1_BACKEND.md (backend scope),
?ild_kfas, ?ild_ctsem, ?ild_lme,
?ild_brms.