Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • GSEM CFA Likert Scale

    Hello,

    I am exploring the dimensions of a 4 scale likert measure (forced choice strongly disagree to strongly agree), N=2966. It was designed to measure participant-developed items that represent overall relationship quality. However, the participants identified different themes they wanted to include, such as respect and communication.

    I ran EFA using the following code:
    factor mcdvalued mcdconnect mcdsafe mcdjudge mcdkind mcdattend mcdrush mcddecide mcdinfo mcdunderstood mcdquestion mcdtouch mcdstaff
    rotate, promax blank(.3)

    Rotated, the results indicate low to moderate factor loadings across two factors (.31-.68). Unrotated, the first Factor has an eigenvalue of 11.93, and the proportion of variance is .99.

    When I restrict factors to 2, the factor loadings are between .31-.71. The Single factor model has factor loadings greater than .9.

    My CFA has not achieved convergence, and my guess is that it is a user/coding error.

    I tried a single factor model using:

    gsem (Relationship -> mcdvalued, family(ordinal) link(logit)) ///
    (Relationship -> mcdconnect, family(ordinal) link(logit)) ///
    (Relationship -> mcdsafe, family(ordinal) link(logit)) ///
    (Relationship -> mcdjudge, family(ordinal) link(logit)) ///
    (Relationship -> mcdkind, family(ordinal) link(logit)) ///
    (Relationship -> mcdattend, family(ordinal) link(logit)) ///
    (Relationship -> mcdrush, family(ordinal) link(logit)) ///
    (Relationship -> mcddecide, family(ordinal) link(logit)) ///
    (Relationship -> mcdinfo, family(ordinal) link(logit)) ///
    (Relationship -> mcdunderstood, family(ordinal) link(logit)) ///
    (Relationship -> mcdquestion, family(ordinal) link(logit)) ///
    (Relationship -> mcdtouch, family(ordinal) link(logit)) ///
    (Relationship -> mcdstaff, family(ordinal) link(logit)) ///
    (Relationship@1), latent(Relationship ) nocapslatent


    And then the following two factor model:
    gsem (Valued -> mcdvalued, family(ordinal) link(logit)) ///
    (Valued -> mcdconnect, family(ordinal) link(logit)) ///
    (Valued -> mcdsafe, family(ordinal) link(logit)) ///
    (Valued -> mcdjudge, family(ordinal) link(logit)) ///
    (Valued -> mcdkind, family(ordinal) link(logit)) ///
    (Valued -> mcdrush, family(ordinal) link(logit)) ///
    (Relationship -> mcdattend, family(ordinal) link(logit)) ///
    (Relationship -> mcddecide, family(ordinal) link(logit)) ///
    (Relationship -> mcdinfo, family(ordinal) link(logit)) ///
    (Relationship -> mcdunderstood, family(ordinal) link(logit)) ///
    (Relationship -> mcdquestion, family(ordinal) link(logit)) ///
    (Relationship -> mcdtouch, family(ordinal) link(logit)) ///
    (Relationship -> mcdstaff, family(ordinal) link(logit)) ///
    (Valued) (Relationship), var(Valued@1 Relationship@1)​​​​​​​


    After digging through other posts and resources, I realized that I should anticipate co-variance between the latent variables:
    gsem (Value -> mcdvalued, family(ordinal) link(logit)) ///
    (Value -> mcdconnect, family(ordinal) link(logit)) ///
    (Value-> mcdsafe, family(ordinal) link(logit)) ///
    (Value -> mcdjudge, family(ordinal) link(logit)) ///
    (Value -> mcdkind, family(ordinal) link(logit)) ///
    (Value -> mcdrush, family(ordinal) link(logit)) ///
    (Relationship -> mcdattend, family(ordinal) link(logit)) ///
    (Relationship -> mcddecide, family(ordinal) link(logit)) ///
    (Relationship -> mcdinfo, family(ordinal) link(logit)) ///
    (Relationship -> mcdunderstood, family(ordinal) link(logit)) ///
    (Relationship -> mcdquestion, family(ordinal) link(logit)) ///
    (Relationship -> mcdtouch, family(ordinal) link(logit)) ///
    (Relationship -> mcdstaff, family(ordinal) link(logit)) ///
    (Relationship@1 Value@1), latent(Relationship Value ) cov(Relationship Value) nocapslatent​​​​​​​


    Does anyone have suggestions for coding the CFA? As you will see in the dataex file, there is VERY little variance within and between items. Any input is greatly appreciated! Thank you!

    Code:
    * Example generated by -dataex-. For more info, type help dataex
    clear
    input int(mcdvalued mcdconnect mcdsafe mcdjudge mcdkind mcdattend mcdrush mcddecide mcdinfo mcdunderstood mcdquestion mcdtouch mcdstaff)
    4 4 4 4 4 4 4 4 4 4 4 2 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 3 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    3 3 3 3 3 3 3 3 3 3 3 3 3
    4 4 4 4 4 4 4 4 4 4 4 4 4
    3 3 3 3 3 3 3 3 3 3 3 3 3
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 4 4 4 4 4 4 4 4 4 4
    end
    label values mcdvalued mcdagree
    label values mcdconnect mcdagree
    label values mcdsafe mcdagree
    label values mcdjudge mcdagree
    label values mcdkind mcdagree
    label values mcdattend mcdagree
    label values mcdrush mcdagree
    label values mcddecide mcdagree
    label values mcdinfo mcdagree
    label values mcdunderstood mcdagree
    label values mcdquestion mcdagree
    label values mcdtouch mcdagree
    label values mcdstaff mcdagree
    label def mcdagree 3 "somewhat agree", modify
    label def mcdagree 4 "completely agree", modify
    label def mcdagree 2 "somewhat disagree", modify

  • #2
    Originally posted by Allison Cusano View Post
    I am exploring the dimensions of a 4 scale likert measure . . .
    From the EFA, it looks as if you'd be hard pressed to justify more than a single dimension. If you do
    Code:
    contract _all, freq(count)
    list, noobs
    how many unique combinations of responses do you get despite the nearly 3000 respondents?

    Another avenue to consider: try constructing a polychoric correlation matrix of the items, for example, using the user-written polychoric (use search to find it).

    If pairs of items are nearly collinear, polychoric won't be able to compute derivatives in its search for the coefficient and will return a missing value. You can use those holes in the polychoric correlation matrix to pare down the list of items into a submatrix that you can feed to factormat. If that still strongly leans toward a single latent factor, then you're probably not going to be able to tease out a second latent factor with gsem.

    An added benefit: by culling the variable list of near-collinear items in that way, gsem might be able to more readily converge.

    Comment


    • #3
      Thank you very much Joseph Coveney I agree about the single dimension. 81% of the respondents have the same response pattern so, as you mentioned, it's unlikely I'll find anything different. The sample is large (this is actually a reduced sample), but narrow. I'd like to see more diverse data collection before pushing CFA, but I was asked to try anyhow. Thanks for your help. Very much appreciated!



      Last edited by Allison Cusano; 20 Jan 2025, 16:08.

      Comment

      Working...
      X