Creating a fully constrained null model in lavaan

172 views
Skip to first unread message

Matthew Browne

unread,
Mar 19, 2014, 8:58:38 PM3/19/14
to lav...@googlegroups.com
Hi Yves and others,

I'm not sure if what I'm asking for makes complete sense, but I'm doing CFA for analyzing a couple of scales that ought to be measuring very similar latent constructs. Each scale is essentially acting as a validation measure for the other (e.g. raw score sums correlate at about .45).

I'd like to decide whether or not treating the scales via IRT / SEM, which yields a latent factor for further structural analysis, provides significant advantages over the status quo, which is to simply work with raw score sums and standard regression.

With this in mind, it would be nice to define, in lavaan syntax, a 'null' model with no degrees of freedom, that implies a latent factor that is approximately linearly related to the 'status quo': a simple raw score sum. This would enable me to use standard SEM model comparison methods to demonstrate any advantage of using IRT latent measures over treating the raw sum scores.

Hopefully I'm not attempting to do something completely misguided!

Below is the 'most constrained' IRT I've managed to produce.

thanks for your thoughts!

Matt

# All items equal discrimination, constant thresholds, constant differences between levels
fit4 <- cfa(model = '
intensity =~ 1*x1 + 1*x2 + 1*x3 + 1*x4 + 1*x5 + 1*x6 + 1*x7 + 1*x8 + 1*x9
x1 | a1*t1 + a2*t2 + a3*t3
x2 | a1*t1 + a2*t2 + a3*t3
x3 | a1*t1 + a2*t2 + a3*t3
x4 | a1*t1 + a2*t2 + a3*t3
x5 | a1*t1 + a2*t2 + a3*t3
x6 | a1*t1 + a2*t2 + a3*t3
x7 | a1*t1 + a2*t2 + a3*t3
x8 | a1*t1 + a2*t2 + a3*t3
x9 | a1*t1 + a2*t2 + a3*t3
(a3 - a2) == (a2 - a1)
', data = X, ordered = names(X))
lavaan (0.5-16) converged normally after  14 iterations

  Number of observations                          3601

  Estimator                                       DWLS      Robust
  Minimum Function Test Statistic              696.044     743.279
  Degrees of freedom                                60          60
  P-value (Chi-square)                           0.000       0.000
  Scaling correction factor                                  0.962
  Shift parameter                                           19.455
    for simple second-order correction (Mplus variant)

Parameter estimates:

  Information                                 Expected
  Standard Errors                           Robust.sem

                   Estimate  Std.err  Z-value  P(>|z|)
Latent variables:
  intensity =~
    x1                1.000
    x2                1.000
    x3                1.000
    x4                1.000
    x5                1.000
    x6                1.000
    x7                1.000
    x8                1.000
    x9                1.000

Intercepts:
    intensity         0.000

Thresholds:
    x1|t1    (a1)     1.667    0.025   66.918    0.000
    x1|t2    (a2)     2.177    0.036   60.934    0.000
    x1|t3    (a3)     2.686    0.055   49.180    0.000
    x2|t1    (a1)     1.667    0.025   66.918    0.000
    x2|t2    (a2)     2.177    0.036   60.934    0.000
    x2|t3    (a3)     2.686    0.055   49.180    0.000
    x3|t1    (a1)     1.667    0.025   66.918    0.000
    x3|t2    (a2)     2.177    0.036   60.934    0.000
    x3|t3    (a3)     2.686    0.055   49.180    0.000
    x4|t1    (a1)     1.667    0.025   66.918    0.000
    x4|t2    (a2)     2.177    0.036   60.934    0.000
    x4|t3    (a3)     2.686    0.055   49.180    0.000
    x5|t1    (a1)     1.667    0.025   66.918    0.000
    x5|t2    (a2)     2.177    0.036   60.934    0.000
    x5|t3    (a3)     2.686    0.055   49.180    0.000
    x6|t1    (a1)     1.667    0.025   66.918    0.000
    x6|t2    (a2)     2.177    0.036   60.934    0.000
    x6|t3    (a3)     2.686    0.055   49.180    0.000
    x7|t1    (a1)     1.667    0.025   66.918    0.000
    x7|t2    (a2)     2.177    0.036   60.934    0.000
    x7|t3    (a3)     2.686    0.055   49.180    0.000
    x8|t1    (a1)     1.667    0.025   66.918    0.000
    x8|t2    (a2)     2.177    0.036   60.934    0.000
    x8|t3    (a3)     2.686    0.055   49.180    0.000
    x9|t1    (a1)     1.667    0.025   66.918    0.000
    x9|t2    (a2)     2.177    0.036   60.934    0.000
    x9|t3    (a3)     2.686    0.055   49.180    0.000

Variances:
    x1                0.233
    x2                0.233
    x3                0.233
    x4                0.233
    x5                0.233
    x6                0.233
    x7                0.233
    x8                0.233
    x9                0.233
    intensity         0.767    0.017

Constraints:                               Slack (>=0)
    (a3-a2) - ((a2-a1))                          0.000

yrosseel

unread,
May 7, 2014, 2:33:28 PM5/7/14
to lav...@googlegroups.com
On 03/20/2014 01:58 AM, Matthew Browne wrote:
> Hi Yves and others,
>
> I'm not sure if what I'm asking for makes complete sense, but I'm doing
> CFA for analyzing a couple of scales that ought to be measuring very
> similar latent constructs. Each scale is essentially acting as a
> validation measure for the other (e.g. raw score sums correlate at about
> .45).
>
> I'd like to decide whether or not treating the scales via IRT / SEM,
> which yields a latent factor for further structural analysis, provides
> significant advantages over the status quo, which is to simply work with
> raw score sums and standard regression.
>
> With this in mind, it would be nice to define, in lavaan syntax, a
> 'null' model with no degrees of freedom, that implies a latent factor
> that is approximately linearly related to the 'status quo': a simple raw
> score sum. This would enable me to use standard SEM model comparison
> methods to demonstrate any advantage of using IRT latent measures over
> treating the raw sum scores.

Sorry for my late reply. But I do not fully understand what you
need/want. What is wrong with just creating sum scores and regress them
(outside lavaan)?

Yves.

Reply all
Reply to author
Forward
0 new messages