[R] SEM model fit
John Fox
jfox at mcmaster.ca
Sun Jul 1 14:57:46 CEST 2007
Dear Frank,
My apologies for the slow response: I'm away from home and checking
r-help infrequently.
To find the confidence interval for the RMSEA it's necessary to compute
two chisquare noncentrality parameters. summary.sem() does this by
one-dimensional optimizations. If the upper bound of the CI is very
large or the lower bound very close to 0, it might not be possible to
find the values with sufficient precision, and NA is printed.
Looking at the code for summary.sem(), however, I see that the
optimizations could fail spuriously if the sample size is large;
moreover, under these circumstances, both the upper and lower bounds
will be NA, even if the lower bound could have been determined. I've
therefore modified summary.sem() so that it should work more reliably,
and have attached a file with the modified function to this email. Let
me know if it provides more satisfactory results. (Because you didn't
give the input correlation matrix, I can't check myself.) I'll
eventually incorporate the new function is an updated version of the
package.
BTW, I doubt that the RMSEA confidence interval is correct for
polychoric correlations.
Regards,
John
-------- original message ------
I wonder if someone could explain why, when I perform confirmatory
factor-analysis model using polychoric correlations why I do not get an
estimated confidence interval for the RMSEA. My experience with these
type
models is that I would obtain a confidence interval estimate. I did
not get
any warning messages with the output.
RESULTS:
Model Chisquare = 1374 Df = 185 Pr(>Chisq) = 0
Chisquare (null model) = 12284 Df = 210
Goodness-of-fit index = 0.903
Adjusted goodness-of-fit index = 0.88
RMSEA index = 0.0711 90% CI: (NA, NA)
Bentler-Bonnett NFI = 0.888
Tucker-Lewis NNFI = 0.888
Bentler CFI = 0.902
SRMR = 0.0682
BIC = 51.4
SYNTAX
rm(sem.enf.rq)
mdl.rq <- specify.model()
enf -> law2, NA, 1
enf -> law3, lam2, 1
enf -> law4, lam3, 1
enf <-> enf, psi1, 0.6
law2 <-> law2, theta1, 0.3
law3 <-> law3, theta2, 0.3
law4 <-> law4, theta3, 0.5
gender -> enf, a1, 0.2
incomex -> enf, a2, 0.2
oftdrnkr -> enf, a3, 0.2
attn -> nvatt, NA, 1
attn -> crimatt, lam4, 1.3
attn -> asltatt, lam5, 1.2
attn <-> attn, psi2, 0.5
nvatt <-> nvatt, theta4, 0.5
crimatt <-> crimatt, theta5, 0.1
asltatt <-> asltatt, theta6, 0.2
gender -> attn, a4, 0.2
acon -> acon1, NA, 1
acon -> acon2, lam4, 1.5
acon <-> acon, psi2, 0.1
mcon -> mvcon1, NA, 1
mcon -> mvcon2, lam5, 1
mcon <-> mcon, psi3, 0.3
ocon -> oicon1, NA, 1
ocon -> oicon2, lam6, 1
ocon <-> ocon, psi4, 0.2
con -> acon, NA, 1
con -> mcon, lam7, 0.8
con -> ocon, lam8, 0.9
con <-> con, psi5, 0.3
acon1 <-> acon1, theta7, 0.4
acon2 <-> acon2, theta8, 0.2
mvcon1 <-> mvcon1, theta9, 0.2
mvcon2 <-> mvcon2, theta10, 0.3
oicon1 <-> oicon1, theta11, 0.2
oicon2 <-> oicon2, theta12, 0.3
gender -> con, a5, 0.1
incomex -> con, a6, -0.1
oftdrnkr -> con, a7, -0.2
attn -> con, gam1, 0.2
sev -> aophys, NA, 1
sev -> mvphys, NA, 1
sev -> oiphys, NA, 1
sev <-> sev, psi6, 0.5
aophys <-> aophys, theta13, 0.5
mvphys <-> mvphys, theta14, 0.5
oiphys <-> oiphys, theta14, 0.5
con -> sev, gam3, 0.8
prev -> mvpct, NA, 1
prev -> oipct, NA, 1
prev -> alcpct, NA, 1
prev <-> prev, psi8, 0.4
mvpct <-> mvpct, theta15, 0.5
oipct <-> oipct, theta15, 0.5
alcpct <-> alcpct, theta15, 0.5
con -> prev, gam5, 0.8
prev -> enf, gam6, 0.4
sem.enf.rq <- sem(ram = mdl.rq, S = hcor(dx), N = nrow(dx), obs.v =
names(dx), raw = F, fixed = names(dx)[4:6], par.size = 's', maxiter =
1e3,
analytic = F, gradtol = 1e-10) ##set raw to False
summary(obj = sem.enf.rq, dig = 3, conf = 0.9)
Respectfully,
Frank Lawrence
--------------------------------
John Fox, Professor
Department of Sociology
McMaster University
Hamilton, Ontario, Canada
http://socserv.mcmaster.ca/jfox/
More information about the R-help
mailing list