Dear Andrew, The reported df in lavaan is 0 which is correct. It is because this path model is saturated. "28" is not the df, it is the no. of pieces of information. The no. of parameter estimates is also 28. Thus, the df is 0.
However, you are correct that there are only 13, not 28, free parameters reported by lavaan. It is because "fixed.x=TRUE" was implicitly used in your example (see ?sem). Since HHincome + Race + Age + Gender + Stress1 are predictors, they are fixed at their sample values when "fixed.x=TRUE" was used. And their covariance elements are not involved in calculating the df. If you want to mirror the behaviors in other SEM packages, you may try: fit2 <- sem(model, sample.nobs=161, sample.cov=myCov, fixed.x=FALSE) inspect(fit2, what="free") summary(fit2) Hope it helps. Mike -- --------------------------------------------------------------------- Mike W.L. Cheung Phone: (65) 6516-3702 Department of Psychology Fax: (65) 6773-1843 National University of Singapore http://courses.nus.edu.sg/course/psycwlm/internet/ --------------------------------------------------------------------- On Thu, Mar 17, 2011 at 8:50 PM, Andrew Miles <rstuff.mi...@gmail.com> wrote: > I have been trying to use lavaan (version 0.4-7) for a simple path model, > but the program seems to be computing far less degrees of freedom for my > model then it should have. I have 7 variables, which should give (7)(8)/2 = > 28 covariances, and hence 28 DF. The model seems to only think I have 13 > DF. The code to reproduce the problem is below. Have I done something > wrong, or is this something I should take to the developer? > > > library(lavaan) > > myCov = matrix(c(24.40, 0, 0, 0, 0, 0, 0, .03, .03, 0, 0, 0, 0, 0, 6.75, - > .08, 519.38, 0, 0, 0, 0, .36, .01, 2.74, .18, 0, 0, 0, .51, .0, -.31, .02, > .2, .0, 0, -.17, .0, -1.6, -.04, .01, .25, 0, -.1, .02, -.03, .0, -.01, .01 > , .02), nrow=7, byrow=TRUE, dimnames=list(c("Internet", "Stress3", > "HHincome", "Race", "Age", "Gender", "Stress1"), c("Internet", "Stress3", > "HHincome", "Race", "Age", "Gender", "Stress1"))) > > > model = ' > > Internet ~ HHincome + Race + Age + Gender + Stress1 > > Stress3 ~ Internet + HHincome + Race + Age + Gender + Stress1 > > ' > > > fit=sem(model, sample.nobs=161, sample.cov=myCov, mimic.Mplus=FALSE) > > > #check the number of parameters being estimated > > inspect(fit, what="free") > > > #Note the DF for the Chi-square is 0, when it should be 28-13 = 15 > > summary(fit) > > > Andrew Miles > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.