Stata SEM Groups

The group option is available only in -gsem-.


Default and Implicit Behaviors

When groups are specified, paths are implicitly expanded such that the following two are equivalent. (Supposing that gid has 3 levels.)

... (x1 <- X) (x2 <- X), cov(e.x1*e.x2@c1) group(gid)

... (1: y <- x1) (2: y <- x1) (3: y <- x1) ///
    (1: y <- x2) (2: y <- x2) (3: y <- x2) ///
    cov(1: e.x1*e.x2@c1) cov(2: e.x1*e.x2@c1) cov(3: e.x1*e.x2@c1) ///
    group(gid)

If a group's path is overriden like:

... (y <- x) (2: y <- x@c1) (3: y <- x@c1), ///
    group(gid)

Then the path interpretter will see:

... (1: y <- x) (2: y <- x) (3: y <- x) (2: y <- x@c1) (3: y <- x@c1), ///
    group(gid)

The path interpretter will combine the duplicative paths automatically into:

... (1: y <- x) (2: y <- x@c1) (3: y <- x@c1), ///
    group(gid)


Covariance Structures

To constrain variance to be equal across groups, try:

... (x1 <- X), ///
    var(e.x1@c1) ///
    group(gid)

This expands out to:

... (1: x1 <- X) (2: x1 <- X) (3: x1 <- X), ///
    var(1: e.x1@c1) var(2: e.x1@c1) var(3: e.x1@c1) ///
    group(gid)

Which precisely achieves that constraint.

To instead constrain variance to be equal across some groups, try:

... (x1 <- X), ///
    var(e.x1@c2) var(2: e.x1@c1) var(3: e.x1@c1) ///
    group(gid)

(Supposing still that gid has 3 levels.) As c2 only appears once in the expanded and combined interpretation, it is effectively unconstrained.


CategoryRicottone

Stata/Sem/Groups (last edited 2025-10-24 18:17:29 by DominicRicottone)