require(OpenMx) kap23 <- read.table('TwoFactor_Data.dat') manifests <- c('V1', 'V2', 'V3', 'V4', 'V5', 'V6') selfevaluation <- c('V1', 'V2', 'V3') foreignevaluation <- c('V4', 'V5', 'V6') latents <- c('Eta1', 'Eta2') congeneric <- mxModel('Congeneric Model', manifestVars = manifests, latentVars = latents, type = 'RAM', mxData(observed = kap23, type = 'raw', means = colMeans(kap23)), mxPath(#factor loadings Eta1 from = 'Eta1', to = selfevaluation, arrows = 1, free = c(FALSE, TRUE, TRUE), values = 1, labels = c('lambda111', 'lambda121', 'lambda131')), mxPath(#factor loadings Eta2 from = 'Eta2', to = foreignevaluation, arrows = 1, free = c(FALSE, TRUE, TRUE), values = 1, labels = c('lambda211', 'lambda221', 'lambda231')), mxPath(#residual variances from = manifests, arrows = 2, free = TRUE, values = 0.2, labels = c('e1', 'e2', 'e3', 'e4', 'e5', 'e6')), mxPath(#latent covariance from = 'Eta1', to = 'Eta2', arrows = 2, free = TRUE, labels = c('Cov')), mxPath(#latent variance from = latents, arrows = 2, free = TRUE, labels = c('varEta1', 'varEta2')), mxPath(#intercepts from = 'one', to = manifests, free = FALSE, values = 0), mxPath(#means from = 'one', to = latents, free = TRUE, values = 0, labels = c('muEta1', 'muEta2')) ) congeneric.fit <- mxRun(congeneric) summary(congeneric)