Package: silentema 1.0.0

silentema: Dynamic Missingness Graphs and Sensitivity Analysis for EMA Data

Tools for diagnosing and correcting informative nonresponse in ecological momentary assessment (EMA) and other experience-sampling designs. Declares the assumed nonresponse mechanism as a dynamic missingness graph built from a taxonomy of seven motifs, following the graphical missing-data framework of Mohan and Pearl (2021) <doi:10.1080/01621459.2021.1874961>; checks by d-separation which within-person and between-person estimands of a two-level vector autoregressive model remain recoverable and by which estimator; tests whether skipped prompts were informative (the silence test and the sensor-gap test, with cluster-robust inference after Cameron and Miller (2015) <doi:10.3368/jhr.50.2.317>); estimates the temporal and contemporaneous networks from answered adjacent prompts with the half-panel jackknife of Dhaene and Jochmans (2015) <doi:10.1093/restud/rdv007>, by inverse-probability weighting on an observed context, and by full-information maximum likelihood with the state-space expectation-maximization (EM) algorithm of Shumway and Stoffer (1982) <doi:10.1111/j.1467-9892.1982.tb00349.x>; profiles the estimates over a self-censoring sensitivity parameter (inverse-probability weighting with a fixed probit selection model whose intercept is calibrated to the response rate); calibrates that parameter from passive sensors, randomized probes, or the post-skip contrast; computes worst-case bounds for person means in the spirit of Manski (2003) <doi:10.1007/b97478>; writes a preregistration-ready missingness declaration; and simulates experience-sampling data under every motif. The methods are described in Yu (2026, manuscript under review); the accompanying materials are archived at <https://osf.io/x6d2t/>.

Authors:Hsiu-Ting Yu [aut, cre, cph]

silentema_1.0.0.tar.gz
silentema_1.0.0.zip(r-4.7-x86_64)silentema_1.0.0.zip(r-4.7-arm64)silentema_1.0.0.zip(r-4.6-x86_64)silentema_1.0.0.zip(r-4.6-arm64)silentema_1.0.0.zip(r-4.5-x86_64)
silentema_1.0.0.tgz(r-4.6-x86_64)silentema_1.0.0.tgz(r-4.6-arm64)silentema_1.0.0.tgz(r-4.5-x86_64)silentema_1.0.0.tgz(r-4.5-arm64)
silentema_1.0.0.tar.gz(r-4.7-arm64)silentema_1.0.0.tar.gz(r-4.7-x86_64)silentema_1.0.0.tar.gz(r-4.6-arm64)silentema_1.0.0.tar.gz(r-4.6-x86_64)
silentema_1.0.0.tgz(r-4.6-emscripten)
manual.pdf |manual.html✨
DESCRIPTION |NEWS
card.svg |card.png
silentema/json (API)

# Install 'silentema' in R:
install.packages('silentema', repos = c('https://hsiutingyu.r-universe.dev', 'https://cloud.r-project.org'))

Bug tracker:https://github.com/hsiutingyu/silentema/issues

Pkgdown/docs site:https://hsiutingyu.github.io

Uses libs:
  • openblas– Optimized BLAS
  • c++– GNU Standard C++ Library v3

On CRAN:

Conda:

openblascpp

4.70 score 7 scripts 22 exports 2 dependencies

Last updated from:1966db3533. Checks:15 OK. Indexed: yes.

TargetResultTimeFilesSyslog
linux-devel-arm64OK169
linux-devel-x86_64OK153
source / vignettesOK219
linux-release-arm64OK121
linux-release-x86_64OK147
macos-release-arm64OK165
macos-release-x86_64OK366
macos-oldrel-arm64OK173
macos-oldrel-x86_64OK349
windows-devel-arm64OK412
windows-devel-x86_64OK183
windows-release-arm64OK362
windows-release-x86_64OK150
windows-oldrel-x86_64OK153
wasm-releaseOK100

Exports:bounds_supportbreak_evencalibrate_deltadefault_paramsdm_graphdsepfatigue_checkfit_fimlfit_ipwfit_pairsfit_tiltloglik_fimlmake_pairsmissingness_declarationpartial_corsrecoverabilitysensor_gap_testsilence_testsimulate_emasimulate_from_fitstationary_covtilt_profile

Dependencies:RcppRcppArmadillo

Getting started: the silentema workflow
0. The data format | 1. Simulate a study with self-censoring | 2. Declare a dynamic missingness graph and check recoverability | 3. Ask the data whether silence was informative | 4. Estimate, profile, calibrate | 5. Report | 6. Full-information maximum likelihood under missing at random | Where to go next

Last update: 2026-09-28
Started: 2026-09-27

Sensitivity analysis for self-censoring: tilting, break-even values and calibration
Why estimation alone cannot repair self-censoring | The running example | One tilt: fit_tilt() | The profile: tilt_profile() | Break-even values and identified sets: break_even() | Calibrating the sensitivity value: calibrate_delta() | From a passive sensor | From randomized probes | From the post-skip contrast | Burden together with self-censoring | Bootstrap intervals | Reporting: missingness_declaration() | Practical recommendations | References

Last update: 2026-09-28
Started: 2026-09-27

Simulating experience-sampling data and planning a design
The generating model | Every motif and its parameters | Design features | Reproducibility | Simulating from a fitted model | Planning a design: three small studies | How much does self-censoring bias the default analysis? | Which sensor is good enough to calibrate? | How many probes? | Comparing estimators across mechanisms | References

Last update: 2026-09-28
Started: 2026-09-27

Was silence informative? The silence test, the sensor-gap test and the fatigue check
The question | The silence test | Reading the sign | Inference | Curvature | The M1 + M3 collider | The sensor-gap test | The fatigue check | How often do the tests reject? A small Monte Carlo | What to do with a rejection | References

Last update: 2026-09-28
Started: 2026-09-27

Dynamic missingness graphs: the motif taxonomy and recoverability
What a dm-graph is | The seven motifs | Asking the graph questions: d-separation | The recoverability report | A table over the taxonomy | Observed contexts, sensors and probes | Choosing a declaration in practice | References

Last update: 2026-09-27
Started: 2026-09-27

Readme and manuals

Help Manual

Help pageTopics
silentema: dynamic missingness graphs and sensitivity analysis for EMA datasilentema-package silentema
Worst-case (support) bounds for person means under arbitrary nonresponsebounds_support
Break-even sensitivity values and identified sets from a tilt profilebreak_even
Calibrate the self-censoring sensitivity parameter from a design featurecalibrate_delta
Default population parameters used in the simulation studies of Yu (2026)default_params
Declare a dynamic missingness graph (dm-graph)dm_graph
d-separation in a dm-graphdsep
Descriptive check for burden or fatigue in the response sequencefatigue_check
Full-information maximum likelihood under missing at random (state-space EM)fit_fiml
Inverse-probability-weighted within-person VAR(1) for observed context confoundingfit_ipw
Within-person VAR(1) estimated from complete adjacent pairsfit_pairs
Tilted (self-censoring-adjusted) within-person VAR(1) at a fixed value of the sensitivity parameterfit_tilt
Log-likelihood of the two-level VAR(1) at given parameters (MAR)loglik_fiml
Build adjacent prompt pairs from long experience-sampling datamake_pairs
Missingness declaration for preregistrations and reportsmissingness_declaration
Partial correlations from a covariance matrixpartial_cors
Plot the model-implied curve of a calibrationplot.delta_calibration
Plot a dm-graphplot.dm_graph
Plot a tilt profileplot.tilt_profile
Recoverability report for a dm-graphrecoverability
The sensor-gap test: does an always-observed sensor differ at skipped prompts?sensor_gap_test
The silence test: does the state after a skipped prompt differ?silence_test
Simulate experience-sampling data with a declared missingness mechanismsimulate_ema
Simulate data from a fitted tilt modelsimulate_from_fit
Stationary covariance of a VAR(1) processstationary_cov
Standard errors and confidence intervals for the lagged coefficientscoef.pairs_fit confint.pairs_fit nobs.pairs_fit summary.pairs_fit vcov.pairs_fit
Sensitivity profile over a grid of self-censoring valuestilt_profile