[R] Structural Equation Models(SEM)

William Revelle lists at revelle.net
Wed Nov 25 18:42:31 CET 2009


Ralf,
   If you are representing this as a factor model, you need to have 
the factors lead to the variables:

model.RLIM <- specify.model()
   f1 ->  R  , laddR,  NA
     f1 ->  L    , laddL,  NA
    f1 ->  I    , laddI,  NA
    f1 ->   M,  laddM,  NA
    R <->  R,  dR,NA
    L <->  L,  dL,NA
    I <->  I,  dI,NA
    M <->  M,  dM,NA
    f1 <->  f1,  df1,NA

>  sem(mod1,tcv,101)

  Model Chisquare =  5.955411   Df =  3

        F1R        F1L        F1I        x1e        x2e        x3e        x4e
0.20301850 0.28443881 0.39421470 0.10734247 0.09951485 0.09105800 0.31702970

  Iterations =  24


For a simple way to create the sem commands from an exploratory 
factor analysis, you might want to look at the psych package and the 
vignette: psych_for_sem.

e.g.,
>  library(psych)
>  f1 <- fa(tcv)     #do the exploratory factor analysis

>  mod1 <- structure.diagram(f1,errors=TRUE)  #draw the path diagram 
>from the model and create the sem commands
>  mod1
   Path      Parameter StartValue
1 MR1->R    F1R                
2 MR1->L    F1L                
3 MR1->I    F1I                
4 R<->R     x1e                
5 L<->L     x2e                
6 I<->I     x3e                
7 M<->M     x4e                
8 MR1<->MR1 <fixed>   1
>  sem(mod1,tcv,101)  #do the sem

  Model Chisquare =  5.955411   Df =  3

        F1R        F1L        F1I        x1e        x2e        x3e        x4e
0.20301850 0.28443881 0.39421470 0.10734247 0.09951485 0.09105800 0.31702970

  Iterations =  24

Best wishes,

Bill

>


At 6:23 PM +0200 11/25/09, Ralf Finne wrote:
>Hi R-colleagues.
>
>In the sem-package
>i have a problem to introduce hidden variables.
>As a simple example I take an ordinary factor analysis.
>The program:
>
>cmat=c(0.14855886, 0.05774635, 0.08003300, 0.04900990,
>       0.05774635, 0.18042029, 0.11213013, 0.03752475,
>             0.08003300, 0.11213013, 0.24646337, 0.03609901,
>       0.04900990, 0.03752475, 0.03609901, 0.31702970)
>rn=c("R","L","I","M")
>cn=c("R","L","I","M")
>
>tcv=matrix(cmat,nrow=4,ncol=4,dimnames=list(rn,cn))
>
>model.RLIM <- specify.model()
>    R  ->  f1, laddR,  NA
>    L  ->  f1, laddL,  NA
>    I  ->  f1, laddI,  NA
>    M  ->  f1, laddM,  NA
>    R <->  R,  dR,NA
>    L <->  L,  dL,NA
>    I <->  I,  dI,NA
>    M <->  M,  dM,NA
>    f1 <->  f1,  df1,NA
>
>sem.RLIM=sem(model.RLIM,tcv,101)
>
>The output:
>Error in dimnames(x) <- dn :
>  length of 'dimnames' [2] not equal to array extent
>In addition: Warning messages:
>1: In sem.default(ram = ram, S = S, N = N, param.names = pars, 
>var.names = vars,  :
>   singular Hessian: model is probably underidentified.
>
>2: In sem.default(ram = ram, S = S, N = N, param.names = pars, 
>var.names = vars,  :
>   refitting without aliased parameters.
>
>I use R version 2.10.0 (2009-10-26) under Windows XP
>sem_0.9-19  version.
>
>Where did I make a mistake? Have anyone of  you knowledge
>of any other package doing similar things like Confirmative Factor Analysis
>Ralf Finne
>Novia University of Applied Science
>Vasa  Finland
>
>______________________________________________
>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.


-- 
William Revelle		http://personality-project.org/revelle.html
Professor			http://personality-project.org/personality.html
Department of Psychology             http://www.wcas.northwestern.edu/psych/
Northwestern University	http://www.northwestern.edu/
Use R for psychology                       http://personality-project.org/r
It is 5 minutes to midnight	http://www.thebulletin.org




More information about the R-help mailing list