Hello!
I'm trying to do some confirmatory factor analysis with for ordered Likert
scale items using sem and lavaan packages. So far I have read a lot and
searched a lot but working example has so far eluded me. Can someone please
take a look at the data and tell me if what I'm doing is correct (lavaan
case) and where is the error (sem case)?

Original data (ordered factors):
EI.data <- structure(list(Q21a_makeAnythingEntrep_likert = structure(c(3L,
1L, 7L, 1L, 1L, 6L, 1L, 1L, 5L, 1L, 1L, 1L, 3L, 4L, 1L, 7L, 2L,
1L, 7L, 7L, 1L, 3L, 1L, 2L, 5L, 1L, 5L, 2L, 4L, 1L, 1L, 2L), .Label =
c("1",
"2", "3", "4", "5", "6", "7"), class = c("ordered", "factor")),
    Q21b_goalBecomingEntrep_likert = structure(c(3L, 1L, 7L,
    1L, 1L, 6L, 1L, 1L, 7L, 1L, 1L, 7L, 3L, 2L, 2L, 7L, 2L, 3L,
    7L, 7L, 1L, 4L, 1L, 2L, 4L, 2L, 6L, 3L, 5L, 1L, 1L, 1L), .Label =
c("1",
    "2", "3", "4", "5", "6", "7"), class = c("ordered", "factor"
    )), Q21c_effortFirm_likert = structure(c(3L, 3L, 7L, 1L,
    1L, 6L, 1L, 1L, 5L, 1L, 1L, 5L, 3L, 3L, 1L, 7L, 2L, 2L, 7L,
    7L, 1L, 5L, 1L, 2L, 4L, 2L, 7L, 2L, 5L, 1L, 1L, 1L), .Label = c("1",
    "2", "3", "4", "5", "6", "7"), class = c("ordered", "factor"
    )), Q21d_createFirm_likert = structure(c(3L, 3L, 7L, 1L,
    1L, 6L, 1L, 2L, 7L, 1L, 1L, 7L, 3L, 6L, 3L, 7L, 2L, 2L, 7L,
    5L, 1L, 6L, 1L, 2L, 4L, 5L, 7L, 5L, 4L, 1L, 5L, 6L), .Label = c("1",
    "2", "3", "4", "5", "6", "7"), class = c("ordered", "factor"
    )), Q21e_.thoughtFirm_likert = structure(c(3L, 6L, 7L, 1L,
    1L, 6L, 2L, 1L, 7L, 1L, 4L, 7L, 5L, 4L, 2L, 7L, 2L, 2L, 7L,
    3L, 1L, 5L, 1L, 2L, 6L, 2L, 7L, 4L, 5L, 2L, 6L, 2L), .Label = c("1",
    "2", "3", "4", "5", "6", "7"), class = c("ordered", "factor"
    )), Q21f_intentionFirm_likert = structure(c(4L, 4L, 7L, 1L,
    1L, 6L, 1L, 2L, 7L, 1L, 1L, 7L, 5L, 6L, 3L, 7L, 2L, 2L, 7L,
    2L, 1L, 7L, 1L, 2L, 6L, 4L, 7L, 7L, 4L, 2L, 5L, 5L), .Label = c("1",
    "2", "3", "4", "5", "6", "7"), class = c("ordered", "factor"
    ))), .Names = c("Q21a_makeAnythingEntrep_likert",
"Q21b_goalBecomingEntrep_likert",
"Q21c_effortFirm_likert", "Q21d_createFirm_likert",
"Q21e_.thoughtFirm_likert",
"Q21f_intentionFirm_likert"), row.names = c(NA, 32L), class = "data.frame")

Original data (continuous numbers):
EI.dataN <- structure(list(Q21a_makeAnythingEntrep_likert = c(3L, 1L, 7L,
1L, 1L, 6L, 1L, 1L, 5L, 1L, 1L, 1L, 3L, 4L, 1L, 7L, 2L, 1L, 7L,
7L, 1L, 3L, 1L, 2L, 5L, 1L, 5L, 2L, 4L, 1L, 1L, 2L),
Q21b_goalBecomingEntrep_likert = c(3L,
1L, 7L, 1L, 1L, 6L, 1L, 1L, 7L, 1L, 1L, 7L, 3L, 2L, 2L, 7L, 2L,
3L, 7L, 7L, 1L, 4L, 1L, 2L, 4L, 2L, 6L, 3L, 5L, 1L, 1L, 1L),
    Q21c_effortFirm_likert = c(3L, 3L, 7L, 1L, 1L, 6L, 1L, 1L,
    5L, 1L, 1L, 5L, 3L, 3L, 1L, 7L, 2L, 2L, 7L, 7L, 1L, 5L, 1L,
    2L, 4L, 2L, 7L, 2L, 5L, 1L, 1L, 1L), Q21d_createFirm_likert = c(3L,
    3L, 7L, 1L, 1L, 6L, 1L, 2L, 7L, 1L, 1L, 7L, 3L, 6L, 3L, 7L,
    2L, 2L, 7L, 5L, 1L, 6L, 1L, 2L, 4L, 5L, 7L, 5L, 4L, 1L, 5L,
    6L), Q21e_.thoughtFirm_likert = c(3L, 6L, 7L, 1L, 1L, 6L,
    2L, 1L, 7L, 1L, 4L, 7L, 5L, 4L, 2L, 7L, 2L, 2L, 7L, 3L, 1L,
    5L, 1L, 2L, 6L, 2L, 7L, 4L, 5L, 2L, 6L, 2L), Q21f_intentionFirm_likert
= c(4L,
    4L, 7L, 1L, 1L, 6L, 1L, 2L, 7L, 1L, 1L, 7L, 5L, 6L, 3L, 7L,
    2L, 2L, 7L, 2L, 1L, 7L, 1L, 2L, 6L, 4L, 7L, 7L, 4L, 2L, 5L,
    5L)), .Names = c("Q21a_makeAnythingEntrep_likert",
"Q21b_goalBecomingEntrep_likert",
"Q21c_effortFirm_likert", "Q21d_createFirm_likert",
"Q21e_.thoughtFirm_likert",
"Q21f_intentionFirm_likert"), class = "data.frame", row.names = c(NA,
-32L))

Lavaan case:
EI.model.lavaan <- ' EI  =~ Q21a_makeAnythingEntrep_likert +
Q21b_goalBecomingEntrep_likert + Q21c_effortFirm_likert +
Q21d_createFirm_likert + Q21e_.thoughtFirm_likert +
Q21f_intentionFirm_likert '
EI.fit <- cfa(EI.model.lavaan, data = EI.data)
summary(EI.fit, fit.measures = TRUE)
predict(EI.fit)

Sem continuous items case:

EI.dataN.cov <- cov(EI.dataN)
model.EI.dataN <- specifyModel()
EI -> Q21a_makeAnythingEntrep_likert, NA, 1
EI -> Q21b_goalBecomingEntrep_likert, ei1
EI -> Q21c_effortFirm_likert, ei2
EI -> Q21d_createFirm_likert, ei3
EI -> Q21e_.thoughtFirm_likert, ei4
EI -> Q21f_intentionFirm_likert, ei5
EI <-> EI, var1
Q21a_makeAnythingEntrep_likert <-> Q21a_makeAnythingEntrep_likert, error1
Q21b_goalBecomingEntrep_likert <-> Q21b_goalBecomingEntrep_likert, error2
Q21c_effortFirm_likert <-> Q21c_effortFirm_likert, error3
Q21d_createFirm_likert <-> Q21d_createFirm_likert, error4
Q21e_.thoughtFirm_likert <-> Q21e_.thoughtFirm_likert, error5
Q21f_intentionFirm_likert <-> Q21f_intentionFirm_likert, error6

EI.dataN.cfa <- sem( model.EI.dataN, EI.dataN.cov, nrow(EI.dataN))
summary(EI.dataN.cfa)
fscores(EI.dataN.cfa, EI.dataN)

Sem ordered items case:
hcor <- function(data) hetcor(data, std.err=FALSE)$correlations
R.EI.data <- hcor(EI.data)
EI.model.sem.o <- specifyModel()

EI -> Q21a_makeAnythingEntrep_likert, NA, 1
EI -> Q21b_goalBecomingEntrep_likert, ei1
EI -> Q21c_effortFirm_likert, ei2
EI -> Q21d_createFirm_likert, ei3
EI -> Q21e_.thoughtFirm_likert, ei4
EI -> Q21f_intentionFirm_likert, ei5
EI <-> EI, var1
Q21a_makeAnythingEntrep_likert <-> Q21a_makeAnythingEntrep_likert, error1
Q21b_goalBecomingEntrep_likert <-> Q21b_goalBecomingEntrep_likert, error2
Q21c_effortFirm_likert <-> Q21c_effortFirm_likert, error3
Q21d_createFirm_likert <-> Q21d_createFirm_likert, error4
Q21e_.thoughtFirm_likert <-> Q21e_.thoughtFirm_likert, error5
Q21f_intentionFirm_likert <-> Q21f_intentionFirm_likert, error6

cfaEI.sem.o <- sem(EI.model.sem.o, R.EI.data, nrow(EI.data))
summary(cfaEI.sem.o)
fscores(cfaEI.sem.o, EI.data)

Error (can't get fscrores):
Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric

Thank You!
Janis

	[[alternative HTML version deleted]]

