Skip to contents

drmSEM rejects cycles by default. drm_cycle() explicitly names the nodes of a feedback motif — the canonical case being a reciprocal pair y1 ⇄ y2 — so that those nodes are allowed to form a cycle while every undeclared cycle stays a hard error. Pass declarations to drm_sem() / drm_psem() via their feedback argument.

Usage

drm_cycle(...)

Arguments

...

Two or more node names (strings) forming the feedback motif.

Value

A drm_cycle declaration object.

Details

Declaring a motif relaxes the topological-order requirement (the motif is treated as a single layer) and makes basis_set() drop independence claims among the motif's nodes. It does not make node-wise fitting consistent: under simultaneity, ordinary maximum likelihood per node is biased, so drm_sem() warns when a declared cycle is fitted naively. Consistent estimation (instrumental variables / a joint likelihood) is an engine capability; equilibrium effects from supplied coefficients are computed by the fixed-point propagator. See docs/design/10-cyclic-feedback.md.

References

Bollen KA (1996). “An Alternative Two Stage Least Squares (2SLS) Estimator for Latent Variable Equations.” Psychometrika, 61(1), 109–121. doi:10.1007/BF02296961 .

Forré P, Mooij JM (2017). “Markov Properties for Graphical Models with Cycles and Latent Variables.” arXiv:1710.08775. doi:10.48550/arXiv.1710.08775 .

Bollen KA (1989). Structural Equations with Latent Variables. Wiley, New York.

See also

Examples

drm_cycle("activity", "boldness")   # a reciprocal pair activity <-> boldness
#> <feedback motif> activity <-> boldness