Elizabeth Pringle
2009-May-01 22:59 UTC
[R] computationally singular and lack of variance parameters in SEM
Hi all, I am trying to set up a simple path analysis in the SEM package, but I am having some trouble. I keep getting the following error message or something similar with my model, and I'm not sure what I'm doing wrong: Error in solve.default(C) : system is computationally singular: reciprocal condition number 2.2449e-20 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): Ants, Herbivory The model is almost surely misspecified; check also for missing covariances. I have tried my data set with both a correlation (cor) and a variance (var) matrix, but both produce the same error, and I'm not sure which one is correct. The error message about the variables that have no variance or error-variance parameters are for my exogenous variables (or those that I am not listing as "fixed.x=" in the model). I have tried both single and double arrows between ants and coccoids, but neither works. I am not sure that I know what it means for the system to be computationally singular (sometimes it says it is exactly singular). I am setting N=80 because I have four observed variables with 20 observations each, I hope this is correct. I have attached the path diagram for my model as a jpeg. My R code is the following: data<-read.table("ChamelaColonySize.csv",header=TRUE,sep=",") attach(data) cor(data,method="spearman") CorMatrix<-matrix(c( + 1, 0, 0, 0, + -0.4974, 1, 0, 0, + -0.4403, 0.7965, 1, 0, + 0.1250, 0.2602, 0.1825, 1),ncol=4,byrow=T) rownames(CorMatrix)<-colnames(CorMatrix)<-c('Herbivory','Ants','Coccoids', 'Space') ramcor<-specify.model() Coccoids<->Ants, gam12, NA Space->Ants, gam12, NA Ants->Herbivory,bet21, NA ?read.table sem<-sem(ram=ramcor,S=CorMatrix,N=80,fixed.x=c('Coccoids','Space')) var(data) VarMatrix<-matrix(c( + 0.73, 0, 0, 0, + -86.11, 35877.52, 0, 0, + -23.46, 11569.9, 5620.26, 0, + 0.82, 346.83, 138.21, 34.81),ncol=4,byrow=T) semVar<-sem(ram=ramcor,S=VarMatrix,N=80,fixed.x=c('Coccoids','Space')) Many thanks for any help. Beth -- **************************************************** Elizabeth G. Pringle Department of Biology Stanford University Stanford, CA 94305 (Tel): 650-725-6791 (Fax): 650-462-5968 ****************************************************
John Fox
2009-May-01 23:44 UTC
[R] computationally singular and lack of variance parameters in SEM
Dear Elizabeth,> -----Original Message----- > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]On> Behalf Of Elizabeth Pringle > Sent: May-01-09 6:59 PM > To: r-help at r-project.org > Subject: [R] computationally singular and lack of variance parameters inSEM> > Hi all, > > I am trying to set up a simple path analysis in the SEM package, but I am > having some trouble. I keep getting the following error message orsomething> similar with my model, and I'm not sure what I'm doing wrong: > Error in solve.default(C) : > system is computationally singular: reciprocal condition number 2.2449e- > 20 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): > Ants, Herbivory > The model is almost surely misspecified; check also for missingcovariances.> > I have tried my data set with both a correlation (cor) and a variance(var)> matrix, but both produce the same error, and I'm not sure which one is > correct. The error message about the variables that have no variance or > error-variance parameters are for my exogenous variables (or those that Iam> not listing as "fixed.x=" in the model). I have tried both single anddouble> arrows between ants and coccoids, but neither works. I am not sure that I > know what it means for the system to be computationally singular(sometimes> it says it is exactly singular). I am setting N=80 because I have four > observed variables with 20 observations each, I hope this is correct. Ihave> attached the path diagram for my model as a jpeg. > > My R code is the following: > > data<-read.table("ChamelaColonySize.csv",header=TRUE,sep=",") > > attach(data) > > cor(data,method="spearman") > > CorMatrix<-matrix(c( > > + 1, 0, 0, 0, > > + -0.4974, 1, 0, 0, > > + -0.4403, 0.7965, 1, 0, > > + 0.1250, 0.2602, 0.1825, 1),ncol=4,byrow=T) > > rownames(CorMatrix)<-colnames(CorMatrix)<-c('Herbivory','Ants','Coccoids', > 'Space') > > ramcor<-specify.model() > > Coccoids<->Ants, gam12, NA > > Space->Ants, gam12, NA > > Ants->Herbivory,bet21, NA > > ?read.table > > sem<-sem(ram=ramcor,S=CorMatrix,N=80,fixed.x=c('Coccoids','Space'))If Coccoids is exogenous and Ants endogenous, what can the double-headed arrow linking the two mean? By specifying Coccoids and Space as fixed-exogenous variables, you automatically include their covariance and variances as parameters to be estimated (and these estimates will simply be the corresponding observed covariance and variances, and won't be shown). Your model, however, has no error-variance parameters for the two endogenous variables. You also used the same parameter name, gam12, for two parameters, which will constrain them to be equal; did you really want to do that? Although I can't be sure, I suspect that what you want to do is Coccoids -> Ants, gam11, NA Space -> Ants, gam12, NA Ants -> Herbivory, bet21, NA Ants <-> Ants, phi11, NA Herbivory <-> Herbivory, phi22, NA If that's correct, then this is an observed-variable recursive model and you could simply fit each equation by OLS regression using lm(). I hope this helps, John> > > var(data) > > VarMatrix<-matrix(c( > > + 0.73, 0, 0, 0, > > + -86.11, 35877.52, 0, 0, > > + -23.46, 11569.9, 5620.26, 0, > > + 0.82, 346.83, 138.21, 34.81),ncol=4,byrow=T) > > semVar<-sem(ram=ramcor,S=VarMatrix,N=80,fixed.x=c('Coccoids','Space')) > > > Many thanks for any help. > > Beth > > > > > > -- > **************************************************** > Elizabeth G. Pringle > Department of Biology > Stanford University > Stanford, CA 94305 > (Tel): 650-725-6791 > (Fax): 650-462-5968 > ****************************************************