[R] SEM : Warning : Could not compute QR decomposition of Hessian

John Fox jfox at mcmaster.ca
Thu Aug 26 17:02:52 CEST 2010


Dear Anne,

> -----Original Message-----
> From: Anne Mimet [mailto:amimet at mnhn.fr]
> Sent: August-26-10 7:45 AM
> To: John Fox
> Cc: r-help at r-project.org
> Subject: RE: [R] SEM : Warning : Could not compute QR decomposition of
> Hessian
> 
> Dear John,
> 
> Thank a lot for your answer. Indeed, i misunderstood the place of
> indicator variables in the path diagram, i thank they were considered
> as exogeneous variables. Thanks for your answer, i changed variances
> of latente variables to NA, and remove indicator variables from
> fixed.x argument. Unfortunately, it doesn't change the warning message.
> I place the path diagram of the model here : http://yfrog.com/n7pathdiagj
> 
> Because of the diagram complexity, i used some colors for the
> different paths :
> - green for environnental variable
> - brown for landscape variables
> - orange for municipalities variables
> - blue for inter-municipalitie variables
> - red for departemental variable
> - grey for landuse variables
> - and in dark the relations between indicator and latente variables,
> errors, variances and covariances.
> 
> There must be other mistakes in the model, i can't find them.

You haven't sent me your updated R code, so I'm just going by the path
diagram, but, yes, I think that there are more problems. I assume that the
circles represent error variables, which in the RAM formulation used by
sem() would appear as self-directed double-headed arrows. If that's the
case, why do observed exogenous variables like dist.protect have an error
component? As well, if the absence of double-headed arrows between pairs of
exogenous variables implies that they are uncorrelated, then your model has
many such constraints. Did you really intend that? I'm also not convinced
that the model is identified -- there are, I believe, just 6 exogenous
variables -- but the (possibly inadvertent) constraints placed on error
correlations may indentify it. Just to be clear, there is no guarantee that
sem() will be able to estimate your model even if it is specified as you
intend and even if it is identified.	

At this point, I'd make two suggestions: First, if you want to continue to
try to use the sem package, and if you haven't already done so, I'd suggest
that you read my 2006 article "Structural equation modeling with the sem
package in R", Structural Equation Modeling, 13:465–486, which is referenced
in ?sem. Second, there are apparently sufficient problems here that you
would do well to find someone to talk to about the formulation of your
model.

Regards,
 John

> 
> Thanks again,
> 
> Regards,
> 
> Anne
> 
> 
> 
> John Fox <jfox at mcmaster.ca> a écrit :
> 
> > Dear Anne,
> >
> > I started to diagram your model but stopped when I noticed some
problems:
> > (1) Some variables, such as pays_alti, are clearly endogenous, since
they
> > have arrows pointing to them, yet are declared as fixed exogenous
> variables;
> > that clearly doesn't make sense. (2) You've placed conflicting
constraints
> > on factor loadings and the variances of latent variables, for example
> > setting both the path from the factor type_paysage to the indicator
> > pays_alti and the variance of type_paysage to 1; again, that doesn't
make
> > sense.
> >
> > Do you have a path diagram for the model that you're trying to fit? It
> would
> > in particular be helpful to have a diagram of the structural part of the
> > model.
> >
> > 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 Anne Mimet
> >> Sent: August-25-10 10:27 AM
> >> To: r-help at r-project.org
> >> Subject: [R] SEM : Warning : Could not compute QR decomposition of
Hessian
> >>
> >> Hi useRs,
> >>
> >> I'm trying for the first time to use a sem. The model finally runs,
> >> but gives a warning saying :
> >> "In sem.default(ram = ram, S = S, N = N, param.names = pars, var.names
> >> = vars,  :   Could not compute QR decomposition of Hessian.
> >> Optimization probably did not converge. "
> >>
> >> I found in R-help some posts on this warning, but my attemps to modify
> >> the code didn't change the warning message (i tried to give an error
> >> of 1 to the latente variables). I can't figure what the problem is.
> >> Here is the code :
> >>
> >>
> >> tab<-read.table("F:/Mes documents/stats/sem/donnees_corr.txt",
> >> header=T, sep="",na.strings = "NA")
> >>
> >> tab[,46]<-as.factor(tab[,46])
> >> tab[,24]<-as.factor(tab[,24])
> >> tab[,40]<-as.factor(tab[,40])
> >>
> >> fct_cor<-hetcor(tab, ML=T)
> >> cor_tab<- fct_cor$correlations
> >>
> >> moment_tab<-read.moments(diag=F, names=c('c1','c2', 'c3','c4','c5',
> >> 'c6','c7', 'c8', 'c9',  'ind_plando', 'long_sup15', 'long_inf15',
> >> 'pente', 'est', 'sud','ouest', 'nord' ,'reg_hydriq', 'prof_sol',
> >> 'pierro', 'efferv', 'struct','drainage','texture', 'route1_pond',
> >> 'route2_pond',
> >> 'pourcactif', 'tx_chomage', 'pourcagric', 'pourc_jeunes', 'pop99',
> >> 'rev_imp_foyer','eq_CONC', 'eq_sante', 'eq_edu', 'sold_nat',
> >> 'sold_mig', 'tps_dom_emp','TXEMPLOI','ORIECO','dist_paris','axe1',
> >> 'axe2', 'axe3',
'dist_protect','urbanisation','pays_incli','pays_alti'))
> >> # after comes the moment matrix (triangular)
> >>
> >> ram_tab<-specify.model()
> >> type_paysage->pays_alti,NA,1
> >> type_paysage->pays_incli, pays2, NA
> >> pedo->reg_hydriq, NA, 1
> >> pedo->prof_sol, ped8, NA
> >> pedo->pierro, ped9, NA
> >> pedo->efferv, ped10, NA
> >> pedo->struct, ped11, NA
> >> pedo->drainage, ped12, NA
> >> pedo->texture, ped13, NA
> >> adj_99->c1, NA,1
> >> adj_99->c2, adj2,NA
> >> adj_99->c3, adj3,NA
> >> adj_99->c4, adj4,NA
> >> adj_99->c5, adj5,NA
> >> adj_99->c6, adj6,NA
> >> adj_99->c7, adj7,NA
> >> adj_99->c8, adj8,NA
> >> adj_99->c9, adj9,NA
> >> etat_hexa->axe1, NA, 1
> >> etat_hexa->axe2, et2, NA
> >> etat_hexa->axe3, et3, NA
> >> socioBV->sold_mig, BV1, NA
> >> socioBV->sold_nat, BV2, NA
> >> socioBV->TXEMPLOI, BV3, NA
> >> socioBV->ORIECO, BV4, NA
> >> socioBV->tps_dom_emp, NA, 1
> >> eqBV->eq_CONC, NA, 1
> >> eqBV->eq_sante, eq2, NA
> >> eqBV->eq_edu, eq3, NA
> >> socio_com->pourcactif , NA, 1
> >> socio_com->tx_chomage, com2, NA
> >> socio_com->pourcagric, com3, NA
> >> socio_com->pourc_jeunes, com4, NA
> >> socio_com->pop99, com5, NA
> >> socio_com->rev_imp_foyer, com7, NA
> >> access_hexa->route1_pond, NA, 1
> >> access_hexa->route2_pond, acc2, NA
> >> hydro->ind_plando, NA, 1
> >> hydro->long_sup15, eau2, NA
> >> hydro->long_inf15, eau3, NA
> >> topog->pente, NA, 1
> >> topog->est, top2, NA
> >> topog->sud, top3, NA
> >> topog->nord, top4, NA
> >> topog->ouest, top5, NA
> >> dist_protect-> urbanisation, cor1,NA
> >> dist_protect-> adj_99, cor2, NA
> >> dist_protect-> etat_hexa, cor3, NA
> >> topog-> urbanisation, cor4, NA
> >> topog-> adj_99, cor5, NA
> >> topog-> etat_hexa, cor6, NA
> >> topog-> access_hexa, cor7, NA
> >> topog<->hydro, cor8, NA
> >> topog<->pedo, cor9, NA
> >> pedo-> urbanisation, cor10, NA
> >> pedo-> adj_99, cor11, NA
> >> pedo-> etat_hexa, cor12, NA
> >> pedo<->hydro, cor1, NA
> >> hydro-> urbanisation, cor13, NA
> >> hydro-> adj_99, cor14, NA
> >> hydro-> etat_hexa, cor15, NA
> >> access_hexa-> urbanisation, cor16, NA
> >> access_hexa-> etat_hexa, cor17, NA
> >> socio_com-> etat_hexa, cor18, NA
> >> socio_com-> adj_99, cor19, NA
> >> socio_com-> urbanisation, cor20, NA
> >> dist_paris-> socio_com, cor21, NA
> >> dist_paris-> access_hexa, cor22, NA
> >> dist_paris-> adj_99, cor23, NA
> >> dist_paris-> etat_hexa, cor24, NA
> >> dist_paris-> urbanisation, cor25, NA
> >> dist_paris-> socioBV, cor26, NA
> >> socioBV-> eqBV, cor27, NA
> >> socioBV-> urbanisation, cor28, NA
> >> socioBV-> adj_99, cor29, NA
> >> socioBV-> etat_hexa, cor30, NA
> >> eqBV-> etat_hexa, cor31, NA
> >> eqBV-> adj_99, cor32, NA
> >> eqBV-> urbanisation, cor33, NA
> >> etat_hexa-> urbanisation, cor34, NA
> >> etat_hexa<-> adj_99, cor35, NA
> >> adj_99-> urbanisation, cor36, NA
> >> type_paysage-> urbanisation, cor37, NA
> >> type_paysage-> adj_99, cor38, NA
> >> type_paysage-> etat_hexa, cor39, NA
> >> dist_paris<->dist_paris, auto1, NA
> >> dist_protect<->dist_protect, auto2, NA
> >> c1 <-> c1, auto4, NA
> >> c2 <-> c2 , auto5, NA
> >> c3 <->  c3 , auto6, NA
> >> c4 <->  c4 , auto7, NA
> >> c5 <->  c5 , auto8, NA
> >> c6 <->  c6 , auto9, NA
> >> c7 <->  c7 , auto10, NA
> >> c8 <-> c8 , auto11, NA
> >> c9 <-> c9 , auto12, NA
> >> ind_plando <->  ind_plando, auto13, NA
> >> long_sup15 <-> long_sup15 , auto14, NA
> >> long_inf15 <->  long_inf15  , auto15, NA
> >> pente <-> pente , auto16, NA
> >> est<->  est , auto17, NA
> >> sud <->  sud , auto18, NA
> >> ouest<-> ouest , auto19, NA
> >> nord <->  nord , auto20, NA
> >> reg_hydriq <-> reg_hydriq , auto21, NA
> >> prof_sol<-> prof_sol , auto22, NA
> >> pierro <-> pierro , auto23, NA
> >> efferv <->  efferv , auto24, NA
> >> struct <-> struct , auto25, NA
> >> drainage <-> drainage, auto26, NA
> >> texture <->  texture , auto27, NA
> >> route1_pond  <->route1_pond  , auto30, NA
> >> route2_pond <-> route2_pond , auto31, NA
> >> pourcactif  <->  pourcactif , auto32, NA
> >> tx_chomage <->  tx_chomage, auto33, NA
> >> pourcagric <-> pourcagric , auto34, NA
> >> pourc_jeunes<-> pourc_jeunes  , auto36, NA
> >> pop99<-> pop99  , auto36, NA
> >> rev_imp_foyer <->   rev_imp_foyer , auto38, NA
> >> eq_CONC <-> eq_CONC, auto39, NA
> >> eq_sante <->eq_sante , auto40, NA
> >> eq_edu<->eq_edu   , auto41, NA
> >> sold_nat<->  sold_nat , auto42, NA
> >> sold_mig  <->  sold_mig  , auto43, NA
> >> tps_dom_emp  <->  tps_dom_emp , auto44, NA
> >> TXEMPLOI  <-> TXEMPLOI  , auto45, NA
> >> ORIECO  <-> ORIECO  , auto46, NA
> >> axe1  <->  axe1 , auto47, NA
> >> axe2  <->  axe2 , auto48, NA
> >> axe3  <-> axe3 , auto49, NA
> >> pays_incli<->pays_incli, auto70, NA
> >> pays_alti<->pays_alti, auto71, NA
> >> urbanisation<->  urbanisation , auto50, NA
> >> type_paysage <-> type_paysage ,  NA,1
> >> adj_99  <-> adj_99 , NA  ,1
> >> socioBV  <-> socioBV ,  NA,1
> >> eqBV  <-> eqBV  , NA ,1
> >> socio_com  <-> socio_com  , NA,1
> >> access_hexa <-> access_hexa , NA,1
> >> hydro  <-> hydro ,  NA ,1
> >> topog <->  topog ,  NA ,1
> >> pedo  <->  pedo  ,  NA ,1
> >> eqBV  <->  eqBV ,  NA ,1
> >> etat_hexa<->etat_hexa,  NA ,1
> >>
> >> sem_dyn<-sem(ram_tab, moment_tab, N=1176, raw=T,
> >> fixed.x=c("pays_alti","reg_hydriq", "c1","axe1", "tps_dom_emp",
> >> "pourcactif",
> >> "route1_pond","ind_plando","pente"), par.size="ones")
> >>
> >>
> >> Any help would be greatly appreciate.
> >>
> >> Thank you,
> >>
> >> Anne
> >>
> >> ______________________________________________
> >> R-help at 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.
> >
> >
> >
> 
> 
> 
> Anne Mimet
> Chargée d'étude, CERSP, MNHN
> Doctorante LADYSS
> LADYSS, 2, rue valette, 75005 paris
> 06 62 31 44 71
> 
> 



More information about the R-help mailing list