Alex Anderson
2010-Oct-25 06:18 UTC
[R] structural equation modeling in sem, error, The model has negative degrees of freedom = -3, and The model is almost surely misspecified...
Hi all, I am attempting to learn my way through the sem package by constructing a simple structural model for some of my data on bird diversity, abundance, and primary productivity. I have constructed a covariance matrix between these variables as per the following: >S_matrix = matrix(c( >+ 0.003083259, 0, 0, >+ 0.143870284, 89.7648490, 0, >+ 0.276950919, 81.3484101, 215.3570157 > ), ncol = 3, byrow = T) >rownames(S_matrix) = colnames(S_matrix) = c("dec_mean_EVI", "density", "ALL_Jack1") I then construct a model using a symbolic ram specification as follows >tmodel <- specify.model() >dec_mean_EVI -> density, gam1, NA >density -> ALL_Jack1, gam2, NA >dec_mean_EVI -> ALL_Jack1, gam3, NA >dec_mean_EVI <-> dec_mean_EVI, ps1, NA >density <-> density, ps2, NA >ALL_Jack1 <-> ALL_Jack1, theta1, NA >dec_mean_EVI <-> density, theta2, NA >dec_mean_EVI <-> ALL_Jack1, theta2, NA >density <-> ALL_Jack1, theta3, NA I then try to run the sem analysis using the matrix and model. >sem_1 <- sem(ram = tmodel, S = S_matrix, N = 88, fixed.x = c("dec_mean_EVI")) >summary(sem_1) However, I only get the following error message: "Error in sem.default(ram = ram, S = S, N = N, param.names = pars, var.names = vars, : The model has negative degrees of freedom = -3 In addition: Warning message: In sem.default(ram = ram, S = S, N = N, param.names = pars, var.names = vars, : The following variables have no variance or error-variance parameter (double-headed arrow): density, ALL_Jack1, dec_mean_EVI , density , density , ALL_Jack1 The model is almost surely misspecified; check also for missing covariances." It must be obvious to those experienced with sem, but I can't yet see where I have gone wrong in constructing my matrix or model, any thoughts would be much appreciated. thanks in advance, Alex
John Fox
2010-Oct-25 14:45 UTC
[R] structural equation modeling in sem, error, The model has negative degrees of freedom = -3, and The model is almost surely misspecified...
Dear Alex, Your problem doesn't have much to do with the sem package. The model that you're trying to estimate is grossly underidentified. The model has 9 parameters to estimate and there are only 3*4/2 = 6 covariances among the 3 observed variables, hence the -3 df. There are also no exogenous variables in the model, since you specified that dec is correlated with the structural disturbances for density and ALL-Jack1. Regards, John -------------------------------- John Fox Senator William McMaster Professor of Social Statistics Department of Sociology McMaster University Hamilton, Ontario, Canada web: socserv.mcmaster.ca/jfox> -----Original Message----- > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]On> Behalf Of Alex Anderson > Sent: October-25-10 2:19 AM > To: r-help at r-project.org > Subject: [R] structural equation modeling in sem, error, The model has > negative degrees of freedom = -3, and The model is almost surely > misspecified... > > Hi all, > I am attempting to learn my way through the sem package by constructing > a simple structural model for some of my data on bird diversity, > abundance, and primary productivity. > > I have constructed a covariance matrix between these variables as per > the following: > > >S_matrix = matrix(c( > >+ 0.003083259, 0, 0, > >+ 0.143870284, 89.7648490, 0, > >+ 0.276950919, 81.3484101, 215.3570157 > > ), ncol = 3, byrow = T) > >rownames(S_matrix) = colnames(S_matrix) = c("dec_mean_EVI", "density", > "ALL_Jack1") > > I then construct a model using a symbolic ram specification as follows > > >tmodel <- specify.model() > >dec_mean_EVI -> density, gam1, NA > >density -> ALL_Jack1, gam2, NA > >dec_mean_EVI -> ALL_Jack1, gam3, NA > >dec_mean_EVI <-> dec_mean_EVI, ps1, NA > >density <-> density, ps2, NA > >ALL_Jack1 <-> ALL_Jack1, theta1, NA > >dec_mean_EVI <-> density, theta2, NA > >dec_mean_EVI <-> ALL_Jack1, theta2, NA > >density <-> ALL_Jack1, theta3, NA > > I then try to run the sem analysis using the matrix and model. > > >sem_1 <- sem(ram = tmodel, S = S_matrix, N = 88, fixed.x > c("dec_mean_EVI")) > >summary(sem_1) > > However, I only get the following error message: > > "Error in sem.default(ram = ram, S = S, N = N, param.names = pars, > var.names = vars, : > The model has negative degrees of freedom = -3 > In addition: Warning message: > In sem.default(ram = ram, S = S, N = N, param.names = pars, var.names > vars, : > The following variables have no variance or error-variance parameter > (double-headed arrow): > density, ALL_Jack1, dec_mean_EVI , density , density , > ALL_Jack1 > The model is almost surely misspecified; check also for missing > covariances." > > It must be obvious to those experienced with sem, but I can't yet see > where I have gone wrong in constructing my matrix or model, any thoughts > would be much appreciated. > thanks in advance, > Alex > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code.