The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

silentema

R-CMD-check CRAN status License: GPL v3

Dynamic missingness graphs, recoverability checks, and sensitivity analysis for informative nonresponse in ecological momentary assessment (EMA) and other experience-sampling data.

Participants skip prompts, and the reasons are rarely unrelated to the states being measured. silentema lets an analyst

  1. declare the assumed nonresponse mechanism as a dynamic missingness graph (dm_graph()), built from a taxonomy of seven motifs (completely random, lagged-state dependence, self-censoring, burden, person propensity, context confounding, and reactivity);
  2. check by d-separation which estimands of a two-level VAR(1) (temporal network, contemporaneous network, person means, between-person law) remain structurally recoverable and by which estimator (recoverability());
  3. test whether skipped prompts were informative, using the state after a skipped prompt (silence_test()) or an always-observed sensor (sensor_gap_test()), and describe response persistence (fatigue_check());
  4. estimate from answered adjacent prompts with person-specific intercepts and a half-panel jackknife (fit_pairs()), by inverse-probability weighting on an observed context (fit_ipw()), or by full-information maximum likelihood under missing at random (MAR) (fit_fiml());
  5. profile the estimates over a self-censoring sensitivity value by inverse-probability weighting with a fixed probit selection model whose intercept is calibrated to the response rate (“tilting”) (fit_tilt(), tilt_profile(), break_even());
  6. calibrate the sensitivity value from a passive sensor, randomized probes, or the post-skip contrast (calibrate_delta()), and compare with worst-case bounds (bounds_support());
  7. report with a preregistration-ready missingness declaration (missingness_declaration()).

A simulator for the whole taxonomy (simulate_ema(), simulate_from_fit()) supports design planning and replication.

Installation

From CRAN (once the package is accepted):

install.packages("silentema")

The development version from GitHub:

# install.packages("remotes")
remotes::install_github("hsiutingyu/silentema")

The package contains C++ code (the state-space EM algorithm), so a compiler toolchain is needed to install from source: Rtools on Windows, Xcode command-line tools on macOS, r-base-dev or equivalent on Linux.

Minimal example

library(silentema)
sim <- simulate_ema(N = 100, n_prompts = 56, motifs = "M2", compliance = 0.7, delta = -1,
                    sensor_cor = 0.6, seed = 1)
g <- dm_graph("M2", sensor = TRUE)
recoverability(g)                       # what can be recovered under the declared mechanism?
silence_test(sim$data, sim$vars)        # was silence informative?
prof <- tilt_profile(sim$data, sim$vars, delta_grid = seq(-2, 0.5, by = 0.5))
cal <- calibrate_delta(prof, sim$data, method = "sensor")
break_even(prof, delta_max = 1.5)
cat(missingness_declaration(g, profile = prof, calibration = cal, plausible = c(-1.5, 0)), sep = "\n")

Documentation

Citation

Yu, H.-T. (2026). What skipped prompts hide: Detecting, diagnosing, and correcting informative nonresponse in ecological momentary assessment. Manuscript under review. Materials: https://osf.io/x6d2t/

Yu, H.-T. (2026). silentema: Dynamic Missingness Graphs and Sensitivity Analysis for EMA Data. R package version 1.0.0. https://CRAN.R-project.org/package=silentema

Run citation("silentema") in R for BibTeX entries.

License

GPL (>= 3)

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.