[R] How to use pakcage SEM
Mitsuo Igarashi
mitsu5 at ruby.famille.ne.jp
Tue May 20 17:02:55 CEST 2003
Hello, Dear John.
As you taught me, I obtained the result which I expect and is
the same as that of EQS.
I have started to learn structural equation modeling. This
pushes my understanding SEM. Thank you very much.
Would you permit me to ask a question?
This EQS program sets an error covariance between V1 and V2.
However,It seems to me that the package SEM does not have the
method of error covariance. So I set a covariance between V1 and
V2. What is the difference between these two settings of
covariances?
Best regards.
--------========----------
Mitsuo Igarashi
mitsu5 at ruby.famille.ne.jp
---------------
John Fox <jfox at mcmaster.ca> wrote:
> Dear Mitsuo,
>
> You appear to be trying to fit a confirmatory factor analysis model with
> five observed variables and two factors. Two of the five variables load on
> both factors. Two variables have correlated measurement errors. I haven't
> checked that the model that you intend to fit is identified but let's
> suppose that it is.
>
> As you've described the model to sem, there are 16 free parameters, but
> there are only 5*6/2 = 15 observed covariances (counting the diagonal
> entries of the correlation matrix), so clearly there's a mistake in the
> specification -- the model has negative degrees of freedom (and sem should
> complain, but doesn't).
>
> The problem is that you've not placed any constraints on the model to fix
> the scales of the factors. The simplest thing to do would be to fix the
> variances of the factors to 1, rather than specifying them as free
> parameters; as well, you don't have to start the measurement-error
> variances at 1 rather than using the start values that sem computes, though
> it doesn't hurt to do so:
>
> > model.mh<-matrix(c(
> + 'F1 -> V1', 'a1',NA,
> + 'F1 -> V3', 'a3',NA,
> + 'F1 -> V4', 'a4',NA,
> + 'F2 -> V2', 'b2',NA,
> + 'F2 -> V3', 'b3',NA,
> + 'F2 -> V4', 'b4',NA,
> + 'F2 -> V5', 'b5',NA,
> + 'V1 <-> V1','e1', NA,
> + 'V2 <-> V2','e2', NA,
> + 'V3 <-> V3','e3', NA,
> + 'V4 <-> V4','e4', NA,
> + 'V5 <-> V5','e5', NA,
> + 'F1 <-> F1', NA, 1,
> + 'F2 <-> F2', NA, 1,
> + 'F1 <-> F2','c12',NA,
> + 'V1 <-> V2','cv1', NA
> + ),ncol=3,byrow=T)
> > sem.mh <- sem(model.mh, data.mh, 100)
> > summary(sem.mh)
>
> Model Chisquare = 2.2805 Df = 1 Pr(>Chisq) = 0.13101
> Goodness-of-fit index = 0.99097
> Adjusted goodness-of-fit index = 0.8646
> RMSEA index = 0.11373 90 % CI: (0, 0.31712)
> BIC = -3.9341
>
> Normalized Residuals
> Min. 1st Qu. Median Mean 3rd Qu. Max.
> -3.92e-01 -5.50e-02 -5.27e-06 3.27e-02 1.09e-01 7.98e-01
>
> Parameter Estimates
> Estimate Std Error z value Pr(>|z|)
> a1 0.970680 0.275852 3.51884 4.3343e-04 V1 <--- F1
> a3 0.317133 0.198819 1.59509 1.1069e-01 V3 <--- F1
> a4 0.437281 0.250375 1.74651 8.0723e-02 V4 <--- F1
> b2 0.526620 0.116264 4.52951 5.9119e-06 V2 <--- F2
> b3 0.452136 0.196716 2.29842 2.1538e-02 V3 <--- F2
> b4 0.234373 0.247929 0.94532 3.4449e-01 V4 <--- F2
> b5 0.759562 0.131164 5.79092 7.0001e-09 V5 <--- F2
> e1 0.052702 0.512634 0.10281 9.1812e-01 V1 <--> V1
> e2 0.722672 0.126106 5.73065 1.0004e-08 V2 <--> V2
> e3 0.552314 0.103604 5.33101 9.7669e-08 V3 <--> V3
> e4 0.651868 0.128687 5.06552 4.0728e-07 V4 <--> V4
> e5 0.423067 0.163535 2.58702 9.6811e-03 V5 <--> V5
> c12 0.497557 0.167763 2.96584 3.0186e-03 F2 <--> F1
> cv1 0.108796 0.076515 1.42190 1.5506e-01 V2 <--> V1
>
> Iterations = 37
> >
>
> How does that compare to your EQS output?
>
> John
>
> At 04:37 PM 5/20/2003 +0900, you wrote:
> >Hi.
> >
> >I have tried to use Package "SEM".
> >
> >As a learning, I try to convert a program running well of EQS
> >which is as follows to SEM:
> >
> >### EQS ###
> >/SPECIFICATION
> >CAS=100; VAR=5 MAT=COR; ANA=COR;
> >/EQUATIONS
> >V1=*F1+E1; V2=*F1+E2; V3=*F1+*F2+E3; V4=**F1+*F2*E4;
> >V5=*F2+E5;
> >/VAR
> >E1 TO E5=*; F1*1.0; F2=1.0;
> >/COV
> >E1,E2=*; F1,F2=*:
> >/PRINT
> >FIT ALL;
> >/MATRIX ......
> >/END
> >
> >This is the converted SEM program.
> >###
> >data.mh<-matrix(c(
> >1.00,0,0,0, 0,
> >0.38,1.00,0,0, 0,
> >0.52,0.28,1.00,0,0,
> >0.55,0.32,0.38,1.00,0,
> >0.36,0.40,0.48,0.31,1.00
> >),ncol=5,byrow=T)
> >
> >model.mh<-matrix(c(
> > 'F1 -> V1', 'a1',NA,
> > 'F1 -> V3', 'a3',NA,
> > 'F1 -> V4', 'a4',NA,
> > 'F2 -> V2', 'b2',NA,
> > 'F2 -> V3', 'b3',NA,
> > 'F2 -> V4', 'b4',NA,
> > 'F2 -> V5', 'b5',NA,
> > 'V1 <-> V1','e1', 1,
> > 'V2 <-> V2','e2', 1,
> > 'V3 <-> V3','e3', 1,
> > 'V4 <-> V4','e4', 1,
> > 'V5 <-> V5','e5', 1,
> > 'F1 <-> F1','d1', 1,
> > 'F2 <-> F2','d2', 1,
> > 'F1 <-> F2','c12',NA,
> > 'V1 <-> V2','cv1', NA,
> >),ncol=3,byrow=T)
> >obs.vars.mh <- c('V1','V2','V3','V4','V5')
> >rownames(data.mh) <- colnames(data.mh) <- obs.vars.mh
> >
> >sem.mh <- sem(model.mh, data.mh, 100)
> >###
> >
> >At this stage, everything looks going well.
> >By debug mode of "sem()" it finishes with no error.
> >However,the process of "summary(sem.mh)" produces an error.
> >
> > > summary(sem.mh)
> >Error in optim(0, function(lam) ((1 - conf.level)/2 - pchisq(chisq, df, :
> > Function cannot be evaluated at initial parameters
> >In addition: Warning message:
> >NaNs produced in: sqrt(diag(object$cov))
> >
> >It seems to me that there is something wrong at the conversion of
> >"E1 TO E5=*;" to " 'V1 <-> V2','cv1', NA ".
> >
> >Could anyone explain me how to manage this trouble?
> >
> >Thanks.
> >
> >--------========----------
> >Mitsuo Igarashi
> >mitsu5 at ruby.famille.ne.jp
> >
> >______________________________________________
> >R-help at stat.math.ethz.ch mailing list
> >https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>
> -----------------------------------------------------
> John Fox
> Department of Sociology
> McMaster University
> Hamilton, Ontario, Canada L8S 4M4
> email: jfox at mcmaster.ca
> phone: 905-525-9140x23604
> web: www.socsci.mcmaster.ca/jfox
> -----------------------------------------------------
More information about the R-help
mailing list