http://sites.bu.edu/tabrown/cfabook/
http://www.amarkos.gr/cfa-lavaan/
https://github.com/janlammertyn/lavaan-material/blob/master/brown-cfa/allExamples.R
http://lavaan.ugent.be/index.html

“The joy of discovery is certainly the liveliest that the mind of man can ever feel”
- Claude Bernard -

요인분석?

  • 내가 이해한 바로는 여러 문항들이 존재 할 때, 이 문항들 간에 비슷한 특성들을 요인이라는 이름으로 묶어내고, 요인들 간에 관계는 어떠한지 파악하는 것이 요인 분석인 듯. 즉 보이지 않는 인간의 심리를 요인이라는 형태로 시각화 및 수치화하여 구성해낼 수 있음.
  • 더군다나 이런 요인은 문항의 개수보다 적으며(e.g., 30문항이 아니라 3개의 요인으로 인간의 심리를 나타내는 등) 심리적 구성개념인 construct를 대표한다고 할 수 있기 때문에 행동과학 중에서도 특히 심리학 연구에 있어서 여러 장점을 가질 것
    • 인간의 심리는 아주 복잡하지만 몇 개의 문항을 가지고 더 작은 수의 요인이라는 개념으로 나타내고 그 요인들의 관계를 알 수 있다. 오 …
  • 요인분석을 공부할 때 중요한 것은 눈에보이지 않는 요인이란 것을 어떻게 추정하고 구체화하고 개선해나가는가의 과정 그렇다면 도대체 통프 프로그램에는 어떻게 적용하는가?가 중요한 듯 … 그리고 도출된 결과를 어떻게 합리적이게 수정하고 개선해나가는지. 그리고 어떻게 리포팅하는지.

Ch 2. CFA & EFA analysis

OVERVIEW OF THE COMMON FACTOR MODEL

  • 요인분석의 근본적인 목적은 indicator로 불리는 관찰치들을 설명하는 잠재 변수의 수와 특성을 밝히는 것.
  • 관찰변수의 수보다 잠재변수의 수가 적기 때문에 보다 간명하다고 할 수 있음
  • Common factor model이 기원임.
    • 하나의 측정치는 하나 이상의 잠재 변수와 하나의 unique factor를 가짐
      이 원소들을 선형적으로 결합해서 분석에 활용
    • 입력분산공분산 행력은 common variance + unique variance로 쪼갬. + CFA와 EFA의 근본적인 차이는 연구자가 모형에 관해서 사전적인 제약이나 specification restriction이 존재한다는 것.
    • Total var =Common variance + (specific factor variance + measurement error variance)

PROCEDURES OF EFA

  • Exploratory : 사전의 제한이 없기 때문에
  • EFA가 가장 적합한 방법이라고 생각이들면, 어떤 지표를 분석에 활용할지, 샘플의 수와 특성은 연구에 합리적인지 고려필요. 그리고 난 이후에 요인을 도출하는 specific method를 활용하고 적당한 요인의 수, 회전 여부, initial factor matrix를 무엇을 쓸지, 등등. (필요하다면 요인 점수 계산)

- Factor Extraction

  • ML, PF, weighted least squares, unweighted least squares, generalized ,,,
  • ML, PF 가장 많이 사용. (사실 ML이나 ML 계량 한 것만 쓰면됨 PF ㄴㄴ)
    • ML의 장점: 요인 해가 얼마나 인디케이터들의 관계를 잘 reproduce하는지 평가할 수 있다.
      Allows for a statistical evaluation of how well the factor solution is able to reproduce the relationships among the indicators in the input data ( 단 다변량정규성 가정 필요. 깨질 경우 improper solution 도출 가능. Out-of-range).
    • PF는 ML보다 분포의 가정이 덜 있고 improper solution이 덜나옴. 하지만 PF는 goodness-of-fit 도출 안됩니다. 때문에 비정규 일 경우에만 활용. 또한 ML은 full information 추정치로써 표준오차를 제공하기에 CI, 유의도 검정 등이 가능함. (그래도 ML 개량판 써용)
  • EFA/CFA와 PCA 혼돌 하지 말 것.. PCA is more appropriately used as a data reduction technique to reduce larger stet of measures to a smaller more manageable number of composite variables for use in subsequent analyses.

- Factor selection

  • EFA에서 가장 중요한 결정임. Underfactoring, overfactoring 문제는 모형의 타당도와 결과 추정에 문제를 미치기에.
    Overfacor가 underfac보단 덜 파국적인듯! 요인의 개수 설정은 substantive consideration 필요. 해석가능성, 이론적 배경, 과거의 경험, 등등. 최소 3개 4개이상의 indicator 활용.. trivial 사소한 factor가 존재하는지.
  • ML 추정방법을 활용할때에는 factor selection의 기준으로 unreduced(reduced) correlation matrix를 에서 도출한 eigenvalues를 활용함. 요인계수의 제곱합이 eigenvalue임. + Kaiser-Guttman rule
    아이겐밸류 도출, 1보다 큰 요인 활용. 표준오차에 가려질수있기 때문에 별로안조아
    • Scree test
      그림에서 떨어지는 정도를 파악하고 활용. 모호하고 주관적임.
    • Parallel Analysis
      랜덤 데이터에서 아이겐밸류를 도출했을 때 변수 간 상관에 의해서 1보다 크게 도출될 수도 있다. 그런걸 고려하는 것. 우연에 의한게 아니라 real variance 를 찾는것. 요인은 우연에 의해 나타날수 있는 분산 보다 더많이 가져야 한다고 고려.
  • EFA는 대체로 탐색적 수순을 밟지만 이론적이고 실질적인 고려도 반드시 같이 고려해야함.
  • 도출된결과는 다른 데이터를활용해서 EFA또는 CFA를 통해 다시 한번 cross-validate해야함.

- Factor rotation

  • 적합한 요인의 수가 도출된 이후에는 회전을 통해서 해석 가능성을 높일 수 있음.
  • Simple structure (primary loading, secondary loading)
    .3 or .4 > loadings  salient
  • Orthogonal / oblique
  • cos(90) = 0 (직교 orthogonal)
    요인간 상관이 있을 때 orthogonal 쓰면 ㄴㄴ해
  • Pattern matrix
    unique relationship between a factor and an indicator. Partial regression coefficient로 해석
    structure matrix
    패턴 매트릭스와 팩터 상관계 행렬을 곱해서 계산함. 다른 솔루션을 콘스탄트를 홀딩하지않고 zero-order 상관 단순 선형 관계 보여줌.

- Factor Scores

  • 특정 사람이 요인을 직접 관찰할 수 있다 할 때 몇점일지
  • Coarse factor scores: simple unweighted composites of the raw scores of indicators
  • Refined factor scores: 다변량 방법 활용 leaset squares regressioin approach
  • 부정의 특성을 갖고있는게 문제임. 부정의 정도는 요인이 갖고있는 문항의 비율, 공통분의 크기 등에 달려있음. 부정성이 높으면 요인 점수는 크게 변할 수 있음.
  • Validity coefficients, univocality, correlational accuracy

Ch 3. Introduction to CFA

SIMILARITIES AND DIFFERENCES OF EFA AND CFA

- Common Factor model

  • Cfa는 일반적으로 이론적 근거와, EFA를 활용하여 시험적으로 요인구조를 확인하고 난 이후에 척도개발의 뒷부분이나 구성 타당도를 검증하는 부분에서 사용함.
  • EFA는 일반적으로 Descriptive or explartory 임에 반해 CFA는 이미 요인 모형의 모든 측면을 prespecify해야하고 CFA는 모형을 구체화하고 평가하는데 있어서 강한 실증적(empirical)이거나 개념적인(conceptual) 기반이 필요함.

- Standardized and unstandardized solutions

  • EFA는 완전 표준화임에 반해 CFA는 완전 표준화, 부분표준화, 비표준화 솔루션 모두 활용가능.
  • Unstandardized means of indicators 는 CFA에 활용가능. 즉 분산공분산 구조 뿐만 아니라 평균구조도 동시에 탐색 가능. (EFA는 표준화이기에 평균이 0)
  • Outcome는 CFA에 비표준화 outcome 가능.

- Indicator cross-loadings/model parsimony

  • CFA에서는 교차적재량이 이미 0이거나 거의없기에 회전이 필요하지 않음. 때문에 일반적으로 CFA가 EFA 보다 더 간명함.
  • 또한 요인 상관계수는 CFA가 일반적으로 EFA보다 더 높음.

- Unique Variances

  • EFA에서는 모든 오차는 랜덤이지만(구체화 불가), CFA에서는 오차 간의 상관을 넣을 수 있음
  • Correlated errors를 통해서 method effect 탐지 가능해.
  • 일반적으로 CFA가 EFA보다 적은 수의 파라미터를 활용하여 추정하기에 보다 실증적이면서도 다른 필요조건들을 만족시키면서 오차들의 관계 추정 가능.

- Model comparison

  • CFA는 요인의 계수나 고유분산 등을 모두 동일하게하는 제한을 가할 수 있는데 이런 제한의 적용이 가능한지 viability의 평가는 제약을 가한 / 가하지않은 모형의 비교 chi-square difference testing을 실시

PURPOSES AND ADVANTAGES OF CFA

  • EFA CFA 둘다 ML 추정을 활용한다 할지라도 보다 선행 연구에 의해서 영향받는 것은 CFA임. EFA는 그저 요인의 숫자만 정할 수 있지만 CFA는 일반적으로 보다 더 간명한 해를 도출하는데
    1. 요인의 개수 정하고
    2. 요인계수의 패턴을 정하고
    3. 적합한 오차 이론을 가짐.
      이렇게해서 구체화한 모형의 수용가능성은 적합도검정결과와 해석가능성 모수추정치들의 강도 등과 관련있음.
  • CFA가 더 적합한 경우는
    1. 연구가 진행된 이후 구성타당도와 구성개념을 검증할 때
    2. 그룹에 따라 나타나는 측정 모형의 동등 equivalence 검증시.
    • CFA 가 더 flexible 함
    1. OLS는 모든 변수들이 오차없이 측정되었다고 가정하는데 반해 CFA를 하면 오차를 나누어서 측정 오차에 관한 추정을 가능케 해줌
    2. 요인분석결과와 다른 변수들의 관계(predictor or outcome) 탐색을 하려면 EFA는 요인점수 factor score가 부정형이기에 한계가 있는데 CFA는 잠재 변수 자체를 활용하면 되기에 문제 없음.
  • Measurement model + structural model 이 두 요소가 합쳐져서 CFA 모형 적합도에 영향 factor correlations vs structural parameter

PARAMETERS OF A CFA MODEL

  • Factor loading
  • Unique variance(measurement error, error variance, indicator unreliability)
  • Factor variance
    비표준화시에 표본이 퍼진정도나 요인의 분산 사람들이 닮거나 다른 정도
  • Error covariance(correlated uniquenesses, correlated residuals, correlated errors)
  • Factor covariance
  • Exogenous/ endogenous

FUNDAMENTAL EQUATIONS OF CFA MODEL

  • 추가해 윤식앙

CFA MODEL IDENTIFICATIO

  • CFA에서 모수를 추정하기 위해서는 반드시 measurement model이 식별 (identified)되어 있어야하고 이 상황에서는 파라미터에 대한 추정이 가능해짐. 알고있는 정보가 모르는 정보보다 많은 상황에서만 가능
  • 그런데 CFA를 수행하기위해서는 척도가 식별되어야하는데 요인이라는 것은 관찰되지 않은 개념이기에 단위가 존재하지않음. 때문에 단위를 지정해주어야 하는데 주로 두가지 방법이 활용된다.
    1. 지표와 동일한 척도 부여
    2. 특정한 값으로 고정

- Statistical identification

  • Overidentified justidentified underidentified
  • 자유도가 0보다 큰 것은 모형식별을 위한 필요조건이지 충분조건은 아님.
  • Empirically underidentified 된 경우에는 프로그램이 적절한 해를 도출하지 못하고 아마 에러 메시지를 도출할 수 있는데 이경우가 Heywood case 이다. 추정한 파라미터가 잘못된 범위의 값을 갖는 경우로 오차 분산이 음의 값을 갖는 등의 문제가 발생

- Guidelines for model identification

  • 모형의 복잡도와는 관계없이, 잠재 변수는 반드시 척도가 부여되어야 하는데(scaled),
    대부분의 경우에는 marker indicator를 쓰거나 요인의 분산을 고정 (일반적으로 1.00)
  • 모형의 복잡도와는 관계없이, input 행렬에서 갖고있는 정보는 추정해야하는 자유 모수보다 같거나 커야만 한다.
  • 하나의 요인 모형에는 최소 3개 이상의 지표를 활용할 것
    3개: just-idendtified, goodness-of-fit 적용 불가 4개: over-identified, goodness-of-fit 적용 가능
  • 둘이상의 요인당 두개의 지표를 활용하는 경우 overidentified인데 상황에 따라서 underidendtified 될 수 있으니 3개 이상의 지표를 활용할 것

ESTIMATION OF CFA MODEL PARAMETERS

  • Fitting function
  • Large sigma 와 S의 차이를 최소화하기위한 과정 (주로 ML)
  • 자료와 가장 유사한 파라미터값들을 추정하는 것이 ML의 목적. FML을 최소화하기 위해 반복연산을 수행함 iteration  until converged
  • Starting value는 FML의 최소화 과정에 영향을 줌.
    ML가정
    충분히 큰 표본, 연속형 indicatior, indicator의 다변량 정규분포
  • 표본이 비정규  MLM or MLR,
    범주형  WLS, WLSMV, ULS
  • ?
metaphorical explanation about goodness-of-fit
metaphorical explanation about goodness-of-fit

DESCRIPTIVE GOODNESS-OF-FIT INDICES

  • Chi-square = FML(N-1)
    많은 경우에 카이제곱 분포를 따르지 않음. 표본 크기에 영향 큼. 너무 stringent hypothesis임.
    때문에 모형적합도보다는 모형비교시에 활용
  • Absolute fit (chisquare SRMR RMR)
    모형과 데이터의 합리성만 평가(가설)
    SRMR: input과 모형 행렬의 상관 차이의 평균을 구함. 0 ~ 1
  • fit adjusting for model parsimony(RMSEA)
    비중심 카이스퀘어에 의존하는 지수. 비중심모수가 모형 오지정의 정도를 표현함.
    완벽한 모형: NCP = 0, 불완벽 NCP > 0.
    모형의 파라미터의 수와 표본크기에 영향 받음. 신뢰구간 계산 가능
    RMSEA =< .05
  • comparative or incremental fit(CFI, TLI)
    CFI: 기저선 모형과 타겟 모형의 비교 1에가까울수록 좋음
    TLI: 비표준화 적합지수. 모형 복잡성을 보충함. 자유롭게 추정되는 파라미터를 페널티로 부과함. 0과 1을 넘을수도있으며 1에 가까울수록 좋은 적합도.
  • 적합도 평가는 다양한 상황에따라 다르니 단순하게 결정 X
    SRMR .8에 근사 또는 이하 .RMSEA .6에근사 또는 이하 CFI TLI .95 근사 또는 이상

Ch 4. Specification and Interpretation of CFA Models

Data preparation

# lavaan Package is used to analysis for SEM and CFA 
library(lavaan)
## This is lavaan 0.5-23.1097
## lavaan is BETA software! Please report any bugs.
library(ggplot2)
fig4.1 <- read.delim("http://quantpsy.cau.ac.kr/wp-content/data/tabrown_cfa/fig4.1.dat",sep="")  
# sep="" : any length whitespace as being the deliminator
colnames(fig4.1) <- c("N1","N2","N3","N4","E1","E2","E3","E4")
fig4.1_sd <- as.numeric(strsplit(readLines("http://quantpsy.cau.ac.kr/wp-content/data/tabrown_cfa/fig4.1.dat",n=1)," ")[[1]])
fig4.1 # correlation matrix
##       N1     N2     N3     N4    E1    E2    E3 E4
## 1  1.000     NA     NA     NA    NA    NA    NA NA
## 2  0.767  1.000     NA     NA    NA    NA    NA NA
## 3  0.731  0.709  1.000     NA    NA    NA    NA NA
## 4  0.778  0.738  0.762  1.000    NA    NA    NA NA
## 5 -0.351 -0.302 -0.356 -0.318 1.000    NA    NA NA
## 6 -0.316 -0.280 -0.300 -0.267 0.675 1.000    NA NA
## 7 -0.296 -0.289 -0.297 -0.296 0.634 0.651 1.000 NA
## 8 -0.282 -0.254 -0.292 -0.245 0.534 0.593 0.566  1
fig4.1_sd # standard deviation
## [1] 5.7 5.6 6.4 5.7 6.0 6.2 5.7 5.6
# Obtain covariance matrix from correlation and standard deviation
# To fill the upper half off-diagonal
fig4.1[upper.tri(fig4.1)] <- t(fig4.1)[upper.tri(fig4.1)]
# changing correlation matrix to covariance matrix
fig4.1_covmat <- cor2cov(as.matrix(fig4.1),fig4.1_sd) # then we can get the covariance matrix of fig4.1
# covariance matrix
fig4.1_covmat
##             N1        N2        N3        N4       E1        E2        E3
## [1,]  32.49000  24.48264  26.66688  25.27722 -12.0042 -11.16744  -9.61704
## [2,]  24.48264  31.36000  25.41056  23.55696 -10.1472  -9.72160  -9.22488
## [3,]  26.66688  25.41056  40.96000  27.79776 -13.6704 -11.90400 -10.83456
## [4,]  25.27722  23.55696  27.79776  32.49000 -10.8756  -9.43578  -9.61704
## [5,] -12.00420 -10.14720 -13.67040 -10.87560  36.0000  25.11000  21.68280
## [6,] -11.16744  -9.72160 -11.90400  -9.43578  25.1100  38.44000  23.00634
## [7,]  -9.61704  -9.22488 -10.83456  -9.61704  21.6828  23.00634  32.49000
## [8,]  -9.00144  -7.96544 -10.46528  -7.82040  17.9424  20.58896  18.06672
##             E4
## [1,]  -9.00144
## [2,]  -7.96544
## [3,] -10.46528
## [4,]  -7.82040
## [5,]  17.94240
## [6,]  20.58896
## [7,]  18.06672
## [8,]  31.36000
  • correlation matrix 자체를 활용하는 CFA 활용법은 잘 모르겠어서 공분산행렬로 변환하는 과정이 여기까지 과정입니다.
  • 이제 이 Data를 활용하여 아래 도식에 따른 CFA를 추정합니다.

Statisitical Modeling

fig4.1 model
fig4.1 model
# N1 & E1 are used as a marker (by default)
fig4.1_model_1 <- ' 
Neuro =~ N1 + N2 + N3 + N4
Extra =~ E1 + E2 + E3 + E4
Neuro ~~ Neuro
Extra ~~ Extra
'
  • N1과 E1을 marker variable로 활용하는 모델입니다.
# Fixed factor variance equal to 1 and N1 and E1 are specified to freely estimated parameters
fig4.1_model_2 <- ' 
Neuro =~ NA*N1 + N2 + N3 + N4
Extra =~ NA*E1 + E2 + E3 + E4
Neuro ~~ 1*Neuro
Extra ~~ 1*Extra'
  • 요인의 분산을 1로 고정하고 모든 변수를 자유모수로 추정합니다.
    Mplus와 마찬가지로 lavaan 패키지도 첫번째 변수를 marker로 활용하기에 NA*를 활용하여 자유모수로 추정하게 바꾸어줍니다.
# marker
fit_4.1_1 <- lavaan::cfa(fig4.1_model_1, 
                         sample.cov=fig4.1_covmat,
                         sample.nobs=250,
                         mimic="Mplus")
# fixed
fit_4.1_2 <- lavaan::cfa(fig4.1_model_2, 
                         sample.cov=fig4.1_covmat,
                         sample.nobs=250,
                         mimic="Mplus")
  • 추정한 모형을 가지고 CFA 분석을 실시합니다.
  • 의미는 lavaan 패키지의 cfa 함수를 활용한다는 것이며 lavaan::cfa,
    모형은 fig4.1_model_1(marker를 활용한 모델)이며 분석할 데이터는 공분산 행렬임을 알려주고 행렬을 지정해줍니다 sample.cov=fig4.1_covmat
    원자료가 아닌 공분산 행렬을 활용하기에 sample.nobs=250 샘플의 수를 지정해주어야 합니다.
  • 추정을 한 결과들은 fit_4.1_1 이라는 이름으로 지정해주어라 라는 의미입니다. fixed 를 활용한 모형도 의미는 동일합니다 다.

Results

  • 분석 결과가 도출됩니다. 교재와 비교해보면 무엇을 의미하는지 쉽게 알 수 있을 것 같습니다.
    앞에서 결과값을 지정한 fit_4.1_1 이라는 변수에다가 summary 함수를 입히면 결과의 summary를 보여주라는 의미입니다.
  • 비슷하게 parametersEstiamtes,fitted,resid 함수를 활용할 수 있으며 의미는 함수의 이름과 같습니다.
# marker, summary statistics
summary(fit_4.1_1,standardized=TRUE, fit.measures=TRUE, rsq=TRUE, modindices=TRUE)
## lavaan (0.5-23.1097) converged normally after  61 iterations
## 
##   Number of observations                           250
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic               13.285
##   Degrees of freedom                                19
##   P-value (Chi-square)                           0.824
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic             1253.791
##   Degrees of freedom                                28
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.007
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -5748.501
##   Loglikelihood unrestricted model (H1)      -5741.858
## 
##   Number of free parameters                         25
##   Akaike (AIC)                               11547.002
##   Bayesian (BIC)                             11635.038
##   Sample-size adjusted Bayesian (BIC)        11555.786
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent Confidence Interval          0.000  0.034
##   P-value RMSEA <= 0.05                          0.990
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.018
## 
## Parameter Estimates:
## 
##   Information                                 Observed
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Neuro =~                                                              
##     N1                1.000                               5.033    0.885
##     N2                0.942    0.052   18.146    0.000    4.742    0.849
##     N3                1.071    0.061   17.592    0.000    5.389    0.844
##     N4                0.997    0.052   19.217    0.000    5.017    0.882
##   Extra =~                                                              
##     E1                1.000                               4.801    0.802
##     E2                1.074    0.078   13.713    0.000    5.159    0.834
##     E3                0.935    0.072   12.921    0.000    4.491    0.789
##     E4                0.814    0.073   11.111    0.000    3.907    0.699
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Neuro ~~                                                              
##     Extra           -10.512    1.932   -5.442    0.000   -0.435   -0.435
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .N1                0.000    0.360    0.000    1.000    0.000    0.000
##    .N2                0.000    0.353    0.000    1.000    0.000    0.000
##    .N3                0.000    0.404    0.000    1.000    0.000    0.000
##    .N4                0.000    0.360    0.000    1.000    0.000    0.000
##    .E1                0.000    0.379    0.000    1.000    0.000    0.000
##    .E2                0.000    0.391    0.000    1.000    0.000    0.000
##    .E3                0.000    0.360    0.000    1.000    0.000    0.000
##    .E4                0.000    0.353    0.000    1.000    0.000    0.000
##     Neuro             0.000                               0.000    0.000
##     Extra             0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     Neuro            25.335    2.902    8.730    0.000    1.000    1.000
##     Extra            23.054    3.187    7.233    0.000    1.000    1.000
##    .N1                7.025    0.914    7.688    0.000    7.025    0.217
##    .N2                8.746    1.002    8.731    0.000    8.746    0.280
##    .N3               11.760    1.336    8.799    0.000   11.760    0.288
##    .N4                7.188    0.921    7.802    0.000    7.188    0.222
##    .E1               12.802    1.580    8.104    0.000   12.802    0.357
##    .E2               11.671    1.603    7.283    0.000   11.671    0.305
##    .E3               12.192    1.464    8.327    0.000   12.192    0.377
##    .E4               15.972    1.668    9.574    0.000   15.972    0.511
## 
## R-Square:
##                    Estimate
##     N1                0.783
##     N2                0.720
##     N3                0.712
##     N4                0.778
##     E1                0.643
##     E2                0.695
##     E3                0.623
##     E4                0.489
## 
## Modification Indices:
## 
##      lhs op rhs    mi    epc sepc.lv sepc.all sepc.nox
## 30 Neuro =~  E1 1.328 -0.073  -0.368   -0.061   -0.061
## 31 Neuro =~  E2 1.121  0.068   0.342    0.055    0.055
## 32 Neuro =~  E3 0.014  0.007   0.037    0.006    0.006
## 33 Neuro =~  E4 0.013 -0.007  -0.036   -0.007   -0.007
## 34 Extra =~  N1 0.273 -0.027  -0.129   -0.023   -0.023
## 35 Extra =~  N2 0.143  0.020   0.098    0.017    0.017
## 36 Extra =~  N3 0.904 -0.059  -0.283   -0.044   -0.044
## 37 Extra =~  N4 1.067  0.053   0.255    0.045    0.045
## 38    N1 ~~  N2 3.227  1.538   1.538    0.048    0.048
## 39    N1 ~~  N3 2.747 -1.615  -1.615   -0.044   -0.044
## 40    N1 ~~  N4 0.121 -0.317  -0.317   -0.010   -0.010
## 41    N1 ~~  E1 0.255 -0.405  -0.405   -0.012   -0.012
## 42    N1 ~~  E2 0.500 -0.563  -0.563   -0.016   -0.016
## 43    N1 ~~  E3 0.919  0.740   0.740    0.023    0.023
## 44    N1 ~~  E4 0.016 -0.107  -0.107   -0.003   -0.003
## 45    N2 ~~  N3 0.311 -0.525  -0.525   -0.015   -0.015
## 46    N2 ~~  N4 1.253 -0.956  -0.956   -0.030   -0.030
## 47    N2 ~~  E1 0.658  0.689   0.689    0.021    0.021
## 48    N2 ~~  E2 0.004 -0.056  -0.056   -0.002   -0.002
## 49    N2 ~~  E3 0.222 -0.385  -0.385   -0.012   -0.012
## 50    N2 ~~  E4 0.002  0.041   0.041    0.001    0.001
## 51    N3 ~~  N4 3.507  1.820   1.820    0.050    0.050
## 52    N3 ~~  E1 1.101 -1.028  -1.028   -0.027   -0.027
## 53    N3 ~~  E2 0.107  0.319   0.319    0.008    0.008
## 54    N3 ~~  E3 0.254  0.476   0.476    0.013    0.013
## 55    N3 ~~  E4 0.587 -0.785  -0.785   -0.022   -0.022
## 56    N4 ~~  E1 0.000 -0.005  -0.005    0.000    0.000
## 57    N4 ~~  E2 1.276  0.906   0.906    0.026    0.026
## 58    N4 ~~  E3 0.838 -0.711  -0.711   -0.022   -0.022
## 59    N4 ~~  E4 0.480  0.584   0.584    0.018    0.018
## 60    E1 ~~  E2 0.428  1.071   1.071    0.029    0.029
## 61    E1 ~~  E3 0.006  0.107   0.107    0.003    0.003
## 62    E1 ~~  E4 1.983 -1.827  -1.827   -0.055   -0.055
## 63    E2 ~~  E3 0.463 -1.037  -1.037   -0.029   -0.029
## 64    E2 ~~  E4 0.412  0.873   0.873    0.025    0.025
## 65    E3 ~~  E4 0.503  0.872   0.872    0.027    0.027
parameterEstimates(fit_4.1_1,standardized = TRUE)   #coefficients with se, 95%CI and z values etc. 
##      lhs op   rhs     est    se      z pvalue ci.lower ci.upper std.lv
## 1  Neuro =~    N1   1.000 0.000     NA     NA    1.000    1.000  5.033
## 2  Neuro =~    N2   0.942 0.052 18.146      0    0.840    1.044  4.742
## 3  Neuro =~    N3   1.071 0.061 17.592      0    0.951    1.190  5.389
## 4  Neuro =~    N4   0.997 0.052 19.217      0    0.895    1.098  5.017
## 5  Extra =~    E1   1.000 0.000     NA     NA    1.000    1.000  4.801
## 6  Extra =~    E2   1.074 0.078 13.713      0    0.921    1.228  5.159
## 7  Extra =~    E3   0.935 0.072 12.921      0    0.793    1.077  4.491
## 8  Extra =~    E4   0.814 0.073 11.111      0    0.670    0.957  3.907
## 9  Neuro ~~ Neuro  25.335 2.902  8.730      0   19.647   31.023  1.000
## 10 Extra ~~ Extra  23.054 3.187  7.233      0   16.807   29.301  1.000
## 11    N1 ~~    N1   7.025 0.914  7.688      0    5.234    8.816  7.025
## 12    N2 ~~    N2   8.746 1.002  8.731      0    6.783   10.710  8.746
## 13    N3 ~~    N3  11.760 1.336  8.799      0    9.141   14.380 11.760
## 14    N4 ~~    N4   7.188 0.921  7.802      0    5.382    8.994  7.188
## 15    E1 ~~    E1  12.802 1.580  8.104      0    9.706   15.898 12.802
## 16    E2 ~~    E2  11.671 1.603  7.283      0    8.530   14.812 11.671
## 17    E3 ~~    E3  12.192 1.464  8.327      0    9.322   15.062 12.192
## 18    E4 ~~    E4  15.972 1.668  9.574      0   12.702   19.242 15.972
## 19 Neuro ~~ Extra -10.512 1.932 -5.442      0  -14.298   -6.726 -0.435
## 20    N1 ~1         0.000 0.360  0.000      1   -0.705    0.705  0.000
## 21    N2 ~1         0.000 0.353  0.000      1   -0.693    0.693  0.000
## 22    N3 ~1         0.000 0.404  0.000      1   -0.792    0.792  0.000
## 23    N4 ~1         0.000 0.360  0.000      1   -0.705    0.705  0.000
## 24    E1 ~1         0.000 0.379  0.000      1   -0.742    0.742  0.000
## 25    E2 ~1         0.000 0.391  0.000      1   -0.767    0.767  0.000
## 26    E3 ~1         0.000 0.360  0.000      1   -0.705    0.705  0.000
## 27    E4 ~1         0.000 0.353  0.000      1   -0.693    0.693  0.000
## 28 Neuro ~1         0.000 0.000     NA     NA    0.000    0.000  0.000
## 29 Extra ~1         0.000 0.000     NA     NA    0.000    0.000  0.000
##    std.all std.nox
## 1    0.885   0.885
## 2    0.849   0.849
## 3    0.844   0.844
## 4    0.882   0.882
## 5    0.802   0.802
## 6    0.834   0.834
## 7    0.789   0.789
## 8    0.699   0.699
## 9    1.000   1.000
## 10   1.000   1.000
## 11   0.217   0.217
## 12   0.280   0.280
## 13   0.288   0.288
## 14   0.222   0.222
## 15   0.357   0.357
## 16   0.305   0.305
## 17   0.377   0.377
## 18   0.511   0.511
## 19  -0.435  -0.435
## 20   0.000   0.000
## 21   0.000   0.000
## 22   0.000   0.000
## 23   0.000   0.000
## 24   0.000   0.000
## 25   0.000   0.000
## 26   0.000   0.000
## 27   0.000   0.000
## 28   0.000   0.000
## 29   0.000   0.000
fitted(fit_4.1_1) #the model implied variance-covariance matrix, slightly different values from Table 4.2 p. 117 (input matrix)
## $cov
##    N1      N2      N3      N4      E1      E2      E3      E4     
## N1  32.360                                                        
## N2  23.869  31.235                                                
## N3  27.122  25.553  40.796                                        
## N4  25.253  23.792  27.035  32.360                                
## E1 -10.512  -9.904 -11.254 -10.478  35.856                        
## E2 -11.295 -10.641 -12.092 -11.258  24.771  38.286                
## E3  -9.832  -9.263 -10.526  -9.800  21.563  23.168  32.360        
## E4  -8.553  -8.058  -9.157  -8.526  18.758  20.155  17.545  31.235
## 
## $mean
## N1 N2 N3 N4 E1 E2 E3 E4 
##  0  0  0  0  0  0  0  0
resid(fit_4.1_1) # unstandardized residuals matrix
## $type
## [1] "raw"
## 
## $cov
##    N1     N2     N3     N4     E1     E2     E3     E4    
## N1  0.000                                                 
## N2  0.516  0.000                                          
## N3 -0.562 -0.244  0.000                                   
## N4 -0.077 -0.330  0.651  0.000                            
## E1 -1.444 -0.203 -2.362 -0.354  0.000                     
## E2  0.172  0.958  0.235  1.860  0.239  0.000              
## E3  0.253  0.075 -0.266  0.222  0.033 -0.254  0.000       
## E4 -0.412  0.125 -1.267  0.737 -0.888  0.352  0.450  0.000
## 
## $mean
## N1 N2 N3 N4 E1 E2 E3 E4 
##  0  0  0  0  0  0  0  0
resid(fit_4.1_1,type="standardized") #standardized residuals matrix, there are differences with the values found in Table 4.2 p. 117
## $type
## [1] "standardized"
## 
## $cov
##    N1     N2     N3     N4     E1     E2     E3     E4    
## N1  0.000                                                 
## N2  1.371     NA                                          
## N3 -3.227 -0.620  0.000                                   
## N4 -0.388 -1.545  1.436  0.000                            
## E1 -1.187 -0.164 -1.578 -0.297     NA                     
## E2  0.152  0.805  0.168  1.708  0.628     NA              
## E3  0.223  0.062 -0.190  0.192  0.076 -0.720     NA       
## E4 -0.312  0.093 -0.803  0.565 -1.544  0.620  0.684     NA
## 
## $mean
## N1 N2 N3 N4 E1 E2 E3 E4 
## NA NA  0  0 NA NA NA NA
# factor variance is fixed to 1, summary statistics
summary(fit_4.1_2,standardized=TRUE, fit.measures=TRUE, rsq=TRUE, modindices=TRUE)
## lavaan (0.5-23.1097) converged normally after  49 iterations
## 
##   Number of observations                           250
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic               13.285
##   Degrees of freedom                                19
##   P-value (Chi-square)                           0.824
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic             1253.791
##   Degrees of freedom                                28
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.007
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -5748.501
##   Loglikelihood unrestricted model (H1)      -5741.858
## 
##   Number of free parameters                         25
##   Akaike (AIC)                               11547.002
##   Bayesian (BIC)                             11635.038
##   Sample-size adjusted Bayesian (BIC)        11555.786
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent Confidence Interval          0.000  0.034
##   P-value RMSEA <= 0.05                          0.990
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.018
## 
## Parameter Estimates:
## 
##   Information                                 Observed
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Neuro =~                                                              
##     N1                5.033    0.288   17.459    0.000    5.033    0.885
##     N2                4.742    0.290   16.332    0.000    4.742    0.849
##     N3                5.389    0.333   16.176    0.000    5.389    0.844
##     N4                5.017    0.289   17.371    0.000    5.017    0.882
##   Extra =~                                                              
##     E1                4.801    0.332   14.466    0.000    4.801    0.802
##     E2                5.159    0.337   15.293    0.000    5.159    0.834
##     E3                4.491    0.318   14.135    0.000    4.491    0.789
##     E4                3.907    0.326   11.967    0.000    3.907    0.699
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Neuro ~~                                                              
##     Extra            -0.435    0.059   -7.397    0.000   -0.435   -0.435
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .N1                0.000    0.360    0.000    1.000    0.000    0.000
##    .N2                0.000    0.353    0.000    1.000    0.000    0.000
##    .N3                0.000    0.404    0.000    1.000    0.000    0.000
##    .N4                0.000    0.360    0.000    1.000    0.000    0.000
##    .E1                0.000    0.379    0.000    1.000    0.000    0.000
##    .E2                0.000    0.391    0.000    1.000    0.000    0.000
##    .E3                0.000    0.360    0.000    1.000    0.000    0.000
##    .E4                0.000    0.353    0.000    1.000    0.000    0.000
##     Neuro             0.000                               0.000    0.000
##     Extra             0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     Neuro             1.000                               1.000    1.000
##     Extra             1.000                               1.000    1.000
##    .N1                7.025    0.914    7.688    0.000    7.025    0.217
##    .N2                8.746    1.002    8.731    0.000    8.746    0.280
##    .N3               11.760    1.336    8.799    0.000   11.760    0.288
##    .N4                7.188    0.921    7.802    0.000    7.188    0.222
##    .E1               12.802    1.580    8.104    0.000   12.802    0.357
##    .E2               11.671    1.603    7.283    0.000   11.671    0.305
##    .E3               12.192    1.464    8.327    0.000   12.192    0.377
##    .E4               15.972    1.668    9.574    0.000   15.972    0.511
## 
## R-Square:
##                    Estimate
##     N1                0.783
##     N2                0.720
##     N3                0.712
##     N4                0.778
##     E1                0.643
##     E2                0.695
##     E3                0.623
##     E4                0.489
## 
## Modification Indices:
## 
##      lhs op rhs    mi    epc sepc.lv sepc.all sepc.nox
## 30 Neuro =~  E1 1.328 -0.368  -0.368   -0.061   -0.061
## 31 Neuro =~  E2 1.121  0.342   0.342    0.055    0.055
## 32 Neuro =~  E3 0.014  0.037   0.037    0.006    0.006
## 33 Neuro =~  E4 0.013 -0.036  -0.036   -0.007   -0.007
## 34 Extra =~  N1 0.273 -0.129  -0.129   -0.023   -0.023
## 35 Extra =~  N2 0.143  0.098   0.098    0.017    0.017
## 36 Extra =~  N3 0.904 -0.283  -0.283   -0.044   -0.044
## 37 Extra =~  N4 1.067  0.255   0.255    0.045    0.045
## 38    N1 ~~  N2 3.227  1.538   1.538    0.048    0.048
## 39    N1 ~~  N3 2.747 -1.615  -1.615   -0.044   -0.044
## 40    N1 ~~  N4 0.121 -0.317  -0.317   -0.010   -0.010
## 41    N1 ~~  E1 0.255 -0.405  -0.405   -0.012   -0.012
## 42    N1 ~~  E2 0.500 -0.563  -0.563   -0.016   -0.016
## 43    N1 ~~  E3 0.919  0.740   0.740    0.023    0.023
## 44    N1 ~~  E4 0.016 -0.107  -0.107   -0.003   -0.003
## 45    N2 ~~  N3 0.311 -0.525  -0.525   -0.015   -0.015
## 46    N2 ~~  N4 1.253 -0.956  -0.956   -0.030   -0.030
## 47    N2 ~~  E1 0.658  0.689   0.689    0.021    0.021
## 48    N2 ~~  E2 0.004 -0.056  -0.056   -0.002   -0.002
## 49    N2 ~~  E3 0.222 -0.385  -0.385   -0.012   -0.012
## 50    N2 ~~  E4 0.002  0.041   0.041    0.001    0.001
## 51    N3 ~~  N4 3.507  1.820   1.820    0.050    0.050
## 52    N3 ~~  E1 1.101 -1.028  -1.028   -0.027   -0.027
## 53    N3 ~~  E2 0.107  0.319   0.319    0.008    0.008
## 54    N3 ~~  E3 0.254  0.476   0.476    0.013    0.013
## 55    N3 ~~  E4 0.587 -0.785  -0.785   -0.022   -0.022
## 56    N4 ~~  E1 0.000 -0.005  -0.005    0.000    0.000
## 57    N4 ~~  E2 1.276  0.906   0.906    0.026    0.026
## 58    N4 ~~  E3 0.838 -0.711  -0.711   -0.022   -0.022
## 59    N4 ~~  E4 0.480  0.584   0.584    0.018    0.018
## 60    E1 ~~  E2 0.428  1.071   1.071    0.029    0.029
## 61    E1 ~~  E3 0.006  0.107   0.107    0.003    0.003
## 62    E1 ~~  E4 1.983 -1.827  -1.827   -0.055   -0.055
## 63    E2 ~~  E3 0.463 -1.037  -1.037   -0.029   -0.029
## 64    E2 ~~  E4 0.412  0.873   0.873    0.025    0.025
## 65    E3 ~~  E4 0.503  0.872   0.872    0.027    0.027
parameterEstimates(fit_4.1_2,standardized = TRUE)   #coefficients with se, 95%CI and z values etc. 
##      lhs op   rhs    est    se      z pvalue ci.lower ci.upper std.lv
## 1  Neuro =~    N1  5.033 0.288 17.459      0    4.468    5.598  5.033
## 2  Neuro =~    N2  4.742 0.290 16.332      0    4.173    5.311  4.742
## 3  Neuro =~    N3  5.389 0.333 16.176      0    4.736    6.041  5.389
## 4  Neuro =~    N4  5.017 0.289 17.371      0    4.451    5.583  5.017
## 5  Extra =~    E1  4.801 0.332 14.466      0    4.151    5.452  4.801
## 6  Extra =~    E2  5.159 0.337 15.293      0    4.498    5.820  5.159
## 7  Extra =~    E3  4.491 0.318 14.135      0    3.868    5.114  4.491
## 8  Extra =~    E4  3.907 0.326 11.967      0    3.267    4.547  3.907
## 9  Neuro ~~ Neuro  1.000 0.000     NA     NA    1.000    1.000  1.000
## 10 Extra ~~ Extra  1.000 0.000     NA     NA    1.000    1.000  1.000
## 11    N1 ~~    N1  7.025 0.914  7.688      0    5.234    8.816  7.025
## 12    N2 ~~    N2  8.746 1.002  8.731      0    6.783   10.710  8.746
## 13    N3 ~~    N3 11.760 1.336  8.799      0    9.141   14.380 11.760
## 14    N4 ~~    N4  7.188 0.921  7.802      0    5.382    8.994  7.188
## 15    E1 ~~    E1 12.802 1.580  8.104      0    9.706   15.898 12.802
## 16    E2 ~~    E2 11.671 1.603  7.283      0    8.530   14.812 11.671
## 17    E3 ~~    E3 12.192 1.464  8.327      0    9.322   15.062 12.192
## 18    E4 ~~    E4 15.972 1.668  9.574      0   12.702   19.242 15.972
## 19 Neuro ~~ Extra -0.435 0.059 -7.397      0   -0.550   -0.320 -0.435
## 20    N1 ~1        0.000 0.360  0.000      1   -0.705    0.705  0.000
## 21    N2 ~1        0.000 0.353  0.000      1   -0.693    0.693  0.000
## 22    N3 ~1        0.000 0.404  0.000      1   -0.792    0.792  0.000
## 23    N4 ~1        0.000 0.360  0.000      1   -0.705    0.705  0.000
## 24    E1 ~1        0.000 0.379  0.000      1   -0.742    0.742  0.000
## 25    E2 ~1        0.000 0.391  0.000      1   -0.767    0.767  0.000
## 26    E3 ~1        0.000 0.360  0.000      1   -0.705    0.705  0.000
## 27    E4 ~1        0.000 0.353  0.000      1   -0.693    0.693  0.000
## 28 Neuro ~1        0.000 0.000     NA     NA    0.000    0.000  0.000
## 29 Extra ~1        0.000 0.000     NA     NA    0.000    0.000  0.000
##    std.all std.nox
## 1    0.885   0.885
## 2    0.849   0.849
## 3    0.844   0.844
## 4    0.882   0.882
## 5    0.802   0.802
## 6    0.834   0.834
## 7    0.789   0.789
## 8    0.699   0.699
## 9    1.000   1.000
## 10   1.000   1.000
## 11   0.217   0.217
## 12   0.280   0.280
## 13   0.288   0.288
## 14   0.222   0.222
## 15   0.357   0.357
## 16   0.305   0.305
## 17   0.377   0.377
## 18   0.511   0.511
## 19  -0.435  -0.435
## 20   0.000   0.000
## 21   0.000   0.000
## 22   0.000   0.000
## 23   0.000   0.000
## 24   0.000   0.000
## 25   0.000   0.000
## 26   0.000   0.000
## 27   0.000   0.000
## 28   0.000   0.000
## 29   0.000   0.000
fitted(fit_4.1_2) #the model implied variance-covariance matrix, slightly different values from Table 4.2 p. 117 (input matrix)
## $cov
##    N1      N2      N3      N4      E1      E2      E3      E4     
## N1  32.360                                                        
## N2  23.869  31.235                                                
## N3  27.122  25.553  40.796                                        
## N4  25.253  23.792  27.035  32.360                                
## E1 -10.512  -9.904 -11.254 -10.478  35.856                        
## E2 -11.295 -10.641 -12.092 -11.258  24.771  38.286                
## E3  -9.832  -9.263 -10.526  -9.800  21.563  23.168  32.360        
## E4  -8.553  -8.058  -9.157  -8.526  18.758  20.155  17.545  31.235
## 
## $mean
## N1 N2 N3 N4 E1 E2 E3 E4 
##  0  0  0  0  0  0  0  0
resid(fit_4.1_2) # unstandardized residuals matrix
## $type
## [1] "raw"
## 
## $cov
##    N1     N2     N3     N4     E1     E2     E3     E4    
## N1  0.000                                                 
## N2  0.516  0.000                                          
## N3 -0.562 -0.244  0.000                                   
## N4 -0.077 -0.330  0.651  0.000                            
## E1 -1.444 -0.203 -2.362 -0.354  0.000                     
## E2  0.172  0.958  0.235  1.860  0.239  0.000              
## E3  0.253  0.075 -0.266  0.222  0.033 -0.254  0.000       
## E4 -0.412  0.125 -1.267  0.737 -0.888  0.352  0.450  0.000
## 
## $mean
## N1 N2 N3 N4 E1 E2 E3 E4 
##  0  0  0  0  0  0  0  0
resid(fit_4.1_2,type="standardized") #standardized residuals matrix, there are differences with the values found in Table 4.2 p. 117
## $type
## [1] "standardized"
## 
## $cov
##    N1     N2     N3     N4     E1     E2     E3     E4    
## N1  0.000                                                 
## N2  1.371     NA                                          
## N3 -3.227 -0.620  0.000                                   
## N4 -0.388 -1.545  1.436  0.000                            
## E1 -1.187 -0.164 -1.578 -0.297  0.000                     
## E2  0.152  0.805  0.168  1.708  0.628  0.000              
## E3  0.223  0.062 -0.190  0.192  0.076 -0.720  0.000       
## E4 -0.312  0.093 -0.803  0.565 -1.544  0.620  0.684  0.003
## 
## $mean
## N1 N2 N3 N4 E1 E2 E3 E4 
##  0 NA  0  0  0  0  0  0
  • the variance of the factor is calculated by squaring the completely standardized factor loading of the marker indicatior and multiplying this result by the observed variance of the marker indicator
  • varaiance of the latent variable of Neuroticism = 25.44

interpretation and calucation of cfa model paramter estimates

(euqation 4.1 ~ 6) \[ \begin{aligned} \phi_{11} &= \lambda_{11}^2\sigma_1^2=.8858^{2}(32.49)=25.44 \\ \\ \phi_{22} &= \lambda_{52}^2\sigma_5^2=.8018^{2}(36.00)=23.15 \\ \\ \delta_2 &= \lambda_{52}^2(\sigma_5^2) =.28(31.36)=8.78 \\ &= \sigma_2^2 - \sigma_2^2(\lambda_{21}^2) = 31.36-(.8485^2)(31.36)=8.78 \\ \\ \phi_{21} &= r_{21}(SD_1)(SD_2) \\ &= -.435(5.04)(4.81)=-10.55 \end{aligned} \]

분산의 관계 도식화
분산의 관계 도식화

CFA models with single indicators

  • CFA와 EFA는 indicator 단 하나만 분석에 활용할 수 있는 장점을 가짐.
  • 나이, 성별 등은 다른 문항들과 요인으로 만든다는게 오히려 더 이상할 수 있다.
  • 또한 CFA는 SEM의 전주로 활용하기에 structural model 적합 이전에 measurement model을 추정하여 보다 간명한 structural solution 도출 가능
  • 이를 통해 structural model의 적용가능성(viability)에 관한 중요한 정보를 얻을 수 있음.
  • 또한 혼자서 기능하는 indicator에 대해서 error theory 적용(invoke) 가능함.
    indicator의 unstandardized error를 미리 정한 값으로 고정하는 방법을 활용.
    키나 몸무게 처럼 오차 없이 측정했다고 가정할 수 있는 측정치에 대해서는 error variance를 0으로 고정하는 것은 합리적인 결정일 것이당.
    (LS랑 무슨관계일까?)

\(\delta_X=VAR(X)(1-\rho)\) (equ 4.14)

  • single indicator X의 분산이 VAR(X)일 때, \(\rho\)는 indicator의 신뢰도 추정치.
    신뢰로울수록 1-\(\rho\) 값은 0에 가까워질테니 VAR(X)는 0에 가까워 지는 형태.

\(\delta_X=(42)(1-.85)=6.3\) (equ 4.15)

  • indicator의 분산이 42일 때 측정 신뢰도(scale reliability)가 .85라면 오차 분산은 6.3이라고 말할 수 있음.
    이 값을 CFA 모형에서 single indicator의 error variance로 고정하면 된다.
fig4.3 <- read.table("http://quantpsy.cau.ac.kr/wp-content/data/tabrown_cfa/fig4.3.dat",header=F)
colnames(fig4.3) <- c("SubjID","ACTIV","SOMA","PAIN","MENTH","SOCF","VITAL","GENHLTH","AGE")
head(fig4.3)
##   SubjID ACTIV SOMA PAIN MENTH SOCF VITAL GENHLTH AGE
## 1      1    48   10    9     6   26    34      38  31
## 2      2    57   51    9    11   14    30      38  25
## 3      3    56   24    6     1   15    16      32  30
## 4      4    10   30    4     1    3     0      10  50
## 5      5    31   26    9    12   26    34      29  30
## 6      6     6   28    7     0    6    16      11  34
fig4.3 <- fig4.3[,c(2:9)] # remove subject ID variable
head(fig4.3)
##   ACTIV SOMA PAIN MENTH SOCF VITAL GENHLTH AGE
## 1    48   10    9     6   26    34      38  31
## 2    57   51    9    11   14    30      38  25
## 3    56   24    6     1   15    16      32  30
## 4    10   30    4     1    3     0      10  50
## 5    31   26    9    12   26    34      29  30
## 6     6   28    7     0    6    16      11  34
fig4.3 model
fig4.3 model
fig4.3_model <- '
# measurement model
    psysfun =~ ACTIV + SOMA + PAIN
    mentfun =~ MENTH + SOCF + VITAL
    AGEF =~ AGE
    GWB =~ GENHLTH
# error theory
    AGE ~~ 0*AGE
    GENHLTH ~~ 7.861*GENHLTH
# residual correlations
    ACTIV ~~ SOMA
'
  • single indicator를 활용하는 모형 4.3의 lavaan model
fig4.3_fit <- lavaan::cfa(model=fig4.3_model,          
                          data=fig4.3,
                          mimic="Mplus")
  • 추정
summary(fig4.3_fit,standardized=TRUE, fit.measures=TRUE, rsq=TRUE,modindices=TRUE)
## lavaan (0.5-23.1097) converged normally after 233 iterations
## 
##   Number of observations                           500
## 
##   Number of missing patterns                         1
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic               45.009
##   Degrees of freedom                                15
##   P-value (Chi-square)                           0.000
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic             1942.397
##   Degrees of freedom                                28
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.984
##   Tucker-Lewis Index (TLI)                       0.971
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -13787.363
##   Loglikelihood unrestricted model (H1)     -13764.859
## 
##   Number of free parameters                         29
##   Akaike (AIC)                               27632.726
##   Bayesian (BIC)                             27754.950
##   Sample-size adjusted Bayesian (BIC)        27662.902
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.063
##   90 Percent Confidence Interval          0.043  0.085
##   P-value RMSEA <= 0.05                          0.137
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.026
## 
## Parameter Estimates:
## 
##   Information                                 Observed
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   psysfun =~                                                            
##     ACTIV             1.000                              13.496    0.677
##     SOMA              0.868    0.050   17.527    0.000   11.715    0.740
##     PAIN              0.150    0.018    8.480    0.000    2.027    0.620
##   mentfun =~                                                            
##     MENTH             1.000                               4.705    0.849
##     SOCF              1.850    0.074   25.077    0.000    8.705    0.930
##     VITAL             2.357    0.109   21.659    0.000   11.089    0.802
##   AGEF =~                                                               
##     AGE               1.000                              11.853    1.000
##   GWB =~                                                                
##     GENHLTH           1.000                               7.975    0.943
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##  .ACTIV ~~                                                              
##    .SOMA             87.987   17.805    4.942    0.000   87.987    0.563
##   psysfun ~~                                                            
##     mentfun          28.370    4.307    6.586    0.000    0.447    0.447
##     AGEF            -30.305    9.003   -3.366    0.001   -0.189   -0.189
##     GWB              69.057    7.958    8.677    0.000    0.642    0.642
##   mentfun ~~                                                            
##     AGEF             -5.290    2.627   -2.014    0.044   -0.095   -0.095
##     GWB              25.179    2.280   11.044    0.000    0.671    0.671
##   AGEF ~~                                                               
##     GWB              -9.664    4.502   -2.147    0.032   -0.102   -0.102
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .ACTIV            34.268    0.892   38.426    0.000   34.268    1.718
##    .SOMA             21.936    0.708   30.975    0.000   21.936    1.385
##    .PAIN              8.212    0.146   56.202    0.000    8.212    2.513
##    .MENTH             7.060    0.248   28.497    0.000    7.060    1.274
##    .SOCF             14.750    0.418   35.249    0.000   14.750    1.576
##    .VITAL            16.016    0.618   25.906    0.000   16.016    1.159
##    .AGE              33.210    0.530   62.651    0.000   33.210    2.802
##    .GENHLTH          28.322    0.378   74.915    0.000   28.322    3.350
##     psysfun           0.000                               0.000    0.000
##     mentfun           0.000                               0.000    0.000
##     AGEF              0.000                               0.000    0.000
##     GWB               0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .AGE               0.000                               0.000    0.000
##    .GENHLTH           7.861                               7.861    0.110
##    .ACTIV           215.497   24.583    8.766    0.000  215.497    0.542
##    .SOMA            113.524   15.800    7.185    0.000  113.524    0.453
##    .PAIN              6.567    0.583   11.260    0.000    6.567    0.615
##    .MENTH             8.548    0.782   10.935    0.000    8.548    0.279
##    .SOCF             11.779    1.949    6.045    0.000   11.779    0.135
##    .VITAL            68.148    5.272   12.926    0.000   68.148    0.357
##     psysfun         182.151   29.416    6.192    0.000    1.000    1.000
##     mentfun          22.140    1.948   11.367    0.000    1.000    1.000
##     AGEF            140.490    8.885   15.811    0.000    1.000    1.000
##     GWB              63.601    4.520   14.072    0.000    1.000    1.000
## 
## R-Square:
##                    Estimate
##     AGE               1.000
##     GENHLTH           0.890
##     ACTIV             0.458
##     SOMA              0.547
##     PAIN              0.385
##     MENTH             0.721
##     SOCF              0.865
##     VITAL             0.643
## 
## Modification Indices:
## 
##        lhs op     rhs     mi    epc sepc.lv sepc.all sepc.nox
## 40 psysfun =~   MENTH  9.314  0.049   0.666    0.120    0.120
## 41 psysfun =~    SOCF  0.804 -0.024  -0.322   -0.034   -0.034
## 42 psysfun =~   VITAL  5.292 -0.099  -1.330   -0.096   -0.096
## 45 mentfun =~   ACTIV  3.843  0.311   1.464    0.073    0.073
## 46 mentfun =~    SOMA  5.317 -0.301  -1.419   -0.090   -0.090
## 47 mentfun =~    PAIN  0.793  0.040   0.190    0.058    0.058
## 50    AGEF =~   ACTIV  0.001 -0.001  -0.014   -0.001   -0.001
## 51    AGEF =~    SOMA  0.366  0.024   0.286    0.018    0.018
## 52    AGEF =~    PAIN  1.078 -0.013  -0.151   -0.046   -0.046
## 53    AGEF =~   MENTH  0.008 -0.001  -0.013   -0.002   -0.002
## 54    AGEF =~    SOCF  2.041  0.029   0.346    0.037    0.037
## 55    AGEF =~   VITAL  3.166 -0.061  -0.724   -0.052   -0.052
## 57     GWB =~   ACTIV  0.405  0.089   0.708    0.036    0.036
## 58     GWB =~    SOMA  0.132 -0.044  -0.348   -0.022   -0.022
## 59     GWB =~    PAIN  1.376 -0.107  -0.855   -0.262   -0.262
## 60     GWB =~   MENTH  0.173  0.013   0.105    0.019    0.019
## 61     GWB =~    SOCF  4.805  0.118   0.945    0.101    0.101
## 62     GWB =~   VITAL  9.278 -0.248  -1.976   -0.143   -0.143
## 64   ACTIV ~~    PAIN  0.551 -1.532  -1.532   -0.024   -0.024
## 65   ACTIV ~~   MENTH 14.761  6.982   6.982    0.063    0.063
## 66   ACTIV ~~    SOCF  4.522 -5.811  -5.811   -0.031   -0.031
## 67   ACTIV ~~   VITAL  0.171  2.040   2.040    0.007    0.007
## 68   ACTIV ~~     AGE  0.000  0.125   0.125    0.001    0.001
## 69   ACTIV ~~ GENHLTH  0.728 -3.400  -3.400   -0.020   -0.020
## 70    SOMA ~~    PAIN  0.551  1.330   1.330    0.026    0.026
## 71    SOMA ~~   MENTH  1.137 -1.490  -1.490   -0.017   -0.017
## 72    SOMA ~~    SOCF  0.167  0.865   0.865    0.006    0.006
## 73    SOMA ~~   VITAL  2.279 -5.726  -5.726   -0.026   -0.026
## 74    SOMA ~~     AGE  0.297  2.944   2.944    0.016    0.016
## 75    SOMA ~~ GENHLTH  2.053  4.753   4.753    0.036    0.036
## 76    PAIN ~~   MENTH  0.366  0.251   0.251    0.014    0.014
## 77    PAIN ~~    SOCF  0.008 -0.056  -0.056   -0.002   -0.002
## 78    PAIN ~~   VITAL  0.134  0.413   0.413    0.009    0.009
## 79    PAIN ~~     AGE  1.010 -1.680  -1.680   -0.043   -0.043
## 80    PAIN ~~ GENHLTH  1.880 -1.758  -1.758   -0.064   -0.064
## 81   MENTH ~~    SOCF  8.687 -5.760  -5.760   -0.111   -0.111
## 82   MENTH ~~   VITAL  4.025  4.230   4.230    0.055    0.055
## 83   MENTH ~~     AGE  0.119  0.606   0.606    0.009    0.009
## 84   MENTH ~~ GENHLTH  1.845 -1.358  -1.358   -0.029   -0.029
## 85    SOCF ~~   VITAL  0.279  2.218   2.218    0.017    0.017
## 86    SOCF ~~     AGE  1.566  3.530   3.530    0.032    0.032
## 87    SOCF ~~ GENHLTH  9.929  5.308   5.308    0.067    0.067
## 88   VITAL ~~     AGE  4.178 -9.674  -9.674   -0.059   -0.059
## 89   VITAL ~~ GENHLTH  5.425 -6.083  -6.083   -0.052   -0.052
  • 결과

Ch 5. Model Revision and Comparison

  • 처음에는 모형의 적합도가 좋지 못한 상황(poor-fitting)에서 시작해서 모형을 수정해 나가면서 보다 좋은 모형으로 만들어 나가는 과정을 배울 것.

GOALS OF MODEL RESPECIFICATION

  • 모형의 적합도를 더 개량하기 위해서 CFA 모형을 개정하는 과정이 필요한 경우가 많다.
  • 3개 중 1개 이상의 적합도 지수가 적합하지 않을 경우, 이 모형은 전체적으로 잘 적합되는 경우가 아니기에,
    해석가능한 모수를 만들어내지 못하거나 또는 지표 간의 관계를 잘 만들어내지 못할 수 있다.
  • 물론 경우에 따라서 respecification 했더니 적합도가 더 떨어질 수도 있음
    • 만약 어떤 요인들의 상관이 높아서 discriminat validity가 정말 낮다면,
      두 요인이 개별적이라는 가정은 달성되기 어려운 것을 의미할 수 있음.
      때문에 두 요인을 합치는 과정을 진행하거나 할 수도 있음~~ .
    • 이럴 경우 모형이 보다 간명해지고(factor 2 -> 1) 해석 가능성을 높일 수 있겠으나,
      복잡한 모형에 비해 모형 적합도가 떨어질 수도 있음.
  • 모형의 간명성을 얻기 위해 두 요인을 합치는 것 말고 대안적인 model respecification의 두 가지 형태는 아래와 같은데,
    이런 재구채화 과정은 처음의 CFA 모형이 데이터를 잘 적합한다고 했을때에 수행해야 한다
    1. multiple-groups solutions
    2. higher-order factor models

SOURCES OF POOR-FITTING CFA SOLUTIONS

  • CFA 에서 모형 misspecification의 가장 중요한 잠재적 원인
    1. Number of Factors
    2. Indicators
    3. Error theory
  • CFA 결과에서 모형이 잘못지정되었구나 탐지할 수 있는 증거
    1. overall 적합도가 .95 보다 낮을 때
    2. 표준화 잔차나 MI가 클 때
    3. 예상과 달리 너무 작거나 큰 추정치(estimate) 또는 Heywood cases(out-of-range values)
    • 표준화 잔차나 MI를 통해서 모형이 가진 특정한 문제를 탐지하는데 좋긴한데,
      주로 모형에 별로 심각하지 않은(minor) 오지정의 문제가 있을 때에만 효과적인 경향이 있음

- Number of Factors

  • 일반적으로 모형 오지정이 적합하지 않은 요인의 개수로 인하여 도출되는 경우는 희귀한편.
    이는 대개 연구자들이 너무 성급하게 CFA를 적용해서 발생하는 경우가 많은 것 같다.
    CFA는 전적으로 강한 개념적이고 실증적인 기반에 달려 있다.
    즉, 설득력 있는 substantive justification 뿐만 아니라 CFA는 일반적으로 요인의 구조와 강도 등에 관해서 사전의 탐색적 절차에 의해 지지 받는다.
    때문에, CFA의 준비작업이 잘 수행되었더라면 요인의 개수 탐지에 있어서 중대한 문제가 발생하는 경우는 드물다.
  • 하지만, CFA의 요인 개수 추정에 EFA가 잠재적인 오해의 소지를 만들어 내는 경우가 있을 수 있다.
    어떨 때? indicator들의 관계가 분리된 요인 보다는 correlated error에 의해 더 잘 설명되는 경우. 왜냐면 EFA의 단점이 correlated indicator error을 투입하지 못한다는 단점이 있잖아.
    그래서 알고보니 EFA는 요인이 더필요할 것 같아~ 라고 했는데 걔가 요인이 아니라 method effect 일 수 있음.
  • Method Effect는 SES랑 PSWQ라는 척도의 예를 통해서 알 수 있음.
    SES라는 척도는 4개의 긍정적 표현의 문항과 3개의 부정적 표현의 문항을 갖고 있고,
    PSWQ 척도의 문항 중 11개는 방향성을 가지고, 5개는 방향성이 없는 문항이었다.
    즉, 공분산이 달리 나타나는 것은 이 문항들이 개별적이고 실증적으로 잠재 구조에 있어서 다르기 때문이 아니라,
    단지 문항의 표현에 영향을 받아서 공변이 발생한 것이다.
    그럼에도 불구하고, 이 문항들에 대해서 EFA를 수행할 때에 일반적으로는 2 요인 모형(긍정요인1, 부정요인1)이 적합하다고 보고 되었다.
    (그니까 잘못된거죠)
  • 그런데 문제는 이 결과들을 가지고 CFA를 수행해보니 문제가 발생했다.
    아니 PSWQ는 Worry를 측정하려고 만든 설문지인데 worry 요인이 탐지가 안되네??
    CFA를 해보니 도출되는 결과들은 1요인 모형에 방향성을 가진 문항들에 correlated error를 넣은 것이 가장 좋은 것으로 보이는 상황이고
  • 이는 연구자들이 EFA와 CFA를 실시할 때, 이론적이고 실질적인 이슈에 관해서 확고히 인지하고 있어야 함을 알려주기도 한다.
    EFA에서는 수행할 수 없는, 1요인 모형에 오차상관을 투입한 CFA 모형이 가장 적합하다고 나올 지라도,
    실질적인(substantive) 기반 하에서는(즉, 선행 연구 결과들에 비춰 볼 때 2요인 모형이 더많으니),
    적합도는 떨어지더라도 2요인 모형의 수용가능성을 고려해야한다.
  • congeneric indicator 세트를 갖는 일반적인 CFA 모형이 너무 작은 요인의 수를 가질 때에는,
    몇몇 지표들에 대해서 적합한 관계를 reproduce 하는데 실패할 수 있다.
  • Table 5.1을 보면 E1-E4에 대해서 standardized residuals, MI 모두 큰 값을 가짐을 알 수 있음.
    이는 모형이 해당 지표들의 관계를 uunderestimate 했기 때문임.
  • MI can point to problems with the model that are not the real source of misfit.
    Agin, this underscores the importance of an explicit substantive basis (both conceptual and empirical) for model (re)specification 그니까 결과가 E1-E4에 걸리는애들이 뭔가 다르긴한데. 얘네가 또다른 요인에 의한것인지 또는 method effect인지에 관해서는 명확히 알려주지 않음?
  • nested model은 parent model에 비해서 더 큰 df를 가짐.
    동일한 모형에 2factor를 1factor로 바꾸고 2factor 모형에 요인간 공분산을 1로 고정하면 1factor 모형은 2factor 모형을 특수하게 일반화한 형태라고 할 수 있음.
    이런 원리를 통해서 요인의 개수가 다른 모형의 적합도를 비교함.
  • 그런데 일부 방법론자들은 이런 방법이 적합하지 않다고 함.
    요인 상관을 1로 고정하느네 그것은 수용가능한 파라미터의 경계선 값인데
    그런 값을 가질 때 제대로 된 \(\chi^2\) 분포를 따르지 않을 수도 있으며, \(\chi^2\) 차이 검증 역시나 제대로 기능하지 않을 수 있다.
  • 비록 응용연구에서 어떻게 결론을 내리는지 분명하지는 않지만,
    연구자들은 반드시 information criterion indices(AIC, BIC)를 동시에 기술해야 한다.

- Indicators and Factor Loadings

  • CFA 모형 misspecification의 또다른 원인 중 하나는 indicator와 factor의 관계를 잘못 지정하는 경우
    1. indicator가 하나의 요인에 특정되었는데 둘 이상의 요인에 걸리는게 더 현저할 경우
    2. 다른 요인에 잘못 지정될 경우
    3. indicator가 요인에 지정되었늗네 사실은 어떤 요인에도 관계가 없는 경우
    • 문제에 따라서 관계를 새로 지정해주거나 제거를 하면된다.
figure 5.1
figure 5.1
Table 5.3
Table 5.3

1번 상황예시

indicator가 하나의 요인에 특정되었는데 둘 이상의 요인에 걸리는게 더 현저할 경우 + specification searches based on modification indices are more likely to be successful when the model contains only minor misspecifications + Table 5.2와 Table 5.3을 비교할 때 expected change 값이랑 MI 값을 비교. + Minor 문제가 있을 지라도 Global indices는 적합하게 도출됨.

# Data preparation for Figure 5.1
sds <- '2.06  1.52  1.92  1.41  1.73  1.77  2.49  2.27  2.68  1.75  2.57  2.66'
cors <- '
  1.000 
  0.300  1.000 
  0.229  0.261  1.000 
  0.411  0.406  0.429  1.000 
  0.172  0.252  0.218  0.481  1.000 
  0.214  0.268  0.267  0.579  0.484  1.000 
  0.200  0.214  0.241  0.543  0.426  0.492  1.000 
  0.185  0.230  0.185  0.545  0.463  0.548  0.522  1.000 
  0.134  0.146  0.108  0.186  0.122  0.131  0.108  0.151  1.000 
  0.134  0.099  0.061  0.223  0.133  0.188  0.105  0.170  0.448  1.000 
  0.160  0.131  0.158  0.161  0.044  0.124  0.066  0.061  0.370  0.350  1.000 
  0.087  0.088  0.101  0.198  0.077  0.177  0.128  0.112  0.356  0.359  0.507  1.000'
covs <- getCov(cors, sds = sds, names = paste("x", 1:12, sep = ""))

Table 5.3

## Table 5.3: without cross-loading x4
tab5.3_model <- '
# measurement model
    copingm =~ x1 + x2 + x3 + x4
    socialm =~  x5 + x6 + x7 + x8
    enhancem =~ x9 + x10 + x11 + x12
# error covariance
    x11 ~~ x12
'
tab5.3_fit <- cfa(tab5.3_model, sample.cov=covs,sample.nobs=500,mimic="mplus")
summary(tab5.3_fit, fit.measures = TRUE,standardized=TRUE)
## lavaan (0.5-23.1097) converged normally after  62 iterations
## 
##   Number of observations                           500
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic               61.658
##   Degrees of freedom                                50
##   P-value (Chi-square)                           0.125
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic             1664.026
##   Degrees of freedom                                66
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.993
##   Tucker-Lewis Index (TLI)                       0.990
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -11934.521
##   Loglikelihood unrestricted model (H1)     -11903.692
## 
##   Number of free parameters                         40
##   Akaike (AIC)                               23949.042
##   Bayesian (BIC)                             24117.627
##   Sample-size adjusted Bayesian (BIC)        23990.664
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.022
##   90 Percent Confidence Interval          0.000  0.038
##   P-value RMSEA <= 0.05                          0.999
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.030
## 
## Parameter Estimates:
## 
##   Information                                 Observed
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   copingm =~                                                            
##     x1                1.000                               0.887    0.431
##     x2                0.744    0.102    7.311    0.000    0.660    0.435
##     x3                0.973    0.131    7.456    0.000    0.864    0.450
##     x4                1.516    0.163    9.284    0.000    1.345    0.955
##   socialm =~                                                            
##     x5                1.000                               1.095    0.633
##     x6                1.208    0.092   13.129    0.000    1.322    0.748
##     x7                1.567    0.127   12.306    0.000    1.715    0.690
##     x8                1.511    0.118   12.853    0.000    1.653    0.729
##   enhancem =~                                                           
##     x9                1.000                               1.784    0.666
##     x10               0.655    0.070    9.300    0.000    1.169    0.669
##     x11               0.773    0.092    8.386    0.000    1.379    0.537
##     x12               0.807    0.097    8.310    0.000    1.439    0.541
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##  .x11 ~~                                                                
##    .x12               1.476    0.301    4.908    0.000    1.476    0.305
##   copingm ~~                                                            
##     socialm           0.775    0.110    7.063    0.000    0.798    0.798
##     enhancem          0.530    0.113    4.709    0.000    0.335    0.335
##   socialm ~~                                                            
##     enhancem          0.570    0.128    4.439    0.000    0.292    0.292
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .x1                0.000    0.092    0.000    1.000    0.000    0.000
##    .x2                0.000    0.068    0.000    1.000    0.000    0.000
##    .x3                0.000    0.086    0.000    1.000    0.000    0.000
##    .x4                0.000    0.063    0.000    1.000    0.000    0.000
##    .x5                0.000    0.077    0.000    1.000    0.000    0.000
##    .x6                0.000    0.079    0.000    1.000    0.000    0.000
##    .x7                0.000    0.111    0.000    1.000    0.000    0.000
##    .x8                0.000    0.101    0.000    1.000    0.000    0.000
##    .x9                0.000    0.120    0.000    1.000    0.000    0.000
##    .x10               0.000    0.078    0.000    1.000    0.000    0.000
##    .x11               0.000    0.115    0.000    1.000    0.000    0.000
##    .x12               0.000    0.119    0.000    1.000    0.000    0.000
##     copingm           0.000                               0.000    0.000
##     socialm           0.000                               0.000    0.000
##     enhancem          0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .x1                3.448    0.224   15.374    0.000    3.448    0.814
##    .x2                1.870    0.123   15.164    0.000    1.870    0.811
##    .x3                2.933    0.192   15.302    0.000    2.933    0.797
##    .x4                0.175    0.089    1.961    0.050    0.175    0.088
##    .x5                1.789    0.130   13.806    0.000    1.789    0.599
##    .x6                1.378    0.115   11.948    0.000    1.378    0.441
##    .x7                3.246    0.249   13.057    0.000    3.246    0.525
##    .x8                2.409    0.195   12.331    0.000    2.409    0.468
##    .x9                3.986    0.399    9.991    0.000    3.986    0.556
##    .x10               1.689    0.171    9.854    0.000    1.689    0.553
##    .x11               4.691    0.373   12.591    0.000    4.691    0.712
##    .x12               4.992    0.399   12.525    0.000    4.992    0.707
##     copingm           0.787    0.164    4.796    0.000    1.000    1.000
##     socialm           1.198    0.164    7.307    0.000    1.000    1.000
##     enhancem          3.182    0.487    6.528    0.000    1.000    1.000
modindices(tab5.3_fit) # expected change for Lambda_X  : check the EPC column
##          lhs op rhs     mi    epc sepc.lv sepc.all sepc.nox
## 47   copingm =~  x5  0.026 -0.028  -0.025   -0.014   -0.014
## 48   copingm =~  x6  0.443  0.121   0.107    0.061    0.061
## 49   copingm =~  x7  0.809  0.223   0.198    0.080    0.080
## 50   copingm =~  x8  1.947 -0.321  -0.285   -0.126   -0.126
## 51   copingm =~  x9  0.763 -0.132  -0.117   -0.044   -0.044
## 52   copingm =~ x10  0.185  0.042   0.038    0.022    0.022
## 53   copingm =~ x11  0.164 -0.051  -0.045   -0.018   -0.018
## 54   copingm =~ x12  0.769  0.115   0.102    0.038    0.038
## 55   socialm =~  x1  6.644 -0.508  -0.556   -0.270   -0.270
## 56   socialm =~  x2  0.030 -0.025  -0.028   -0.018   -0.018
## 57   socialm =~  x3  1.924 -0.257  -0.282   -0.147   -0.147
## 58   socialm =~  x4 18.074  1.290   1.412    1.003    1.003
## 59   socialm =~  x9  0.354 -0.074  -0.081   -0.030   -0.030
## 60   socialm =~ x10  0.533  0.060   0.065    0.037    0.037
## 61   socialm =~ x11  1.538 -0.131  -0.143   -0.056   -0.056
## 62   socialm =~ x12  1.167  0.118   0.129    0.049    0.049
## 63  enhancem =~  x1  1.896  0.085   0.152    0.074    0.074
## 64  enhancem =~  x2  0.896  0.043   0.077    0.051    0.051
## 65  enhancem =~  x3  0.022  0.009   0.015    0.008    0.008
## 66  enhancem =~  x4  2.166 -0.082  -0.146   -0.104   -0.104
## 67  enhancem =~  x5  0.190 -0.021  -0.037   -0.021   -0.021
## 68  enhancem =~  x6  1.372  0.054   0.097    0.055    0.055
## 69  enhancem =~  x7  1.064 -0.069  -0.122   -0.049   -0.049
## 70  enhancem =~  x8  0.013  0.007   0.012    0.005    0.005
## 71        x1 ~~  x2 10.393  0.381   0.381    0.122    0.122
## 72        x1 ~~  x3  1.024  0.150   0.150    0.038    0.038
## 73        x1 ~~  x4  0.028 -0.020  -0.020   -0.007   -0.007
## 74        x1 ~~  x5  0.450 -0.080  -0.080   -0.023   -0.023
## 75        x1 ~~  x6  0.470 -0.077  -0.077   -0.021   -0.021
## 76        x1 ~~  x7  0.284 -0.088  -0.088   -0.017   -0.017
## 77        x1 ~~  x8  1.536 -0.181  -0.181   -0.039   -0.039
## 78        x1 ~~  x9  0.502  0.136   0.136    0.025    0.025
## 79        x1 ~~ x10  0.045  0.027   0.027    0.007    0.007
## 80        x1 ~~ x11  4.992  0.399   0.399    0.076    0.076
## 81        x1 ~~ x12  1.939 -0.257  -0.257   -0.047   -0.047
## 82        x2 ~~  x3  3.589  0.207   0.207    0.071    0.071
## 83        x2 ~~  x4  7.055 -0.234  -0.234   -0.110   -0.110
## 84        x2 ~~  x5  1.455  0.106   0.106    0.040    0.040
## 85        x2 ~~  x6  0.111  0.027   0.027    0.010    0.010
## 86        x2 ~~  x7  1.122 -0.129  -0.129   -0.034   -0.034
## 87        x2 ~~  x8  0.362 -0.065  -0.065   -0.019   -0.019
## 88        x2 ~~  x9  2.188  0.209   0.209    0.051    0.051
## 89        x2 ~~ x10  0.704 -0.077  -0.077   -0.029   -0.029
## 90        x2 ~~ x11  2.066  0.189   0.189    0.049    0.049
## 91        x2 ~~ x12  0.876 -0.127  -0.127   -0.032   -0.032
## 92        x3 ~~  x4  0.069 -0.030  -0.030   -0.011   -0.011
## 93        x3 ~~  x5  0.028  0.018   0.018    0.006    0.006
## 94        x3 ~~  x6  0.234  0.050   0.050    0.015    0.015
## 95        x3 ~~  x7  0.013  0.017   0.017    0.004    0.004
## 96        x3 ~~  x8  5.219 -0.308  -0.308   -0.071   -0.071
## 97        x3 ~~  x9  0.269  0.092   0.092    0.018    0.018
## 98        x3 ~~ x10  3.393 -0.213  -0.213   -0.063   -0.063
## 99        x3 ~~ x11  5.931  0.402   0.402    0.082    0.082
## 100       x3 ~~ x12  0.320 -0.096  -0.096   -0.019   -0.019
## 101       x4 ~~  x5  0.100 -0.020  -0.020   -0.008   -0.008
## 102       x4 ~~  x6  0.081  0.018   0.018    0.007    0.007
## 103       x4 ~~  x7  2.223  0.134   0.134    0.038    0.038
## 104       x4 ~~  x8  0.139  0.030   0.030    0.010    0.010
## 105       x4 ~~  x9  2.595 -0.160  -0.160   -0.043   -0.043
## 106       x4 ~~ x10  0.488  0.045   0.045    0.018    0.018
## 107       x4 ~~ x11  1.371 -0.103  -0.103   -0.028   -0.028
## 108       x4 ~~ x12  1.145  0.097   0.097    0.026    0.026
## 109       x5 ~~  x6  0.367  0.057   0.057    0.019    0.019
## 110       x5 ~~  x7  0.280 -0.071  -0.071   -0.016   -0.016
## 111       x5 ~~  x8  0.005  0.008   0.008    0.002    0.002
## 112       x5 ~~  x9  0.452  0.098   0.098    0.021    0.021
## 113       x5 ~~ x10  0.097  0.030   0.030    0.010    0.010
## 114       x5 ~~ x11  0.723 -0.115  -0.115   -0.026   -0.026
## 115       x5 ~~ x12  0.739 -0.120  -0.120   -0.026   -0.026
## 116       x6 ~~  x7  2.456 -0.211  -0.211   -0.048   -0.048
## 117       x6 ~~  x8  0.044  0.026   0.026    0.007    0.007
## 118       x6 ~~  x9  1.287 -0.154  -0.154   -0.033   -0.033
## 119       x6 ~~ x10  0.828  0.081   0.081    0.026    0.026
## 120       x6 ~~ x11  0.124  0.044   0.044    0.010    0.010
## 121       x6 ~~ x12  1.530  0.160   0.160    0.034    0.034
## 122       x7 ~~  x8  1.436  0.207   0.207    0.037    0.037
## 123       x7 ~~  x9  0.010 -0.020  -0.020   -0.003   -0.003
## 124       x7 ~~ x10  1.715 -0.171  -0.171   -0.039   -0.039
## 125       x7 ~~ x11  0.406 -0.118  -0.118   -0.019   -0.019
## 126       x7 ~~ x12  0.685  0.159   0.159    0.024    0.024
## 127       x8 ~~  x9  0.930  0.171   0.171    0.028    0.028
## 128       x8 ~~ x10  0.684  0.096   0.096    0.024    0.024
## 129       x8 ~~ x11  1.585 -0.206  -0.206   -0.035   -0.035
## 130       x8 ~~ x12  0.233 -0.082  -0.082   -0.014   -0.014
## 131       x9 ~~ x10  0.127  0.153   0.153    0.033    0.033
## 132       x9 ~~ x11  0.669  0.241   0.241    0.035    0.035
## 133       x9 ~~ x12  0.261 -0.157  -0.157   -0.022   -0.022
## 134      x10 ~~ x11  0.243 -0.095  -0.095   -0.021   -0.021
## 135      x10 ~~ x12  0.000 -0.004  -0.004   -0.001   -0.001
standardizedSolution(tab5.3_fit)
##         lhs op      rhs est.std    se      z pvalue
## 1   copingm =~       x1   0.431 0.039 11.015  0.000
## 2   copingm =~       x2   0.435 0.040 10.811  0.000
## 3   copingm =~       x3   0.450 0.039 11.689  0.000
## 4   copingm =~       x4   0.955 0.024 40.206  0.000
## 5   socialm =~       x5   0.633 0.032 20.065  0.000
## 6   socialm =~       x6   0.748 0.025 29.339  0.000
## 7   socialm =~       x7   0.690 0.029 24.077  0.000
## 8   socialm =~       x8   0.729 0.027 27.465  0.000
## 9  enhancem =~       x9   0.666 0.041 16.320  0.000
## 10 enhancem =~      x10   0.669 0.041 16.287  0.000
## 11 enhancem =~      x11   0.537 0.045 11.928  0.000
## 12 enhancem =~      x12   0.541 0.045 12.071  0.000
## 13      x11 ~~      x12   0.305 0.050  6.155  0.000
## 14       x1 ~~       x1   0.814 0.034 24.131  0.000
## 15       x2 ~~       x2   0.811 0.035 23.176  0.000
## 16       x3 ~~       x3   0.797 0.035 22.989  0.000
## 17       x4 ~~       x4   0.088 0.045  1.948  0.051
## 18       x5 ~~       x5   0.599 0.040 14.982  0.000
## 19       x6 ~~       x6   0.441 0.038 11.564  0.000
## 20       x7 ~~       x7   0.525 0.039 13.281  0.000
## 21       x8 ~~       x8   0.468 0.039 12.101  0.000
## 22       x9 ~~       x9   0.556 0.054 10.222  0.000
## 23      x10 ~~      x10   0.553 0.055 10.062  0.000
## 24      x11 ~~      x11   0.712 0.048 14.721  0.000
## 25      x12 ~~      x12   0.707 0.049 14.556  0.000
## 26  copingm ~~  copingm   1.000 0.000     NA     NA
## 27  socialm ~~  socialm   1.000 0.000     NA     NA
## 28 enhancem ~~ enhancem   1.000 0.000     NA     NA
## 29  copingm ~~  socialm   0.798 0.029 27.895  0.000
## 30  copingm ~~ enhancem   0.335 0.053  6.371  0.000
## 31  socialm ~~ enhancem   0.292 0.057  5.136  0.000
## 32       x1 ~1            0.000 0.045  0.000  1.000
## 33       x2 ~1            0.000 0.045  0.000  1.000
## 34       x3 ~1            0.000 0.045  0.000  1.000
## 35       x4 ~1            0.000 0.045  0.000  1.000
## 36       x5 ~1            0.000 0.045  0.000  1.000
## 37       x6 ~1            0.000 0.045  0.000  1.000
## 38       x7 ~1            0.000 0.045  0.000  1.000
## 39       x8 ~1            0.000 0.045  0.000  1.000
## 40       x9 ~1            0.000 0.045  0.000  1.000
## 41      x10 ~1            0.000 0.045  0.000  1.000
## 42      x11 ~1            0.000 0.045  0.000  1.000
## 43      x12 ~1            0.000 0.045  0.000  1.000
## 44  copingm ~1            0.000 0.000     NA     NA
## 45  socialm ~1            0.000 0.000     NA     NA
## 46 enhancem ~1            0.000 0.000     NA     NA
  1. these results demonstate that the acceptability of the model should not be based solely on indices of overall model fit, although this practice is still somewhat common in the applied literature
  2. The modification index(16.16) and completely standardized EPC values(.90) do not correspond exactly to the actual change in model \(\chi^2\) and parameter estimate, respectively, when the relationship between item 4 and social motives factor is freely estimated
  3. aspects of these results illustrate that parameter estimates should not be interpreted when the model is poor-fitting
    4번 문항의 크로스로딩을 추가하지 않아서 나타나는 결과로 CopingM과 SocialM의 상관관계가 0.7978로 높게 추정되고,
    CopingM에 대한 요인 계수가 .955로 과대추정치를 보이고 있으며 CopingM에 대해서 1,2,3 요인은 과소 추정되고 있다.
    4번 문항은 SocialM과 moderate한 관계가 있음에도 불구하고 요인 계수로 투입하지 않았기 때문에. 오로지 coping Motives에 의해서 reproduce되어야 한다.
    이를 통해 \(F_{ML}\)을 최소화 하는 과정에서 \(\lambda_{41}\)은 부풀려지고(inflated), \(\lambda_{11}\),\(\lambda_{21}\),\(\lambda_{31}\)은 너무 작게 추정되는 결과가 발생함.

2예번 상황 예시 (잘못된 요인에 지정된 경우)

  • x12 요인을 socialM로 옮김.
table5.4_model <- '
# measurement model
    copingm  =~ x1 + x2 + x3 + x4
    socialm  =~ x4 +x5 + x6 + x7 + x8 + x12
    enhancem =~ x9 + x10 + x11
# error covariance 
    x11 ~~ x12
'
table5.4_fit <- cfa(table5.4_model, sample.cov = covs, sample.nobs = 500, mimic = "mplus")
summary(table5.4_fit, fit.measures = TRUE,standardized=TRUE)
## lavaan (0.5-23.1097) converged normally after  68 iterations
## 
##   Number of observations                           500
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic              126.590
##   Degrees of freedom                                49
##   P-value (Chi-square)                           0.000
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic             1664.026
##   Degrees of freedom                                66
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.951
##   Tucker-Lewis Index (TLI)                       0.935
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -11966.987
##   Loglikelihood unrestricted model (H1)     -11903.692
## 
##   Number of free parameters                         41
##   Akaike (AIC)                               24015.974
##   Bayesian (BIC)                             24188.773
##   Sample-size adjusted Bayesian (BIC)        24058.637
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.056
##   90 Percent Confidence Interval          0.044  0.068
##   P-value RMSEA <= 0.05                          0.185
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.057
## 
## Parameter Estimates:
## 
##   Information                                 Observed
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   copingm =~                                                            
##     x1                1.000                               1.062    0.516
##     x2                0.740    0.093    7.988    0.000    0.786    0.518
##     x3                0.931    0.120    7.756    0.000    0.989    0.516
##     x4                0.703    0.117    5.995    0.000    0.747    0.530
##   socialm =~                                                            
##     x4                1.000                               0.629    0.447
##     x5                1.729    0.260    6.658    0.000    1.088    0.630
##     x6                2.099    0.303    6.922    0.000    1.321    0.747
##     x7                2.722    0.398    6.842    0.000    1.713    0.689
##     x8                2.628    0.382    6.886    0.000    1.654    0.729
##     x12               0.864    0.221    3.914    0.000    0.543    0.205
##   enhancem =~                                                           
##     x9                1.000                               1.789    0.668
##     x10               0.645    0.088    7.350    0.000    1.154    0.660
##     x11               0.525    0.086    6.093    0.000    0.939    0.382
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##  .x12 ~~                                                                
##    .x11               2.581    0.313    8.241    0.000    2.581    0.437
##   copingm ~~                                                            
##     socialm           0.407    0.072    5.668    0.000    0.608    0.608
##     enhancem          0.670    0.154    4.356    0.000    0.352    0.352
##   socialm ~~                                                            
##     enhancem          0.363    0.090    4.016    0.000    0.322    0.322
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .x1                0.000    0.092    0.000    1.000    0.000    0.000
##    .x2                0.000    0.068    0.000    1.000    0.000    0.000
##    .x3                0.000    0.086    0.000    1.000    0.000    0.000
##    .x4                0.000    0.063    0.000    1.000    0.000    0.000
##    .x5                0.000    0.077    0.000    1.000    0.000    0.000
##    .x6                0.000    0.079    0.000    1.000    0.000    0.000
##    .x7                0.000    0.111    0.000    1.000    0.000    0.000
##    .x8                0.000    0.101    0.000    1.000    0.000    0.000
##    .x12               0.000    0.119    0.000    1.000    0.000    0.000
##    .x9                0.000    0.120    0.000    1.000    0.000    0.000
##    .x10               0.000    0.078    0.000    1.000    0.000    0.000
##    .x11               0.000    0.110    0.000    1.000    0.000    0.000
##     copingm           0.000                               0.000    0.000
##     socialm           0.000                               0.000    0.000
##     enhancem          0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .x1                3.106    0.232   13.397    0.000    3.106    0.733
##    .x2                1.688    0.127   13.272    0.000    1.688    0.732
##    .x3                2.700    0.198   13.670    0.000    2.700    0.734
##    .x4                0.459    0.070    6.575    0.000    0.459    0.231
##    .x5                1.803    0.130   13.875    0.000    1.803    0.603
##    .x6                1.382    0.115   12.025    0.000    1.382    0.442
##    .x7                3.253    0.248   13.117    0.000    3.253    0.526
##    .x8                2.407    0.194   12.381    0.000    2.407    0.468
##    .x12               6.748    0.431   15.665    0.000    6.748    0.958
##    .x9                3.966    0.484    8.193    0.000    3.966    0.553
##    .x10               1.726    0.205    8.434    0.000    1.726    0.565
##    .x11               5.177    0.387   13.365    0.000    5.177    0.854
##     copingm           1.129    0.220    5.135    0.000    1.000    1.000
##     socialm           0.396    0.110    3.591    0.000    1.000    1.000
##     enhancem          3.202    0.560    5.714    0.000    1.000    1.000
modindices(table5.4_fit) # expected change for Lambda_X  : check the EPC column
##          lhs op rhs     mi    epc sepc.lv sepc.all sepc.nox
## 48   copingm =~  x5  0.135  0.043   0.046    0.027    0.027
## 49   copingm =~  x6  0.778  0.106   0.112    0.063    0.063
## 50   copingm =~  x7  0.177  0.071   0.075    0.030    0.030
## 51   copingm =~  x8  3.620 -0.291  -0.309   -0.136   -0.136
## 52   copingm =~ x12  1.117  0.194   0.206    0.078    0.078
## 53   copingm =~  x9  0.981 -0.175  -0.186   -0.070   -0.070
## 54   copingm =~ x10  0.337 -0.066  -0.070   -0.040   -0.040
## 55   copingm =~ x11  4.599  0.272   0.289    0.117    0.117
## 56   socialm =~  x1  1.987 -0.394  -0.248   -0.121   -0.121
## 57   socialm =~  x2  0.676  0.170   0.107    0.070    0.070
## 58   socialm =~  x3  0.344  0.153   0.096    0.050    0.050
## 59   socialm =~  x9  1.216 -0.294  -0.185   -0.069   -0.069
## 60   socialm =~ x10  0.675  0.141   0.089    0.051    0.051
## 61   socialm =~ x11  0.170  0.084   0.053    0.021    0.021
## 62  enhancem =~  x1  1.031  0.069   0.124    0.060    0.060
## 63  enhancem =~  x2  0.290  0.027   0.049    0.032    0.032
## 64  enhancem =~  x3  0.277 -0.034  -0.060   -0.031   -0.031
## 65  enhancem =~  x4  0.640 -0.030  -0.054   -0.038   -0.038
## 66  enhancem =~  x5  0.094 -0.015  -0.027   -0.016   -0.016
## 67  enhancem =~  x6  0.090  0.014   0.026    0.014    0.014
## 68  enhancem =~  x7  2.603 -0.111  -0.199   -0.080   -0.080
## 69  enhancem =~  x8  0.003 -0.003  -0.006   -0.003   -0.003
## 70  enhancem =~ x12 77.160  0.786   1.406    0.530    0.530
## 71        x1 ~~  x2  1.738  0.178   0.178    0.057    0.057
## 72        x1 ~~  x3  2.238 -0.255  -0.255   -0.065   -0.065
## 73        x1 ~~  x4  0.807  0.101   0.101    0.035    0.035
## 74        x1 ~~  x5  0.265 -0.061  -0.061   -0.017   -0.017
## 75        x1 ~~  x6  0.146 -0.042  -0.042   -0.012   -0.012
## 76        x1 ~~  x7  0.013 -0.019  -0.019   -0.004   -0.004
## 77        x1 ~~  x8  0.371 -0.088  -0.088   -0.019   -0.019
## 78        x1 ~~ x12  0.591 -0.150  -0.150   -0.028   -0.028
## 79        x1 ~~  x9  0.027  0.032   0.032    0.006    0.006
## 80        x1 ~~ x10  0.010  0.013   0.013    0.004    0.004
## 81        x1 ~~ x11  2.772  0.294   0.294    0.058    0.058
## 82        x2 ~~  x3  0.060 -0.031  -0.031   -0.011   -0.011
## 83        x2 ~~  x4  3.167 -0.148  -0.148   -0.069   -0.069
## 84        x2 ~~  x5  2.449  0.136   0.136    0.052    0.052
## 85        x2 ~~  x6  0.603  0.063   0.063    0.024    0.024
## 86        x2 ~~  x7  0.427 -0.078  -0.078   -0.021   -0.021
## 87        x2 ~~  x8  0.017  0.014   0.014    0.004    0.004
## 88        x2 ~~ x12  0.377 -0.089  -0.089   -0.022   -0.022
## 89        x2 ~~  x9  1.052  0.149   0.149    0.037    0.037
## 90        x2 ~~ x10  1.189 -0.103  -0.103   -0.039   -0.039
## 91        x2 ~~ x11  0.760  0.113   0.113    0.030    0.030
## 92        x3 ~~  x4  1.563  0.131   0.131    0.049    0.049
## 93        x3 ~~  x5  0.168  0.045   0.045    0.014    0.014
## 94        x3 ~~  x6  0.831  0.094   0.094    0.028    0.028
## 95        x3 ~~  x7  0.373  0.093   0.093    0.019    0.019
## 96        x3 ~~  x8  2.960 -0.231  -0.231   -0.053   -0.053
## 97        x3 ~~ x12  0.529 -0.133  -0.133   -0.026   -0.026
## 98        x3 ~~  x9  0.021  0.026   0.026    0.005    0.005
## 99        x3 ~~ x10  3.844 -0.235  -0.235   -0.070   -0.070
## 100       x3 ~~ x11  3.974  0.328   0.328    0.069    0.069
## 101       x4 ~~  x5  0.387 -0.040  -0.040   -0.016   -0.016
## 102       x4 ~~  x6  0.034 -0.012  -0.012   -0.005   -0.005
## 103       x4 ~~  x7  1.149  0.098   0.098    0.028    0.028
## 104       x4 ~~  x8  0.117 -0.029  -0.029   -0.009   -0.009
## 105       x4 ~~ x12  0.362  0.059   0.059    0.016    0.016
## 106       x4 ~~  x9  1.780 -0.134  -0.134   -0.035   -0.035
## 107       x4 ~~ x10  0.696  0.054   0.054    0.022    0.022
## 108       x4 ~~ x11  0.200 -0.039  -0.039   -0.011   -0.011
## 109       x5 ~~  x6  0.601  0.072   0.072    0.024    0.024
## 110       x5 ~~  x7  0.139 -0.050  -0.050   -0.012   -0.012
## 111       x5 ~~  x8  0.041  0.024   0.024    0.006    0.006
## 112       x5 ~~ x12  1.854 -0.207  -0.207   -0.045   -0.045
## 113       x5 ~~  x9  0.028  0.025   0.025    0.005    0.005
## 114       x5 ~~ x10  0.069 -0.026  -0.026   -0.009   -0.009
## 115       x5 ~~ x11  0.296 -0.073  -0.073   -0.017   -0.017
## 116       x6 ~~  x7  2.154 -0.196  -0.196   -0.045   -0.045
## 117       x6 ~~  x8  0.054  0.029   0.029    0.007    0.007
## 118       x6 ~~ x12  0.122  0.050   0.050    0.011    0.011
## 119       x6 ~~  x9  1.314 -0.160  -0.160   -0.034   -0.034
## 120       x6 ~~ x10  0.718  0.077   0.077    0.025    0.025
## 121       x6 ~~ x11  0.660  0.102   0.102    0.023    0.023
## 122       x7 ~~  x8  1.484  0.208   0.208    0.037    0.037
## 123       x7 ~~ x12  0.202 -0.094  -0.094   -0.014   -0.014
## 124       x7 ~~  x9  0.046 -0.044  -0.044   -0.007   -0.007
## 125       x7 ~~ x10  2.306 -0.204  -0.204   -0.047   -0.047
## 126       x7 ~~ x11  0.044 -0.039  -0.039   -0.006   -0.006
## 127       x8 ~~ x12  1.153 -0.199  -0.199   -0.033   -0.033
## 128       x8 ~~  x9  0.258  0.092   0.092    0.015    0.015
## 129       x8 ~~ x10  0.070  0.031   0.031    0.008    0.008
## 130       x8 ~~ x11  0.686 -0.135  -0.135   -0.024   -0.024
## 131      x12 ~~  x9 21.004  1.221   1.221    0.172    0.172
## 132      x12 ~~ x10 22.767  0.830   0.830    0.179    0.179
## 133       x9 ~~ x10  2.377  0.996   0.996    0.213    0.213
## 134       x9 ~~ x11  0.001  0.013   0.013    0.002    0.002
## 135      x10 ~~ x11  1.339 -0.286  -0.286   -0.066   -0.066
  • 이 모형이 가진 문제점은 몇가지 형태로 확인 가능
    1. standardized residuals가 크다.
resid(table5.4_fit, type = "standardized")$cov
##     x1     x2     x3     x4     x5     x6     x7     x8     x12    x9    
## x1   0.000                                                               
## x2   1.363     NA                                                        
## x3  -1.461 -0.241     NA                                                 
## x4  -0.358 -0.999  6.638     NA                                          
## x5  -0.755  1.561  0.601 -0.210  0.000                                   
## x6  -0.678  1.085  1.079  0.375  0.761  0.000                            
## x7  -0.500 -0.092  0.772  0.924 -0.376 -1.531  0.000                     
## x8  -1.416  0.009 -1.456 -1.357  0.203  0.233  1.185     NA              
## x12  0.546  0.567  0.883  1.492 -1.563  0.855 -0.415 -1.290  0.296       
## x9   0.350  0.679 -0.378 -1.557 -0.395 -1.004 -1.248 -0.197  6.884  0.000
## x10  0.390 -0.602 -1.647  0.217 -0.026  1.008 -1.330  0.503  6.965     NA
## x11  2.242  1.550  2.191  1.100 -0.743  0.913 -0.380 -0.635  4.862  5.292
##     x10    x11   
## x1               
## x2               
## x3               
## x4               
## x5               
## x6               
## x7               
## x8               
## x12              
## x9               
## x10  0.000       
## x11  4.301  2.515
2. 12번 문항의 Factor loading이 작음.

\[ \begin{aligned} observed \ correlation \ between \ 11 \& 12 &= .507 \\ IN \ CORRECT \ SOLUTION\\ reproduced \ sample \ correlation \ +\ correlated \ error&= \lambda_{11,3}\lambda_{12,3} + \delta_{12,11}\\&=.542(.541)+.214\\&=.293+.214 \\&=.507\\ \end{aligned} \]

  • 하지만 X12를 다른 요인에 지정한 (오지정한) 이 모형은 다른 요인에 걸렸기에 .293 부분을 추정할 수 없다.
    때문에 \(\delta_{12,11}\) 값만 가지고 관찰된 값을 추정해야하는 문제가 발생함.

  • 앞에서 봐왔던 예시들과 다르게 이 모형은 종전 모형에 nested 된 것이 아님dfddfdf.
    때문에 모형비교를 위해서 \(\chi_{diff}\)활용은 불가능.
    overall goodness of ift, focal areas of ill fit, interpretability/strength of parameter estimates를 통해 모형을 비교해야 함.
  • nested가 아닌 상황에서도 모형을 비교할 수있는 방법. AIC, BIC
    -2*log-likelihood 또는 -2LL 값에 penalty를 추가한 값. 복잡도-간명성을 나타내는 지수인데 숫자가 작을 수록 좋음.
    복잡한 모형에 부과하는 페널티는 BIC가 더 큼.


3번 예시(어떤 요인에도 문항이 걸리지 않는 경우)

  • 이는 유의하지 않은 요인계수가 도출되거나 아주작은 크기가 도출되는 것을 통해 진단함.
    또는 MI(또는 EPC)를 통해, 다른 요인에 걸었을 때 모형이 좋아지지 않는 것을 통해 파악.
  • 또한 이 결론은 standardized residuals( < 2.00)과 sample correlation이 다른 indicator들과 아주 작게 나타나야 한다.

- Correlated Erros

  • correlated erros between indicators are specified on the basis of the notion that some of the covariance in the indicators not explained by the latent variable is due to another exogeous common cause.
  • very similarly wroded, reverse-worded, differentially prone to social desirability, or the like.
  • In CFA construct validation studies, correlated erros may be needed to account for method covariance, such as in the analysis of indicators collected from different assessment modalities.
  • 불필요한 오차상관은 유의도 검증을 통해 제거 가능.
table5.5_model <- '
# measurement model
    copingm  =~ x1 + x2 + x3 + x4
    socialm  =~ x4 +x5 + x6 + x7 + x8
    enhancem =~ x9 + x10 + x11 + x12
'
table5.5_fit <- cfa(table5.5_model, sample.cov = covs, sample.nobs = 500, mimic = "mplus")
summary(table5.5_fit, fit.measures = TRUE,standardized=TRUE)
## lavaan (0.5-23.1097) converged normally after  52 iterations
## 
##   Number of observations                           500
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic               69.444
##   Degrees of freedom                                50
##   P-value (Chi-square)                           0.036
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic             1664.026
##   Degrees of freedom                                66
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.988
##   Tucker-Lewis Index (TLI)                       0.984
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -11938.414
##   Loglikelihood unrestricted model (H1)     -11903.692
## 
##   Number of free parameters                         40
##   Akaike (AIC)                               23956.828
##   Bayesian (BIC)                             24125.412
##   Sample-size adjusted Bayesian (BIC)        23998.449
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.028
##   90 Percent Confidence Interval          0.008  0.043
##   P-value RMSEA <= 0.05                          0.995
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.029
## 
## Parameter Estimates:
## 
##   Information                                 Observed
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   copingm =~                                                            
##     x1                1.000                               1.057    0.514
##     x2                0.740    0.093    7.978    0.000    0.782    0.515
##     x3                0.936    0.120    7.787    0.000    0.990    0.516
##     x4                0.717    0.118    6.062    0.000    0.758    0.538
##   socialm =~                                                            
##     x4                1.000                               0.618    0.439
##     x5                1.766    0.271    6.523    0.000    1.092    0.632
##     x6                2.135    0.315    6.773    0.000    1.320    0.746
##     x7                2.778    0.415    6.698    0.000    1.718    0.691
##     x8                2.680    0.398    6.738    0.000    1.657    0.731
##   enhancem =~                                                           
##     x9                1.000                               1.613    0.603
##     x10               0.644    0.065    9.864    0.000    1.040    0.595
##     x11               1.058    0.115    9.184    0.000    1.707    0.665
##     x12               1.092    0.120    9.129    0.000    1.762    0.663
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   copingm ~~                                                            
##     socialm           0.398    0.071    5.621    0.000    0.610    0.610
##     enhancem          0.597    0.131    4.544    0.000    0.350    0.350
##   socialm ~~                                                            
##     enhancem          0.264    0.074    3.576    0.000    0.265    0.265
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .x1                0.000    0.092    0.000    1.000    0.000    0.000
##    .x2                0.000    0.068    0.000    1.000    0.000    0.000
##    .x3                0.000    0.086    0.000    1.000    0.000    0.000
##    .x4                0.000    0.063    0.000    1.000    0.000    0.000
##    .x5                0.000    0.077    0.000    1.000    0.000    0.000
##    .x6                0.000    0.079    0.000    1.000    0.000    0.000
##    .x7                0.000    0.111    0.000    1.000    0.000    0.000
##    .x8                0.000    0.101    0.000    1.000    0.000    0.000
##    .x9                0.000    0.120    0.000    1.000    0.000    0.000
##    .x10               0.000    0.078    0.000    1.000    0.000    0.000
##    .x11               0.000    0.115    0.000    1.000    0.000    0.000
##    .x12               0.000    0.119    0.000    1.000    0.000    0.000
##     copingm           0.000                               0.000    0.000
##     socialm           0.000                               0.000    0.000
##     enhancem          0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .x1                3.118    0.231   13.485    0.000    3.118    0.736
##    .x2                1.694    0.127   13.376    0.000    1.694    0.735
##    .x3                2.699    0.197   13.694    0.000    2.699    0.734
##    .x4                0.456    0.070    6.541    0.000    0.456    0.230
##    .x5                1.794    0.130   13.829    0.000    1.794    0.601
##    .x6                1.384    0.115   11.988    0.000    1.384    0.443
##    .x7                3.237    0.248   13.060    0.000    3.237    0.523
##    .x8                2.396    0.195   12.310    0.000    2.396    0.466
##    .x9                4.565    0.380   12.008    0.000    4.565    0.637
##    .x10               1.976    0.163   12.122    0.000    1.976    0.646
##    .x11               3.677    0.341   10.773    0.000    3.677    0.558
##    .x12               3.958    0.364   10.869    0.000    3.958    0.561
##     copingm           1.118    0.218    5.131    0.000    1.000    1.000
##     socialm           0.382    0.109    3.506    0.000    1.000    1.000
##     enhancem          2.603    0.428    6.079    0.000    1.000    1.000
modindices(table5.5_fit) # expected change for Lambda_X  : check the EPC column
##          lhs op rhs     mi    epc sepc.lv sepc.all sepc.nox
## 47   copingm =~  x5  0.076  0.032   0.034    0.020    0.020
## 48   copingm =~  x6  1.413  0.143   0.151    0.086    0.086
## 49   copingm =~  x7  0.245  0.083   0.088    0.035    0.035
## 50   copingm =~  x8  3.668 -0.295  -0.311   -0.137   -0.137
## 51   copingm =~  x9  0.243  0.066   0.069    0.026    0.026
## 52   copingm =~ x10  0.566  0.065   0.069    0.040    0.040
## 53   copingm =~ x11  0.119 -0.044  -0.046   -0.018   -0.018
## 54   copingm =~ x12  0.598 -0.102  -0.108   -0.041   -0.041
## 55   socialm =~  x1  1.948 -0.396  -0.245   -0.119   -0.119
## 56   socialm =~  x2  0.718  0.177   0.110    0.072    0.072
## 57   socialm =~  x3  0.298  0.144   0.089    0.047    0.047
## 58   socialm =~  x9  0.316  0.114   0.071    0.026    0.026
## 59   socialm =~ x10  3.169  0.236   0.146    0.084    0.084
## 60   socialm =~ x11  4.927 -0.430  -0.266   -0.104   -0.104
## 61   socialm =~ x12  0.017  0.026   0.016    0.006    0.006
## 62  enhancem =~  x1  0.314  0.040   0.064    0.031    0.031
## 63  enhancem =~  x2  0.003  0.003   0.004    0.003    0.003
## 64  enhancem =~  x3  0.037 -0.013  -0.020   -0.011   -0.011
## 65  enhancem =~  x4  0.106 -0.013  -0.021   -0.015   -0.015
## 66  enhancem =~  x5  0.464 -0.034  -0.055   -0.032   -0.032
## 67  enhancem =~  x6  2.703  0.079   0.128    0.072    0.072
## 68  enhancem =~  x7  0.467 -0.048  -0.077   -0.031   -0.031
## 69  enhancem =~  x8  0.095 -0.019  -0.031   -0.014   -0.014
## 70        x1 ~~  x2  1.966  0.187   0.187    0.060    0.060
## 71        x1 ~~  x3  2.042 -0.241  -0.241   -0.061   -0.061
## 72        x1 ~~  x4  0.775  0.098   0.098    0.034    0.034
## 73        x1 ~~  x5  0.238 -0.058  -0.058   -0.016   -0.016
## 74        x1 ~~  x6  0.187 -0.048  -0.048   -0.013   -0.013
## 75        x1 ~~  x7  0.019 -0.022  -0.022   -0.004   -0.004
## 76        x1 ~~  x8  0.366 -0.087  -0.087   -0.019   -0.019
## 77        x1 ~~  x9  0.155  0.076   0.076    0.014    0.014
## 78        x1 ~~ x10  0.104  0.041   0.041    0.011    0.011
## 79        x1 ~~ x11  2.019  0.255   0.255    0.048    0.048
## 80        x1 ~~ x12  1.911 -0.257  -0.257   -0.047   -0.047
## 81        x2 ~~  x3  0.035 -0.023  -0.023   -0.008   -0.008
## 82        x2 ~~  x4  3.029 -0.144  -0.144   -0.067   -0.067
## 83        x2 ~~  x5  2.503  0.138   0.138    0.053    0.053
## 84        x2 ~~  x6  0.509  0.058   0.058    0.022    0.022
## 85        x2 ~~  x7  0.471 -0.082  -0.082   -0.022   -0.022
## 86        x2 ~~  x8  0.015  0.013   0.013    0.004    0.004
## 87        x2 ~~  x9  1.289  0.161   0.161    0.040    0.040
## 88        x2 ~~ x10  0.467 -0.064  -0.064   -0.024   -0.024
## 89        x2 ~~ x11  0.338  0.077   0.077    0.020    0.020
## 90        x2 ~~ x12  0.970 -0.135  -0.135   -0.033   -0.033
## 91        x3 ~~  x4  1.095  0.109   0.109    0.040    0.040
## 92        x3 ~~  x5  0.169  0.045   0.045    0.014    0.014
## 93        x3 ~~  x6  0.681  0.085   0.085    0.025    0.025
## 94        x3 ~~  x7  0.315  0.085   0.085    0.018    0.018
## 95        x3 ~~  x8  3.075 -0.235  -0.235   -0.054   -0.054
## 96        x3 ~~  x9  0.022 -0.026  -0.026   -0.005   -0.005
## 97        x3 ~~ x10  3.825 -0.230  -0.230   -0.069   -0.069
## 98        x3 ~~ x11  3.498  0.313   0.313    0.064    0.064
## 99        x3 ~~ x12  0.079 -0.049  -0.049   -0.010   -0.010
## 100       x4 ~~  x5  0.337 -0.037  -0.037   -0.015   -0.015
## 101       x4 ~~  x6  0.033 -0.012  -0.012   -0.005   -0.005
## 102       x4 ~~  x7  1.053  0.094   0.094    0.027    0.027
## 103       x4 ~~  x8  0.071 -0.022  -0.022   -0.007   -0.007
## 104       x4 ~~  x9  0.541 -0.070  -0.070   -0.019   -0.019
## 105       x4 ~~ x10  1.128  0.066   0.066    0.027    0.027
## 106       x4 ~~ x11  1.313 -0.102  -0.102   -0.028   -0.028
## 107       x4 ~~ x12  0.322  0.052   0.052    0.014    0.014
## 108       x5 ~~  x6  0.504  0.066   0.066    0.022    0.022
## 109       x5 ~~  x7  0.262 -0.068  -0.068   -0.016   -0.016
## 110       x5 ~~  x8  0.004  0.008   0.008    0.002    0.002
## 111       x5 ~~  x9  0.850  0.135   0.135    0.029    0.029
## 112       x5 ~~ x10  0.288  0.052   0.052    0.017    0.017
## 113       x5 ~~ x11  1.019 -0.138  -0.138   -0.031   -0.031
## 114       x5 ~~ x12  1.224 -0.157  -0.157   -0.034   -0.034
## 115       x6 ~~  x7  2.404 -0.209  -0.209   -0.047   -0.047
## 116       x6 ~~  x8  0.034  0.023   0.023    0.006    0.006
## 117       x6 ~~  x9  0.978 -0.135  -0.135   -0.029   -0.029
## 118       x6 ~~ x10  0.524  0.065   0.065    0.021    0.021
## 119       x6 ~~ x11  0.341  0.074   0.074    0.016    0.016
## 120       x6 ~~ x12  1.520  0.163   0.163    0.035    0.035
## 121       x7 ~~  x8  1.171  0.186   0.186    0.033    0.033
## 122       x7 ~~  x9  0.020 -0.028  -0.028   -0.004   -0.004
## 123       x7 ~~ x10  1.593 -0.167  -0.167   -0.038   -0.038
## 124       x7 ~~ x11  0.175 -0.079  -0.079   -0.012   -0.012
## 125       x7 ~~ x12  0.586  0.149   0.149    0.023    0.023
## 126       x8 ~~  x9  1.808  0.239   0.239    0.039    0.039
## 127       x8 ~~ x10  1.267  0.131   0.131    0.033    0.033
## 128       x8 ~~ x11  1.791 -0.222  -0.222   -0.038   -0.038
## 129       x8 ~~ x12  0.595 -0.132  -0.132   -0.022   -0.022
## 130       x9 ~~ x10 20.103  0.864   0.864    0.185    0.185
## 131       x9 ~~ x11  3.658 -0.582  -0.582   -0.085   -0.085
## 132       x9 ~~ x12  7.229 -0.845  -0.845   -0.119   -0.119
## 133      x10 ~~ x11  7.617 -0.543  -0.543   -0.121   -0.121
## 134      x10 ~~ x12  4.512 -0.431  -0.431   -0.093   -0.093
## 135      x11 ~~ x12 26.071  1.680   1.680    0.246    0.246
resid(table5.5_fit, type = "standardized")$cov
##     x1     x2     x3     x4     x5     x6     x7     x8     x9     x10   
## x1      NA                                                               
## x2   1.440     NA                                                        
## x3  -1.406 -0.186     NA                                                 
## x4  -0.339 -0.957  3.104     NA                                          
## x5  -0.759  1.562  0.567 -0.226  0.000                                   
## x6  -0.647  1.115  1.065  0.559  0.699     NA                            
## x7  -0.500 -0.087  0.738  0.932 -0.519 -1.617  0.000                     
## x8  -1.410  0.019 -1.495 -1.323  0.065  0.183  1.057     NA              
## x9   0.670  0.976 -0.022  0.086  0.565  0.347 -0.057  0.976  0.000       
## x10  0.704 -0.213 -1.214  1.374  0.889  2.005 -0.100  1.547  6.570  0.000
## x11  1.087  0.303  1.017 -1.517 -1.845 -0.220 -1.594 -2.017 -1.823 -2.604
## x12 -0.870 -0.852 -0.504 -0.137 -0.932  1.387  0.199 -0.484 -2.527 -2.037
##     x11    x12   
## x1               
## x2               
## x3               
## x4               
## x5               
## x6               
## x7               
## x8               
## x9               
## x10              
## x11  0.000       
## x12     NA  0.000
  • 오차상관을 제거하고 나니 오지정한 모형에서 로딩값이 \(\lambda_{x11,3}=\ .665\) 로 크게 나타남.
    반면에 적합한 모형의 부하량은 0.542임.
    즉 오차상관 없이 적절한 관측 값을 도출해내는 것은 불가능하며, 11과 12의 부하량이 늘어난 만큼 9와 10의 부하량이 줄어드는 결과를 초래.
  • CFA는 일반적으로 큰 표본 수를 갖기 때문에 종종 borderline MI 값을 보게 된다( 3.84보다 크지만 크기 크지 않은 경우)
    이는 교차된 오차 간 상관을 투입할 경우 모델 적합도가 좋아짐을 의미하겠지 …
    그런데 계속 말해왔듯 적합도 지수가 좋아진다고 투입하는게 아니라 substantive rationale가 반드시 필요하다. 단지 적합도를 위해 오차 간 상관 투입은 안된당.
  • 또한 EPC 값의 크기(magnitude of EPC values)도 오차간 상관을 추정할지 말지에 대한 정보를 제공해 준다.
  • borderline MI 값을 투입해 모형 적합도를 올리려고 하는 것을 경계해야 하며,
    이렇게 추가한다 할지라도 CFA 모형에 있어서 요인 계수와도 같은 중요한 파라미터에 미치는 효과는 적고, 안정적이지도 않다.
    (to refelct sampling error rather than an important relationship)
  • 만약 두 indicator 간에 오차에 상관을 투입해야 하는 타당한 이유가 있다면,
    해당 이유가 적용되는 모든 indicator들에도 모두 correlated error를 추가해야한다.
    즉, reverse-worded 문항의 문제가 탐지되었다면 해당 문항들의 일부가 아니라 해당 문항들 전부에 오차 간 상관 투입해야함.
  • Theoretical considerations must be brought to bear strongly in this determination, as this decision may have far-reaching implications to the future measurement and concpetualization of the construct.

- Improper solutions and nonpositive definite Matrices

  • 하나 이상의 parameter가 out-of-range 값을 경우 해당 measurement model을 수용해서는 안된다.
    Heywood cases or offending estimates. 가장 흔한 형태는 오차 분산이 음의 값을 갖는 경우.
    또한 congeneric CFA 모형에서 요인 계수가 1.0 보다 큰 경우도 문제가 됨.
    하나 이상의 요인에 투입되는 문항의 경우에는, 요인 계수가 회귀 계수이기 때무넹 1보다 클 수 있다. 완전 표준화 한 경우 요인계수가 1.0을 넘는 것은 가능하다. 하지만 이 경우는 다중공선성의 문제가 발생하고 있음을 나타내고 있을 수 있다.
  • 적합한 CFA 해를 도출하기 위한 필요 조건은 input variance-covarinace matrix, model-implied variance-covariance matrix 두개가 positive definite 인 것.
  • determinant가 0이면 행렬은 singular 라고 표현됨. 이는 하나 이상의 행이나 열이 다른 행이나 열과 linearly dependent한 것을 말한다.
  • singluar matrix가 문제가 되는 이유는 역행렬이(inverse) 없기 때문임.
    즉, 이로 말미암아 다변량 통계치 \(F_{ML}\) 추정이 불가능해짐.
  • singularity는 행렬이 positive definite 되지 않는 이유 중 하나임.
  • positive definite가 확립되기 위해서는 input, model-implied, principal submatrix 셋 모두 determinant가 반드시 0보다 커야함.
  • positive definiteness의 조건을 평가는 분산 공분산 행렬에 PCA를 실시해 알 수 있음.
    eigenvalue가 0보다 크다면 해당 행렬은 positive definite 된 것. 만약 하나 이상의 eigenvalue가 0보다 작다면 해당 행렬은 indefinite
  • semiindefinite는 최소 하나 이상의 아이겐밸류가 0인데 음의 아이겐밸류는 없는 상황을 말함.
  • nonpositive definite를 만드는 몇 가지 원인
    1. high multicollinearities or linear dependencies in the sample data.
      이는 공선적(collinear) 변수를 제거하거나 통합 문제를 다룸(cf. parceling)
    2. due to a minor data entry problem, such as typographical erros in preparing the input matrix ㅐㄱ ㄷㄱ갠 ㄱㄷㅁ야ㅜㅎ 솓 ㅇㅁㅅㅁ ㅑㅜ 새 솓 무미ㅛ냔
    3. 결측치가 많을 때 결측 치를 제대로 다루지 못한 경우
  • 결측치 없이 샘플 수가 큰 경우는 일반적으로 positive definite.
    하지만 pairwise deletion을 하는 경우에는 definiteness 문제 발생할 수 있음.
    • listwise deletion은 샘플 사이즈를 줄여서 nonpositive definite 행렬을 만들거나 또다른 문제를 야기할 수 있음.
    • 최신의 결측치 해결 방법을 활용하는 것이 좋다.
  • improper solution을 야기하는 또다른 문제들이 있음.
    • 가장 흔한 원인은 misspecified model임.
      즉, 모형이 데이터를 설명하기에 너무나도 좋지 않은 경우.
      structuaally and empirically underidentified 모형은 수렴하지않고 적합하지 않은 해를 도출할 가능성이 높음.
      만약 모형이 심각하게 별로면 EFA로 돌아가렴.ㅇ
    • bad starting value 역시나 적합하지 않은 해를 도출할 수 있음. 근데 최신 프로그램들에서는 모형이 엄청 복잡하지 않고서야 큰 문제가 안된다.
    • 표본수가 작을 때. sampling error가 커서 positive definite 안될 수도 있음. 또한 표본수가 작으면 각종 여러 문제를 갖는다.
  • 그렇다면 어떻게 줄이나용
    • 하나의 요인에 걸리는 문항이 많으면 좋다.
    • 샘플 수 많으면 좋다
    • 샘플의 특성에 맞는 estimator를 활용해라.
  • improper solution과 nonconvergence는 모형의 복잡도와 관련이 크다.
    • 그니께 자유모수를 너무 많이 추정하지 말고 유의하지않은 건 좀 지우고 그런 과정이 필요할 수도 ~
  • 모형 C를 보면 Y1 Y3이 더 관련이 큰데 Y1 Y2 요인으로 넣고 모형돌려서 ML 추정치는 forced to push 하기 때문에 이상한 값을 계산해서 제시해줌.
  • 실제 연구를 할 때 적합하지 않은 해는 주로 quick fix 방법을 통해 문제를 피하는 방향으로 해결함.
    • 오차분산이 음의 값을 가지면 그것에 추가적으로 constraint를 줘서 0으로 주거나 약간 작은 양수로 주거나.
    • 물론 이러면 전체적 모형 적합도는 떨어지게 될 것이다.
  • a negatvie indicator error variance may be due to a variety of problems, such as sampling fluctuation (small sample size), non-normality( e.g., outliers), multicollinearity, or model missspecification. In addition to causing the Heywood case, these issues signal other problems with the analysis and the sample data (e.g., low statistical power, poorly screend data, redundant indicatoirs). THust it is better to diagnose and correct the ture source of the problem rather than sidestep it with one of these “quick fix” remedies

INTERMEDIATE STEPS FOR FUTEHR DEVELOPING A MEASUREMENT MODEL FOR CFA

  • 일반적으로 EFA를 활용해서 잠재 구조를 파악한 다음에 CFA를 통해 scale development 와 construct validation을 파악한다.
  • 하지만 여러 mistfit의 요소들이 EFA를 통해서는 파악되지 않기 때문에 CFA 결과가 poor-fiting인 경우가 비일비재함.
  • 때문에 해당 데이터를 가지고 모형을 비교하는 과정이 필요함.
    (그니께 EFA 결과 가지고 CFA 했다고 좋은 결과가 바로 튀어나오는 것이 아님!!) 비교 과정은 두가지 정도의 방법이 있음.
    1. EFA within the CFA framework(E/CFA)
    2. exploratory SEM(ESEM)
      이런 방법이 많이 활용되고 있진 않지만, EFA와 CFA에 있어 중간정도 단계를 나타내며 현실적인 확인적 모형 도출에 있어서 실질적인 정보를 제공해 준다.

- EFA in the CFA Framework

  • CFA applies the same number of identifying restrictions used in EFA(\(m^2\)) by fixing factor variances to unity, by freely estimating the factor covariances, and by selecting an anchor item for each factor whose cross-loadings are fixed to zero(the loadings of nonanchor items are freely estimated on each factor).
  • 이 과정은 ML EFA와 같지만. CFA 추정이 더 많음 정보를 제공한다(cross-loadings의 통계적유의도, 오차 공분산의 투입 가능 등)
    때문에 연구자는 제약이 큰 CFA 모형을 추정하기 이전에 현실적인 measurement structure를 추정해 볼 수 있다.
  • 또한 E/CFA를 통해서 predictor나 distal outcome을 추정할 수도 있다.
# Table 5.6
library(psych)
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
## The following object is masked from 'package:lavaan':
## 
##     cor2cov
table5.6_data <- read.delim("http://quantpsy.cau.ac.kr/wp-content/data/tabrown_cfa/efa.dat",sep="",header=F)  
table5.6_data <- table5.6_data[,-13]
names(table5.6_data) <- paste("x", 1:12, sep = "")
table5.6_result <- psych::fa(table5.6_data,nfactors=3,rotate="promax")
## Loading required namespace: GPArotation
table5.6_result$e.values # eigen values
##  [1] 3.8756999 1.9056307 1.1504269 0.8369832 0.7215895 0.6690601 0.5762896
##  [8] 0.5571568 0.4872959 0.4708105 0.4261969 0.3228602
summary(table5.6_result)
## 
## Factor analysis with Call: psych::fa(r = table5.6_data, nfactors = 3, rotate = "promax")
## 
## Test of the hypothesis that 3 factors are sufficient.
## The degrees of freedom for the model is 33  and the objective function was  0.11 
## The number of observations was  500  with Chi Square =  56.11  with prob <  0.0073 
## 
## The root mean square of the residuals (RMSA) is  0.02 
## The df corrected root mean square of the residuals is  0.03 
## 
## Tucker Lewis Index of factoring reliability =  0.971
## RMSEA index =  0.038  and the 10 % confidence intervals are  0.019 0.054
## BIC =  -148.97
##  With factor correlations of 
##      MR1  MR2  MR3
## MR1 1.00 0.27 0.59
## MR2 0.27 1.00 0.35
## MR3 0.59 0.35 1.00
  • 3요인 EFA 모형에 대해서 괜찮은 결과가 도출되었으며 EFA 결과가 적용가능(viable)할지라도, 연구자들은 이런 측정의 잠재구조를 다른 독립적 데이터에 실시하기 이전에 더탐구해보고 싶을 수 있다.
  • 이 결과가 table 5.7이다
  1. 요인계수와 교차적재량은 모두 자유 모수로 추정됨, 단 anchor로 지정된 애들 제외하고
  2. EFA처럼 요인의 분산은 1로 고정되고 요인 상관은 자유 모수로 추정.
  • Anchor를 고르는 것은 기본 EFA 모형을 통해서 실시.
  • primary 요인에는 높거나 가장 높은 부하량을 갖고 다른 요인들에는 작거나 가장 작은 값을 갖는 아이템을 사용.
# Table 5.7 starting value fixation is needed
table5.7_data <- read.delim("http://quantpsy.cau.ac.kr/wp-content/data/tabrown_cfa/efa.dat",sep="",header=F)  
names(table5.7_data) <- paste("x", 1:13, sep = "") # x13 is not used in the model

table5.7_model <- '
# Factor 
coping  =~ NA*x1 + start(0.5)*x2 + start(0.5)*x3 + start(0.5)*x4 + start(0.5)*x5 + start(0.5)*x6 + start(0.5)*x7 + 0*x8 + start(0.5)*x9 + start(0.5)*x10 + start(0.5)*x11 + 0*x12
social  =~ NA*x8 + 0*x1 + start(0.5)*x2 + start(0.5)*x3 + start(0.5)*x4 + start(0.5)*x5 + start(0.5)*x6 + start(0.5)*x7 + start(0.5)*x9 + start(0.5)*x10 + start(0.5)*x11 + 0*x12
enhance =~ NA*x12 + 0*x1 + start(0.5)*x2 + start(0.5)*x3 + start(0.5)*x4 + start(0.5)*x5 + start(0.5)*x6 + start(0.5)*x7 + 0*x8 + start(0.5)*x9 + start(0.5)*x10 + start(0.5)*x11

# Fixing Factor Variance to 1
coping  ~~ 1*coping
social  ~~ 1*social
enhance ~~ 1*enhance
'

table5.7_fit <- cfa(data = table5.7_data,model = table5.7_model, control=list(iter.max=10^5,
                                                                              rel.tol=1e-4))
summary(table5.7_fit)
## lavaan (0.5-23.1097) converged normally after  19 iterations
## 
##   Number of observations                           500
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic               55.548
##   Degrees of freedom                                33
##   P-value (Chi-square)                           0.008
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   coping =~                                           
##     x1                0.613    0.060   10.277    0.000
##     x2                0.514    0.075    6.887    0.000
##     x3                0.487    0.074    6.596    0.000
##     x4                0.535    0.068    7.856    0.000
##     x5                0.096    0.068    1.420    0.156
##     x6                0.113    0.067    1.675    0.094
##     x7                0.109    0.071    1.539    0.124
##     x8                0.000                           
##     x9                0.032    0.075    0.434    0.664
##     x10              -0.009    0.076   -0.114    0.910
##     x11               0.150    0.076    1.966    0.049
##     x12               0.000                           
##   social =~                                           
##     x8                0.791    0.046   17.226    0.000
##     x1                0.000                           
##     x2                0.102    0.076    1.349    0.177
##     x3                0.106    0.074    1.429    0.153
##     x4                0.548    0.066    8.255    0.000
##     x5                0.574    0.055   10.461    0.000
##     x6                0.652    0.053   12.285    0.000
##     x7                0.650    0.056   11.518    0.000
##     x9                0.021    0.064    0.321    0.748
##     x10               0.084    0.065    1.297    0.195
##     x11              -0.157    0.068   -2.298    0.022
##     x12               0.000                           
##   enhance =~                                          
##     x12               0.671    0.048   13.931    0.000
##     x1                0.000                           
##     x2               -0.029    0.067   -0.427    0.670
##     x3               -0.019    0.066   -0.279    0.780
##     x4               -0.023    0.062   -0.361    0.718
##     x5               -0.042    0.053   -0.787    0.431
##     x6                0.034    0.051    0.672    0.502
##     x7               -0.039    0.054   -0.720    0.472
##     x8                0.000                           
##     x9                0.581    0.056   10.440    0.000
##     x10               0.580    0.056   10.311    0.000
##     x11               0.692    0.057   12.096    0.000
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   coping ~~                                           
##     social            0.399    0.100    3.979    0.000
##     enhance           0.313    0.105    2.995    0.003
##   social ~~                                           
##     enhance           0.254    0.081    3.143    0.002
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##     coping            1.000                           
##     social            1.000                           
##     enhance           1.000                           
##    .x1                0.791    0.070   11.285    0.000
##    .x2                0.762    0.059   12.868    0.000
##    .x3                0.787    0.059   13.302    0.000
##    .x4                0.276    0.035    7.780    0.000
##    .x5                0.562    0.041   13.725    0.000
##    .x6                0.427    0.035   12.143    0.000
##    .x7                0.536    0.041   12.980    0.000
##    .x8                0.477    0.047   10.107    0.000
##    .x9                0.685    0.054   12.801    0.000
##    .x10               0.694    0.055   12.723    0.000
##    .x11               0.534    0.054    9.853    0.000
##    .x12               0.538    0.051   10.576    0.000
  • 이 분석은 CFA 프레임워크에서 실시되었지만 자유도와 overall fit은 Table 5.6의 EFA 값과 동일함.
  • Mplus는 표준오차와 통계적 유의미도 검증 결과를 제시해준다. 다 이런건 아니고
    이런 결과가 있기 때문에 EFA보다 E/CFA가 좀 더 많은 정보가 있다. primary 와 secondary loadings의 유의미도 검증이 가능.
  • 5-8번 문항을 보면 Social에 걸리는 계수는 통계적으로 유의하나 다른 요인에 걸리는 계수는 유의하지 않게 나타남.
  • 그런데 4번 문항이social 에도 유의하게 나타나고 있는데 이는 social은 coping으로만 설명하는건 힘들고 social에도 크로스로딩을 넣어야 것.
    그니께.. congeneric model은 불가능함.
  • 나머지 계수들은 유의하지 않은 것을 보니 이 결과를 토대로 CFA 수행할 때 교차적재량 0으로 두어도 될 것 같아 ~~
  • 그리고 또 E/CFA는 요인 공분산의 통계적 유의도 검증 결과도 제시해준다.
    지금 경우는 계수들이 다 유의하네 : interrelated
  • EFA도 double-loading 문항의 증거를 제시하긴 하지만, EFA는 어떤 방향에 대한 지시나 현저한 오차 상관을 제공해주지는 않음.
  • 그리고 E/CFA는 Modification Index과 fit diagnostic information(e.g., standardized residuals)을 제공해줘요!
    그런데 MI 같은경우는 measurement error 부분에만 도출됨(theta-delta matrix). 왜냐면 나머지 부분은 포화된 saturated 이기때문에.
    (요인계수같은건 제거할 수 없는데 오차 상관은 제거할 수 있기 때문인 듯?)
    (10번 9번의 MI도 큰데 이것은 12번과 11번 때문에 편향되서 나타난 결과로 추정하는듯)
    큰 MI 값이 없다면 측정오차는 랜덤이라고가정해도 될것이다.
    이런 정보들을 총괄하여, 도출된 MI 값들은 solution을 개선하는데 도움을 줄 것이다.
    즉, 이 모형은 congeneric 하지 않으며 문항 11,12번에는 오차 상관을 넣어야할 것이다.

- Exploratory SEM (ESEM)

  • 이게 좀 더 최신의 방법이다. Mplus에서만 가능하고. EFA와 CFA measurement model을 통합하는 방법.
  • 주어진 measurement model 하에서 어떤 요인은 CFA로 구체화되고 어떤 요인들은 EFA로 구체화되는 것.
    일반적인 EFA와 다르게 여기서 활용되는 EFA 모델은 ML CFA와 같은 정보를 제공한다. 즉 goodness of fit, standard erros for all rotated parameters, modification indices 같은 것들.
  • 더군다나 CFA에서 가능한 대부분의 모델링 방법들이 ESEM으로 가능하다.
    (correlated residuals, regressions of factors on covariates, regression among factors, multiple-groups solutions, meas structure analysis, measurement invariance exmaination across groups or across time)
  • 책을 쓰는 현시점에 ESEM은 상대적으로 좀 별거아닌? 한계들을 갖고 있음.
  • Mplus 활용법
    • (*1): block of EFA factor임.
    • default toration 방법은 oblique geomin.
    • factor variance 기본값은 1
    • residual variance는 자유 모수로 추정되고 상호 연관은 없는 것이 기본.
  • Goodness-of-fit은 동일한데 모수 추정치(요인 부하량, 요인 상관)은 E/CFA랑 ESEM이 약간 다르다.
    이렇게 다른 주 이유로는, ESEM은 요인 회전을 활용하기 때문에 어떤 anchor를 사용할 필요가 없기 때문임.
    즉 E/CFA와 다르게 ESEM은 모든 모수가 자유롭게 추정됨.
  • 또한 CFA보다 E/CFA 와 ESEM으로 추정된 요인 상관이 더 작다!!!!
    • 이는 앞에서 다뤘던 이유와 동일함. CFA은 많은 크로스 로딩이 0으로 고정되기 때문에 요인의 상관이 설명해야 하는 부분이 컸기 때문.
    • 몇몇 연구자들에 의해서 크로스로딩을 0으로 고정하는 것은 문제가 있다고 비판을 제기했었음.
      1. this practice may be unrelaistic for some types of measurement models where it would be very difficult to attin acceptable levels of model fit by conventional standards.
      2. 크로스로딩을 0으로 제한해버리면 요인간 관계의 크기가 과대추정되는 경향.
        이런 이유로, CFA 보다 덜 간명한 ESEM 같은 모형이 더 적합한 경우가 있다.
        (e.g., factor anlysis of a multiple-tiem, multidimensional measurement sclae in a large sample)

MODEL IDENTIFICATION REVISITED

  • 앞에서 배운 룰과 기본적인 것은 동일함.
    잠재 변수의 metric을 정하고, df을 양수가 되게 하고, emprical underidentification의 문제가 생기고 등.
    하지만 이 챕터에서 다루는 보다 복잡한 모형은 double-loading indicator와 correlated indicator erros 등을 고려하기 때문에 보다 복잡한 문제를 직면하게 될것.
  • 일반적으로 잠재변수 프로그램은 주어진 모형이 identified 가능한지 추정할 수 있기에,
    현실적으로 사람들은 해를 추정하고 나서, 컴퓨터가 보기에 identification이 어떤지 파악하는 과정을 거침.
    그럼에도 불구하고, 연구자들이 general model identification guidelines을 잘 숙지하고 있다면, structurally or empirically underidentified solutions을 방지하는데 도움을 줄 수 있음.
    일반적인 룰 1. 모든 indicator는 error covariance를 갖지 않는 하나 이상의 다른 indicator가 필요함.
    (이게 만족된다 할지라도 underidentified 될 수 있음) 2. double-loading indicator는 underidentifiication될 가능성이 더 큼.

EQUIVALENT CFA SOLUTIONS

  • 모형 구체화에 있어서 중요한 또다른 이슈는 equivalent solutions임.
  • equivalent solutions exist when different model specifications produce identical goodness of fit(with the same number of df) and predicted covariance matrices(\(\Sigma\)) in any given data set.
  • (그니께 거의 비슷한 모형인데 적합도만 놓고 봤을 때는 어떤 모형이 좋은 모형인지 파악이 불가! 이렇다면 어떤 모형을 선택해야하지?)
  • equivalent solution의 수는 모형의 포화(saturation)과 관련있음.
    • df가 작은 모형일 수록 더 많은 대안 모형들을 만들어낼수 있음, equivalent solutions than more parsimonious models.
    • 반대로 모형이 포화 모형(saturated)일 수록, 더 많은 equivalent 모형이 존재할 수 있음.
figure 5.3
figure 5.3
  • S1~S4: 일대일 사회적 상호작용 (one-on-one)
    S5~S6: 연설 상황 (public speaking)
  • 4개의 Equivalent CFA solutions를 나타내는 그림.
    이 그림에서 연구자는 social anxiety의 잠재 구조의 차원성을 검증하는 것이 목표.
  • 4개의 CFA 모형은 전부 df= 8로 overidentified된 상황이며 적합도도 괜찮음.
  • A와 B 모형은 연구자들이 CFA를 적용할 때 흔히 겪게 되는 선택의 상황임!(quandary, 진퇴양난)
    • 연설 상황 두 indicator에 존재하는 추가적인 공분산을 설명하기위해서,
      “A처럼 개별적 요인을 추가해야 할까”
      또는
      “B처럼 하나의 단일차원 솔루션에 error covariance를 추가하면 될까?”
    • 이 두 대안적인 구체화는 연구자의 응용 분야에 따라 substantial conceptual implications를 가진다.
      • A는 사회 불안은 다차원으로 구성되어 있다는 구성 개념이 존재하는 것이고
        B는 사회불안은 하나의 construct로 구성되어 있고 5,6번 문항의 오차 간 상관은 trivial한 method effect일 뿐
    • 모형 A 와 B는 적합도가 동일하기 때문에 CFA를 통해 둘 중 어떤 모형이 더 수용가능한지는 알 수 없다.
      이렇게되면 뭐가 문제냐면 둘 모두 substantivly plausible 할 때.
  • 또한 이 예시는 모형 적합도와 equivalent 솔루션이 indicator 세트에 의해서 영향 받음을 보여주는 예시이기도 함.
    • The latent dimensionality of a collection of indicators may be strongly influenced by potentially artifactual issues, such as inclusion of individual items with very similar or reverse wordings, or use of highly overlapping (multicollinear) measures.
  • 만약 모형 B 처럼 Unidimentional 모형을 활용하기로 했다면, 5번과 6번 문항은 불필요한(redundant)한 문항 일 수 있다.
    이를 해결하기 위해서
    1. 문항 중 하나를 제거
    2. 문항 두개를 합쳐서 parceling
  • 모형 C는 higher-order CFA를 나타낸 것인데, 이는 general factor에 의해서 하위 요인인 social- 과 public이 영향 받는 것을 나타낸것.
    그런데 단지 두 개의 하위수준 요인만 있기 때문에 상위 수준의 모형 C는 underidentified될 것임. 이는 Fig3.6의 Model A 와 동일 + 때문에 상위 요인이 주는 부하량을 동일하게 고정함.
Fig 3.6 A
Fig 3.6 A
  • 일부 equivalent 솔루션은 어렵지않게 기초가되는 로직이나 이론에 의해서 무시할 수도 있다..
  • 모형 D를 보면 5,6번 문항이 두 요인에 같이 걸리는데 정작 요인 간에는 상관이 없다. 이게 말이 되나? 아니된다!!
    이는 개념적으로만 따져봐도 쉽게 기각해버릴 수 있는 이상한 모형임.
  • 터무니 없는 또다른 모형의 예시로 “시간적 변수가 존재하는 종단 모형”
    또는,
    나이성별 같은 “미리 결정해둔 외생 indicator(predetermined exgonenous indicators)가 투입된 모형”임.
Fig 5.4
Fig 5.4
  • 모형 A는 4개의 문항들이 상호관련있는 모형이고,
    모형 B는 D1 문항나머지 3개 문항으로 구성된 depression 요인을 예측하는 모형임
  • 두 모형의 적합도가 동일하다 할 지라도, 두 모형은 개념적으로 완전히 다른 모형이다.
    모형 A는 절망(hopelessness)을 우울의 한 증상으로 가정하고 있지만,
    모형 B는 절망이 우울을 야기하는 것으로 가정하고 있다.
  • 이처럼 D1문항 뿐만 아니라 D2, D3, D4 문항들에 대해서도 모형B 처럼 하나의 문항을 예측 변수로 활용하는 또다른 모형들도 만들어 낼 수 있음~
    그런데 이런 모형들은 CFA with covariates 의 예시들임.
    covaraites 들은 때때로 background variables로 여겨지기도 하는데,
    문항들(그림B에서 D1)을 가지고 요인을 예측하기에 exogenous(X or 독립변수)이고, 요인들은 engogenous(Y or 종속)로 여겨진다.
    (요인들이 화살표를 받기에)
  • 모형 B와 C와 같은 모형에서 요인의 residual variance는 자유모수로써 psi(\(\psi\)) matrix써서 추정하는데
    (반면에, 모형 A에서는 phi(\(\phi\)) matrix에서 추정)
    모형 B와 C의 경로 도식에서 우울의 residual variance를 표현하기로는 “E”로 표현한다(i.e., “E”=\(\psi_1\))
  • 나중에 보겠지만 formative construct(incator 들에 의해서 영향 받는 잠재 변수)를 포함하고 있는 모형 B,C 같은 equivalent model들은 alternatively parameterized를 할 수 있는 MIMIC model과 밀접한 관련이 있다.
  • MacCallum 등이 발표한 1993년 연구에 따르면 구조방정식 연구에서 equivalent model들이 흔하게 발견된다 할지라도, 사실상 연구자들은 그런 사실을 무시하는 것 같다. 20개의 구조방정식 논문들을 확인해봤을 때, 가질 수 있는 equivalent model은 3개에서 33,925개였고 중위수는 12개 였는데, 이들 중 단 하나도 equivalent model이 존재함에 대한 자인을 하지 않았다. 물론 93년 맥컬럼의 연구 이후 약간 분위기가 바뀌긴 했다…
  • 아마 equivalent model에 대해서 제대로 보고하지 못하는 이유 중 하나로, 잠재 변수 분석 프로그램들이 연구자가 만든 모형 관련된 equivalent model들을 만들어주는 기능이 없기 때문도 있다.
    만약 이런 기능이 가능하다 프로그램이 만들어준 equivalent model들을 연구자가 보기에 이게 실증적으로 이치에 맞는지 평가할 수 있을 것이다.
    그렇다면 몇명의 경우에는, 이런 기능을 활용하여, hypothesized model에 추가적인 증거를 제시해 줄 수도 있을 것이다.
    또 어떤 경우에는, 이런 과정이 상당히 많은 \(\color{red}{\text{휴리스틱형 모형}}\)들을 처리해줄지도 모른다
    (\(\color{red}{\text{이론적으로말이만 되지만 연구자들이 미처 인지하지 못한 대안적 모형들}}\)).

SUMMARY

  • 모형 적합도가 안좋게 나오는 경우는 CFA 추정에 있어서 흔함.
    때문에, CFA 추정에 앞서 표본과 모형에 대해서 정보를 철저히 준비할 것
  1. 결측치를 처리하는 방법
  2. 데이터에 적합한 추정치 선택(ML ~)
  3. CFA를 추정하기 전에 EFA, E/CFA, ESEM을 활용한 measurement model의 정교화
  4. cross-loading 이나 error-covariance의 수를 늘리면 보다 제한적인 CFA 프레임워크로서 성공 가능성은 높아지겠지만,
    이런 모형의 모형 적합도 지수는 떨어질 수 있음.
    때문에 연구자는 모형 적합도를 잘 판단하고 ill fit을 보면서 잘못된 것을 바로잡는 과정을 해야함.

Ch 6. CFA of Multitrait-Multimethod Matrices

  • CFA를 Multitrait-Multimethod(MTMM)에 적용하면 행동과학에서 convergent validity, discriminant validity와 construct validity에서 method effect를 추정하는 개념에 대하여 정교하게 추정 가능.

CORRELATED VERSUS RANDOM MEASUREMENT ERROR REVISITED

  • 5장에서는, 둘 이상의 indicator가 가진 공분산의 일부가 측정법(measurement approach)의 효과로 인해 발생한 상황에서 잠재 변수에 의해 설명되는 공분산에 덧붙여서 오차 간 상관을 구체화하는 필요성에 관해 논했다.
    그렇기 때문에 CFA measurement model에서 error theory는 개념적이고 실증적인 모형 구체화 지침에 따라 random measurement error와 correlated measurement error(uniqueness)의 조합을 수반할 수 있다.
    5장에서 말한대로 오차간 상관은 단순히 모형 적합도를 개선시키기위하여 투입되어서는 안된다.
    여러 문항들을 가지고 추정하는 대부분의 잠재 모형들은 측정 오차를 자유 모수로써 추정한다.
    그런데, 때때로는 측정 오차에 제약을 가하거나(e.g., 평행 검사(parallel test)를 위해 오차 분산을 동일하게 고정하는 경우),
    미리정한 값에 고정하는 경우(e.g., 4장에서 본것 처럼 single indicator의 측정 오차를 미리지정하는 것)가 옳은 경우가 있다.
    측정오차를 구체화하는 이런 대안들은 다른 챕터에서 다룬다(4장, 7장)

THE MULTITRAIT-MULTIMETHOD MATRIX다

  • 응용 연구에서 흔한 한계점 중 하나로 구성개념의 차원성과 타당도 평가를 한 시점에 측정한 하나의 데이터로 평가한다는 점을 들 수 있다.
    • 예를 들어, 내가 조현병이 3가지 부정적 증상을 갖고 있다고 가설을 세웠다고 했을 때(flat a찰ffect, alogia, social amotivation),
      이를 연구하기위하여 다문항의 임상적 관찰 측정치를 만들어 주립 병원에서 환자들의 행동을 평가할 것이다.
      그리고 충분한 피험자가 모인 이후에는 측정치들을 가지고 요인분석을 실시할 것이고.
      3요인이라는 결과가 도출 되면 ’아 이 결과는 내가 추측한 대로 부정적 증상은 세 부분으로 나뉘는구나하고 해석할 것이다.
      나는 이 연구 결과를 통해 flat affect와 alogia와 social amotivation은 별도로 상호관련하기에 별개의 요인에 부하되겠구나까지 생각하고는 converged & discriminant validity가 적합하구나하고 결론 내릴 것이다.
      그리고 나서 세개의 잠재 변수는 다른 질환이 아닌 조현병의 심각도 측정에만 크게 관련 있음을 가지고 타당도를 추가적으로 밝힐 것이다.
    • 이는 척도 개발과 구성개념 타당화를 할때 사람들이 실증적으로 진행하는 흔한 순서이다. 비록 이런 시도가 유용하긴 하지만, 이 순서는 구성 타당도(construct validity)를 제대로 평가하지 못한다.
      즉, 부정적 증상 평가 척도의 다차원성이 artifacts of the indicator set에 얼마나 기인하는지 명확하지 않다.
      • 예를 들어, flat affect를 측정하는 비슷한 표현의 문항들을 포함하는 척도를 만들면 flat affect를 구별하는 요인을 얻을 기회가 늘어날 것이다.
        이런 사안은 특히 요인 분석이 초기에 예상한 것 보다 더 많은 잠재 차원을 탐지할 때(추가적으로 탐지된 차원이 개념적으로도 실제적으로도 유용한 것인지 또는 그냥 FIg 5.3 처럼 척도 개발의 인공 산물인지) 핵심적으로 다루어야한다.
    • 또한 method effect는 구성개념의 변별 타당도(discriminant) 탐지를 어렵게한다.
      이는, 구성개념을 같은 측정법(e.g., 관찰자가 평가했당)을 활용하여 측정했을 때, 관찰된 공통부분(i.e., 요인 상관계수) 중 얼마 만큼이 method effect에 의한 것이고 얼마만큼이 실제 특성(trait)이 가진 공분산인지 결정할 수 없다.
      그래서 뭐? 하나의 평가 방법으로 구성개념 타당화를 실시하는 것은 한계가 있다~.
  • Campbell and Fiske (1959)는 심리학적인 측정에서 구성 타당도를 평가하는 방법으로 MTMM matrix를 개발했다.
    MTMM은 구성 타당도 평가를 촉진 할 수 있도록 구성된 상관 행렬이다.
    construct validity는 심리학적 측정에서 실제 측정이 측정코자한 것을 측정하는지 나타내는 타당도에서 아주 중요한 개념이다.
  • MTMM은 몇 가지 method(M: 대안적 검사 형태, 설문지나 관찰자 평가나 분리된 평가 상황 같은 대안적 평가 양식)를 가지고 몇 가지 trait들(T:태도, 성격 특성, godehd)을 측정해야 한다.
    결과는 \(T*M\) 상관 행렬로 도출되고 convergent validity, discriminant validity, method effect에 대하여 해석할 수 있다.
Table 6.1
Table 6.1
  • 연구자가 이상하거나 기이한 행동을 특징으로하는 증상의 지속적인 패턴을 갖는 DSM-5 A형 성격 장애의 구성 타당도에 대해서 검증하고 싶다고 해보자.
  • A형 성격 장애는 세 가지 성격 장애로 구성되어 있음.
    1. paranoid: 타인이 악의를 갖고 있다고 해석하는 불신(distrust)과 의심(suspicion)이 지속적으로 나타나는 패턴
    2. schizoid: 사회적 관계로부터 분리(detachment)되고 제한적 감정 표현이 지속적으로 나타나는 패턴
    3. schizotypal: 사회적 관계에서 급성 불편(acute discomfort), 인지적이고 지각적 왜곡과 기이한 행동이 지속적으로 나타나는 패턴
  • 500명의 환자에 대해서 세가지 trait들을 세가지 평가 method를 가지고 평가함.
    • 세 가지 Method
      1. 자기보고 설문지
      2. 구조화 인터뷰
      3. 준전문가의 관찰 평정
  • 3개의 Trait과 3개의 Method이기에 3 x 3(T x M)의 행렬이 Table 6.1됨.
    이는 3가지 다른 trait들이 3가지 Method에 지분된(nested) 형태의 표임.
  • MTMM 행렬은 구조화된 형태의 상관 행렬이지만 대각성분은 cronbach’s alpha와 같은 Reliability 추정치로 구성됨.
  • MTMM의 block은 일반적으로 coefficient에 관한 두 가지 형태의 블록으로 구성됨.
    1. monomethod blocks: 같은 측정방법
    2. heteromethod blocks: 다른 측정방법
    • 크게 봤을 때 블록을 원소로 갖는 큰 행렬에서 대각성분은 같은 method, 비대각성분은 다른 method
    • 각 블록 내에서 대각 성분은 같은 trait, 비대각 성분은 다른 method
    • 아래 표를 기반으로 먼저 Method가 같은 것인지 다른 것인지(대각인지 비대각인지) 생각하면서 이해하면 편함.
Number Method Trait Represent Meaning
(1) 같은(대각) 같은(대각) Cronbach alpha (얘만 Reliability)
(2) 같은(대각) 다른(비대각) Method effect 측정 방법에 기인하는 상관. 3번과 비교
(3) 다른(비대각) 같은(대각) Convergent validity 다른 방법을 활용해도 같은 특성을 측정한면 상관이 높아야함
(4) 다른(비대각) 다른(비대각) Discriminant validity 다른 방법과 다른 특성은 높은 상관이 있어선 안돼
  • heteromethod(off diagonal, 비대각 블록임)
    • 굵게 처리된 글씨는 convergent validity (3): 비슷하거나 겹치는 부분이 많은 구성개념은 다른 도구로 측정해도 강한 상관 관계를 가질 것.
      (즉, 비대각 블록에서 대각 성분)
    • discriminant validity (4): 이론적으로 구별되는 구성개념을 측정한다면, 해당 구성개념들 간에 상관 관계는 높아선 안돼
    • Method effect (2): method effect의 정도는 같은 trait을 다른 method로 측정한 상관계수와 비교해서 같은 method로 다른 trait을 측정한 상관계수 차이를 반영함.

CFA APPROACHES TO ANALYZING THE MTMM MATRIX

  • MTMM 좋은데 몇가지 한계들이 있었음~~
    EFA는 결과 도출이 안될수도 있었는데 CFA는 된다.
  • 여러가지 방법이 있는데 주로 두가지 형태를많이 씀.

- Correlated Methods Models

  • correlated methods parameterization은 MTMM 행렬을 분석하는 전통적인 CFA 접근법임.
  • 모델 구체화를 위한 다섯가지 중요한 측면
    1. 모형이 식별되기 위하여 trait(T)과 method(M)는 각각 최소 3개 이상이어야 함.
    2. T+M개의 요인을 정의하기 위하여 T*M개의 indicator가 필요
    3. 각 indicator는 해당되는 trait factor와 method fator 두 개에 로딩되어야함.
    4. trait factor 끼리와 method factor 끼리의 상관은 자유 모수로 추정하지만, trait 과 method 간의 상관은 일반적으로 0으로 고정
    5. indicator uniqueness는 자유모수로 추정하지만 다른 오차와 오차간 상관은 갖지 않음.
Figure 6.1
Figure 6.1

- Correlated Uniqueness Models

  • MTMM 데이터를 분석하는 대안적 접근법으로 고안됨.

Figure 6.2 + 최소 2개 이상의 Trait(T)과 3개 이상의 Method(M) 1. 각 inidicator는 하나의 trait에 부하됨. 2. trait 요인 간 상관은 자유모수로 추정. + correlated uniqueness model에서 method effect는 오차 상관을 주어서 파악함. + correlated method model과 다르게 이 방법의 장점은 이 parameterization은 거의 improper solution을 도출하지 않는다는 것.

ADVANTAGES AND DISADVANTAGES OF CORRELATED METHODS AND CORRELATED UNIQUENESS MODELS

  • correlated method model의 장점은 campbell and fiske (1959)가 제시한 MTMM의 원래 개념과 부합한다는 것.
    • 각 indicator는 trait, method, unique variance의 관점에서 해석될 수 있음.
      완전 표준화 해에서 각 indicator의 제곱한 trait factor 부하량 + 제곱한 method factor 부하량 + uniqueness = 1
      즉 이를 통해 비율로써 해석할 수 있음. 때문에 직관적인 해석이 가능
      trait factor loading이 크다면 convergent validity가 높은 것
      method factor loading이 작거나 유의하지 않다면 method effect가 없는 것.
      trait factor 상호상관이 그다지 크지 않으면 discriminant validity가 있는 것으로 고려 가능.
    • 그리고 factor를 구체화하는 것은 method effect 해석에 있어서도 실질적인 장점을 가짐.
      단순히 공분산으로 method effect를 추정하는 것은 단일차원을 가정하는데 이런 가정은 현실적으로 달성되기 어렵다.
      때문에 요인의 형태로 method간 공분산 등을 파악할 수 있는 correlated method model이 장점을 갖는 것.
  • correlated method model의 단점은 모형이 대개 empirically underidentified 된다는 것이다.
    • 즉 수렴을 잘 안해. 수렴하더라도 heywood case 인 경우가 다수고 표준오차가 큼.
    • Marsh and Bailey 1991이 400개가 넘는 데이터를 가지고 해본 결과 잘못된 솔루션이 77%나 도출됨. 특히 MTMM 디자인이 작을 때
    • Kenny and kashy 1992에 따르면 특히 다음의 두 경우에 empirically underidentified 됨. 1. trait 이나 method factor에 걸리는 로딩이 동일 할 때 2. 둘 이상의 요인간에 discriminant validity가 낮을 때 + 이럴 때는 correlated error model을 쓰세요.
    • 또다른 한계점은 다차원 method effect 추정이 불가능함.
    • 그리고 trait, method가 독립적이어도 실제 결과는 그렇지 않게 도출됨.
  • correlated method model과 다르게 correlated uniqueness model은 추정 문제가 거의 발생하지 않음.
    연구해보니 98%가 적합하게 도출되더라.
  • 또한 correlated uniqueness model은 같은 측정 방법에 대해서 자유 모수로 추정하는 상관계수로 재현하기 때문에 uni뿐만아니라 multidimensional method effcts 추정 가능.
    그런데 correlated uniquenesses를 method effect로 해석하는 것은 언제나 간단하지만은 않음.
    비록 이 방법의 모수화법(parameterization)은 다차원 method effect 추정을 가능케 하긴 하지만, 결과 솔루션이 이런 effect의 특성에 관한 해석상에 있어서 정보를 제공해주지 않기 때문이다. 또한 어떤 방법이 가장 큰 method variance를 갖는지 결정하기 힘듬.
  • 또다른 잠재적 결점 중 하나는 method간 상관과 trait과 method간 상관을 0으로 가정한다는 것이다.
    특히 이런 가정이 깨질 경우에는 parameter 추정치가 편향될 수 있다.

OTHER CFA PARAMETERIZATIONS OF MTMM DATA

  • 이 외에도 CFA 기반으로 MTMM을 분석하는 여러 방법들이 개발됨.
  • 가장 중요한 것은 direct product model: 앞에서 다룬 두 가지 접근법과 다르게 이는 method factor와 trait factor의 가법적(additively)이 아닌 승법적(multiplicative)인 상호작용 가능성을 다룸.
    즉, method effects는 관련된 construct들의 상관이 약할 때 보다 강할 때 더 상관계수를 크게 증가 시킴.
    trait간 상관이 크면 method effect가 더 큼.
    이 방법을 쓰면 Campbell and Fiske (1959)가 제시한 convergent / discriminant validity를 명쾌하게 평가할 수 있다.
    또다른 장점은, 이 방법은 method에 대한 상관 행렬을 추정하고, 이 행렬은 method의 비슷한 정도를 평가하는데 활용할 수 있다.
  • 보다 최신인 또다른 방법인 correlated trait-correlated method minus one model[ CT-C(M-1) ]도 있다.
    correlated methods model과 아주 유사한데, 차이점은 M개가 아닌 M-1개의 method factor를 가진다는 것.
    이런 모수화(parameterization) 통해서 식별 문제를 어느정도 해결할 수 있다.
    제거된 method factor는 “comparison stnadard”가 됨.
    ??

CONSEQUENCES OF NOT MODELING METHOD VARIANCE AND MEASUREMNT ERROR

  • method effect를 넣지 않으면 요인들의 상관계수가 과장되어서 discriminant validity가 작게 도출되는 결과.

Ch7. CFA with Equality Constraints, Multiple Groups, and Mean Strucrues.

OVERVIEW OF EQUALITY CONSTRAINTS

  • CFA 솔루션에서 prameter는 freely estimated, fixed, constrained 가능.
    • free parameter: 알려지지 않은 값이며, 분석을 통해 연구자가 내려는 값
    • fixed parameter: 연구자에 의해서 특정한 값에 고정된 것. 주로 1 또는 0
    • constrained paramter: 알려지지 않은 값인 것은 free와 비슷하나, 완전 자유는 아니고 가질 수 있는 값는 값에 대한 제한이 주어진 것.
      가장 흔한 형태는 equality constraints(같은 값을 갖도록 제한된 비표준화 파라미터)
      1요인과 4가지 지표를 갖는 CFA 모형에서 equali~를 준다치면 4개의 요인부하량이 전부 동일하게 나오는 값을 솔루션으로 찾는 것.
    • equality constraints를 가하는 두 가지 원칙
      1. unstadardized solution에서 실시하고 same metric을 가져야함.
      2. 제한을 가한 모형은 일종의 nested 모형이기에 \(\chi^2\) difference testing 적용 가능.

EQUALITY CONSTRAINTS WITHIN A SINGLE GROUP

- Congeneric, Tau-Equivalent, and Parallel Indicators

  • 앞에서 밝혔듯 CFA에서 많은 경우는 congeneric indicator sets를 사용함.
    이 중에서도 tau-equivalent 와 parallel indicators는 구별 필요. 1. Tau-equivalent: 같은 loading 값을 갖지만 error variance는 다른 것. 2. parallel: 로딩도 같고 오차(정확도의 수준)도 같고.
    parallel의 가정이 충족되면 이는 심리측정학 적으로 질문 문항들은 상호교환될 수 있음을 지지함.
Figure 7.1
Figure 7.1
sds_7.1 <- '2.610  2.660  2.590  1.940  2.030  2.050'

cors_7.1 <-'
  1.000
  0.661  1.000
  0.630  0.643  1.000
  0.270  0.300  0.268  1.000
  0.297  0.265  0.225  0.805  1.000
  0.290  0.287  0.248  0.796  0.779  1.000'

covs_7.1 <- getCov(cors_7.1, sds = sds_7.1, names = paste("x", 1:6, sep = ""))

model_7.1 <- '
  auditoryM =~ x1 + x2 + x3
  visualM   =~ x4 + x5 + x6
'
model_7.1_fit <- cfa(model_7.1, sample.cov = covs_7.1, sample.nobs = 200, std.lv = TRUE)
summary(model_7.1_fit, fit.measures = TRUE, standardized = TRUE, rsquare = TRUE)
## lavaan (0.5-23.1097) converged normally after  22 iterations
## 
##   Number of observations                           200
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic                4.877
##   Degrees of freedom                                 8
##   P-value (Chi-square)                           0.771
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic              719.515
##   Degrees of freedom                                15
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.008
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -2337.980
##   Loglikelihood unrestricted model (H1)      -2335.541
## 
##   Number of free parameters                         13
##   Akaike (AIC)                                4701.959
##   Bayesian (BIC)                              4744.837
##   Sample-size adjusted Bayesian (BIC)         4703.652
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent Confidence Interval          0.000  0.057
##   P-value RMSEA <= 0.05                          0.929
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.012
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   auditoryM =~                                                          
##     x1                2.101    0.166   12.663    0.000    2.101    0.807
##     x2                2.182    0.168   12.976    0.000    2.182    0.823
##     x3                2.013    0.166   12.124    0.000    2.013    0.779
##   visualM =~                                                            
##     x4                1.756    0.108   16.183    0.000    1.756    0.907
##     x5                1.795    0.115   15.608    0.000    1.795    0.887
##     x6                1.796    0.117   15.378    0.000    1.796    0.878
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   auditoryM ~~                                                          
##     visualM           0.382    0.070    5.463    0.000    0.382    0.382
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .x1                2.366    0.372    6.365    0.000    2.366    0.349
##    .x2                2.277    0.383    5.940    0.000    2.277    0.323
##    .x3                2.621    0.373    7.027    0.000    2.621    0.393
##    .x4                0.662    0.117    5.668    0.000    0.662    0.177
##    .x5                0.877    0.134    6.554    0.000    0.877    0.214
##    .x6                0.956    0.139    6.866    0.000    0.956    0.229
##     auditoryM         1.000                               1.000    1.000
##     visualM           1.000                               1.000    1.000
## 
## R-Square:
##                    Estimate
##     x1                0.651
##     x2                0.677
##     x3                0.607
##     x4                0.823
##     x5                0.786
##     x6                0.771
# tau equivalent: auditory memory only
model.tau.a <- '
  auditorymemory =~ x1 + v1*x1 + v1*x2 + v1*x3
  visualmemory   =~ x4 + x5 + x6
'

# tau equivalent: both auditory & visual memory
model.tau.av <- '
  auditorymemory =~ x1 + v1*x1 + v1*x2 + v1*x3
  visualmemory   =~ x4 + v2*x4 + v2*x5 + v2*x6
'

# parallel: auditory memory only
model.parallel.a <- '
  auditorymemory =~ x1 + v1*x1 + v1*x2 + v1*x3
  visualmemory   =~ x4 + v2*x4 + v2*x5 + v2*x6
  x1 ~~ v3 * x1
  x2 ~~ v3 * x2
  x3 ~~ v3 * x3
'

# parallel: both auditory & visual memory
model.parallel.av <- '
  auditorymemory =~ x1 + v1*x1 + v1*x2 + v1*x3
  visualmemory   =~ x4 + v2*x4 + v2*x5 + v2*x6
  x1 ~~ v3 * x1
  x2 ~~ v3 * x2
  x3 ~~ v3 * x3
 
  x4 ~~ v4 * x4
  x5 ~~ v4 * x5
  x6 ~~ v4 * x6
'
  • tau-,para- 이걸 하기 위해서는 먼저 factor loading과 residual variance가 자유모수로 추정되는 congeneric model이 가능한지 살펴야함.
    congeneric이 아니면 못함.
  • congeneric measurement model 이후에 tau equivalence를 수행함. 그리고 카이스퀘어 차이 검정 실시
    Tau~ 적합하면 parallel 검증으로 진행 가능.
  • (예시) Auditory와 Visual memory 예시
    1. two-factor solution (모형 적합도 훌륭).
      modification indices 와 standardzied residual도 strain 영역 없었음
    2. Auditory Factor에 대해서 Tau-equivalnce 조사.
      Mplus에서 equality 주는 법 AUDITORY BY X1* X2 X3 (1)
      X1을 마커로쓰는게아니라 auditory factor의 분산을 1로 고정.
      검증해본 결과 \(\chi^2=5.66, df=10, p=.84\)
      3개의 파라미터에 대해서 고정하기 전보다 자유도가 2개가 올랐음 왜냐면 3개의 로딩이 아닌 1개의 로딩만 있으면 되니까 2만큼 자유도가 더 큼.
      \(\chi^2_{diff}=0.78, df=2, p> .05\)
      visual도 해보니 문제 없더라(표 7.3) 즉 tau-equivalent 하니까 parallel로 넘어갈 수 있음.
      (이 경우는 요인분산을 1로 고정했는데 요인 분산은 비표준화하고 로딩을 1로 고정해도 동일한 결과 얻을 수 있음)
    3. parallelism 은 같은 요인에 걸리는 지표들의 error variance가 동일한 것을 필요로 함.
      검증 결과 parallel한 것으로 나타남.
      즉, 각 요인에 걸리는 문항들은 각기 interchangeable 한 것으로 나타남.
Table 7.3
Table 7.3
  • 두가지 알림 사항
    1. congeneric / tau / parallel 은 전부 nested된거니 parallel과 비교는 congeneric 하든 tau하든 다 할 수 있음.
    2. congeneric인 multifactorial 모형에서 하나의 요인이 tau-equi하거나 parallel 하지 않아도 다른 요인이 어떠한지랑은 전혀 노상관.
Parallel Mplus 코딩법
Parallel Mplus 코딩법

- Longitudinal Measurement Invariance

  • 하나의 그룹인데 시간에 따른 변화가 invariance한지 보는 것.
    longitudinal measurement invairance는 응용연구에서 많이 활용되지는 않지만 구성개념의 시간적 변화에 있어서 핵심적인 개념.
    이런 평가가 없다면, 구성개념 측정에서 시간적 변화가 true change인지 또는 시간의 변화에 구성개념에 대한 structure나 measurement에 의한 변화인지 알 수 없음.
  • Golembiewski 등에 따른 변화 3가지 분류. alpha, beta, gamma
    • alpha: conceptual domain 과 measurement는 변함 없는 상황에서, 구성개념에서 true-score만 변화.
      beta와 gamma가 없는 변화만 종단 측정에서 measurement invariance라고 할 수 있음.
    • beta: 관심의 대상이되는 construct는 변화가 없지만 구성개념의 indicator의 measurement properties가 시간적으로 동일하지 않은것.
      e.g.) 측정 시점에 따라서 측정한 값이 같은 measurement sclae에 있지 않은 것.
    • gamma: 시간의 변화에 따라 construct의 의미가 변하는 것.
      e.g.) 시간의 변화에 따라서 construct를 나타내는 요인의 수가 변하는 것.
  • 실제 응용 연구에서 measurement invariance는 종종 대충 또는 암묵적으로 가정되거나 검사되지 않는다.
    하지만 측정이 시간의 변화에 따라 변화하지 않는다면, 관찰 측정치나 잠재 구성개념의 잘못된 분석과 해석을 불러올 수 있다.
    즉, 구성개념에 대한 측정의 정확도나 구성개념 그 자체가 시간에 따라 변화하는 것이지만 이런 변화가 alpha change로 잘못 해석될 수 있는 것.
    그렇기 때문에 SEM을 활용하기 이전에 measurement invariance를 수행해야함(should)
Figure 7.2
Figure 7.2
lmi_sds <- '1.940  2.030  2.050  1.990  2.610  2.660  2.590  2.550'

lmi_cors <- '
  1.000
  0.736  1.000
  0.731  0.648  1.000
  0.771  0.694  0.700  1.000
  0.685  0.512  0.496  0.508  1.000
  0.481  0.638  0.431  0.449  0.726  1.000
  0.485  0.442  0.635  0.456  0.743  0.672  1.000
  0.508  0.469  0.453  0.627  0.759  0.689  0.695  1.000'

lmi_covs <- getCov(lmi_cors, sds = lmi_sds, names = c("A1", "B1", "C1", "D1", "A2", "B2", "C2", "D2"))

lmi_ms <- c(1.500,  1.320,  1.450,  1.410,  6.600,  6.420,  6.560,  6.310) # this should be a numeric vector, not a character string

model.equalform <- '
    satis1 =~ A1 + B1 + C1 + D1
    satis2 =~ A2 + B2 + C2 + D2
    A1 ~~ A2
    B1 ~~ B2
    C1 ~~ C2
    D1 ~~ D2
    
    # fix indicator intercepts to 0
    A1 ~ 0*1
    A2 ~ 0*1
    
    # free factor intercepts
    satis1 ~ 1
    satis2 ~ 1
'
fit.equalforms <- cfa(model.equalform, sample.cov = lmi_covs, sample.nobs = 250, sample.mean = lmi_ms, meanstructure = TRUE)
summary(fit.equalforms, standardized = TRUE, fit.measures = TRUE)
## lavaan (0.5-23.1097) converged normally after  74 iterations
## 
##   Number of observations                           250
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic                2.093
##   Degrees of freedom                                15
##   P-value (Chi-square)                           1.000
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic             1823.749
##   Degrees of freedom                                28
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.013
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -3573.572
##   Loglikelihood unrestricted model (H1)      -3572.526
## 
##   Number of free parameters                         29
##   Akaike (AIC)                                7205.145
##   Bayesian (BIC)                              7307.267
##   Sample-size adjusted Bayesian (BIC)         7215.335
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent Confidence Interval          0.000  0.000
##   P-value RMSEA <= 0.05                          1.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.010
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   satis1 =~                                                             
##     A1                1.000                               1.728    0.899
##     B1                0.951    0.050   19.212    0.000    1.643    0.811
##     C1                0.970    0.049   19.616    0.000    1.676    0.814
##     D1                0.990    0.046   21.395    0.000    1.710    0.859
##   satis2 =~                                                             
##     A2                1.000                               2.327    0.896
##     B2                0.916    0.048   18.973    0.000    2.131    0.808
##     C2                0.922    0.046   20.085    0.000    2.144    0.828
##     D2                0.934    0.045   20.770    0.000    2.173    0.849
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##  .A1 ~~                                                                 
##    .A2                0.701    0.119    5.915    0.000    0.701    0.723
##  .B1 ~~                                                                 
##    .B2                1.043    0.163    6.407    0.000    1.043    0.565
##  .C1 ~~                                                                 
##    .C2                1.042    0.158    6.576    0.000    1.042    0.598
##  .D1 ~~                                                                 
##    .D2                0.770    0.134    5.735    0.000    0.770    0.558
##   satis1 ~~                                                             
##     satis2            2.680    0.353    7.586    0.000    0.667    0.667
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .A1                0.000                               0.000    0.000
##    .A2                0.000                               0.000    0.000
##     satis1            1.500    0.122   12.343    0.000    0.868    0.868
##     satis2            6.600    0.164   40.183    0.000    2.836    2.836
##    .B1               -0.107    0.117   -0.910    0.363   -0.107   -0.053
##    .C1               -0.005    0.118   -0.042    0.967   -0.005   -0.002
##    .D1               -0.075    0.108   -0.692    0.489   -0.075   -0.038
##    .B2                0.375    0.340    1.102    0.270    0.375    0.142
##    .C2                0.477    0.324    1.475    0.140    0.477    0.184
##    .D2                0.146    0.316    0.462    0.644    0.146    0.057
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .A1                0.707    0.105    6.722    0.000    0.707    0.192
##    .B1                1.409    0.153    9.178    0.000    1.409    0.343
##    .C1                1.434    0.157    9.137    0.000    1.434    0.338
##    .D1                1.038    0.127    8.165    0.000    1.038    0.262
##    .A2                1.330    0.195    6.815    0.000    1.330    0.197
##    .B2                2.418    0.263    9.183    0.000    2.418    0.347
##    .C2                2.113    0.239    8.856    0.000    2.113    0.315
##    .D2                1.836    0.219    8.390    0.000    1.836    0.280
##     satis1            2.985    0.321    9.297    0.000    1.000    1.000
##     satis2            5.414    0.586    9.244    0.000    1.000    1.000
model.equalfl <- '
    # equality of factor loadings
    satis1 =~ v1*A1 + v2*B1 + v3*C1 + v4*D1
    satis2 =~ v1*A2 + v2*B2 + v3*C2 + v4*D2
    A1 ~~ A2
    B1 ~~ B2
    C1 ~~ C2
    D1 ~~ D2
    
    # fix indicator intercepts to 0
    A1 ~ 0*1
    A2 ~ 0*1
    
    # free factor intercepts
    satis1 ~ 1
    satis2 ~ 1
'

fit.equalfl <- cfa(model.equalfl, sample.cov = lmi_covs, sample.nobs = 250, sample.mean = lmi_ms, meanstructure = TRUE)
summary(fit.equalfl, standardized = TRUE, fit.measures = TRUE)
## lavaan (0.5-23.1097) converged normally after  72 iterations
## 
##   Number of observations                           250
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic                3.882
##   Degrees of freedom                                18
##   P-value (Chi-square)                           1.000
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic             1823.749
##   Degrees of freedom                                28
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.012
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -3574.467
##   Loglikelihood unrestricted model (H1)      -3572.526
## 
##   Number of free parameters                         26
##   Akaike (AIC)                                7200.934
##   Bayesian (BIC)                              7292.492
##   Sample-size adjusted Bayesian (BIC)         7210.070
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent Confidence Interval          0.000  0.000
##   P-value RMSEA <= 0.05                          1.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.014
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   satis1 =~                                                             
##     A1        (v1)    1.000                               1.748    0.904
##     B1        (v2)    0.935    0.041   22.576    0.000    1.635    0.809
##     C1        (v3)    0.946    0.041   23.281    0.000    1.653    0.808
##     D1        (v4)    0.963    0.039   24.802    0.000    1.683    0.854
##   satis2 =~                                                             
##     A2        (v1)    1.000                               2.290    0.890
##     B2        (v2)    0.935    0.041   22.576    0.000    2.142    0.810
##     C2        (v3)    0.946    0.041   23.281    0.000    2.166    0.831
##     D2        (v4)    0.963    0.039   24.802    0.000    2.206    0.854
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##  .A1 ~~                                                                 
##    .A2                0.699    0.118    5.901    0.000    0.699    0.721
##  .B1 ~~                                                                 
##    .B2                1.044    0.163    6.413    0.000    1.044    0.566
##  .C1 ~~                                                                 
##    .C2                1.044    0.159    6.586    0.000    1.044    0.599
##  .D1 ~~                                                                 
##    .D2                0.771    0.134    5.738    0.000    0.771    0.557
##   satis1 ~~                                                             
##     satis2            2.664    0.351    7.579    0.000    0.666    0.666
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .A1                0.000                               0.000    0.000
##    .A2                0.000                               0.000    0.000
##     satis1            1.500    0.122   12.264    0.000    0.858    0.858
##     satis2            6.600    0.163   40.572    0.000    2.882    2.882
##    .B1               -0.083    0.109   -0.760    0.447   -0.083   -0.041
##    .C1                0.031    0.109    0.286    0.775    0.031    0.015
##    .D1               -0.035    0.101   -0.346    0.729   -0.035   -0.018
##    .B2                0.247    0.299    0.826    0.409    0.247    0.093
##    .C2                0.318    0.292    1.088    0.276    0.318    0.122
##    .D2               -0.048    0.279   -0.170    0.865   -0.048   -0.018
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .A1                0.685    0.105    6.554    0.000    0.685    0.183
##    .B1                1.415    0.153    9.258    0.000    1.415    0.346
##    .C1                1.448    0.156    9.264    0.000    1.448    0.346
##    .D1                1.056    0.126    8.376    0.000    1.056    0.271
##    .A2                1.373    0.192    7.145    0.000    1.373    0.208
##    .B2                2.406    0.262    9.187    0.000    2.406    0.344
##    .C2                2.100    0.238    8.826    0.000    2.100    0.309
##    .D2                1.813    0.218    8.327    0.000    1.813    0.271
##     satis1            3.054    0.321    9.507    0.000    1.000    1.000
##     satis2            5.243    0.559    9.385    0.000    1.000    1.000
anova(fit.equalforms, fit.equalfl, test = "chisq")
## Chi Square Difference Test
## 
##                Df    AIC    BIC  Chisq Chisq diff Df diff Pr(>Chisq)
## fit.equalforms 15 7205.1 7307.3 2.0927                              
## fit.equalfl    18 7200.9 7292.5 3.8821     1.7893       3     0.6173
  • 개입프로그램이 직업 만족도를 증진시켰는지 여부.
  • 짝지어지는 문항에 correlated error 넣음.
    indicator-specific variance는 시간적으로 안정적일 것이라는 가정.
    이는 경우에 따라서 안넣어도 됨.
  • longitudinal measurement invariance는 multiple-group approach로도 평가 가능함. (시간 전, 후 = 그룹 1 ,2)
  • one-sample 가지고 또는 multiple-groups aproach를 가지고 measurement invariance 탐지하는 차이.
    • one-sample은 큰 입력 행렬을 활용하는데. 이는 더 낮은 적합도 문제가 생기거나 improper solution 결과 나타날 가능성이 큼. 그렇긴 하지만, 모든 시간적 측정 구조를 모형화할 수 있게 하기 때문에 one-sample approach가 더 많이 선호됨

\[ \begin{aligned} \hat{Y}&=a+bX \\ Y&=a+bX+e \\ a &= M_y - bM_x\\ M_y &= a + bM_x \end{aligned} \]

  • intercept paramter 추가 여부가 다름.

\(VAR(X)=\lambda_x^2\phi + \delta\)
\(X=\tau_x+\Lambda_x\xi+\Theta_\delta\) intercept(latent mean)을 투입한 CFA 식.

\(M_x=\tau_x+\lambda_x\kappa\) tau X에 대해서 일반화, \(\kappa\)는 latent exogenous variable의 평균

  • 즉 주어진 indicator의 평균 \(M_X\)는 CFA 모형의 파라미터 추정치들(\(\tau_X,\lambda_X,\kappa\))을 활용하여 재구성 가능함.
  • 나중에 다루겠지만 mean strucrue를 넣는 것은 또다른 종류의 identification 문제를 발생시키는데 이 양태가 single-sample과 multiple-sample일 때 다름
  • 종단 측정 불변성 예시로 돌아가서, 이 분석은 mean strucrue 투입 하거나 안하거나 둘 다 활용가능하다.
    만약 최종 목표가 covariance struce에 기반한 모형 검증이라면 means structure에 대한 분석은 별로 적절치 않을 것이다.
    그런데, 주어진 구성개념에서 변화하는 궤적(trajectory)이 관심의 대상이면, 반드시 indicator들의 평균에 관한 분석에 measurement invariance 평가도 추가 해야한다.
    즉, 평균치에 대한 비교는, 요인 부하량과 measurement intercepts가 변화하지 않는 경우에만 의미를 가짐.

  • 다시 그림7.2으로 돌아가서
    반복측정에서 같은 문항에 correlated error를 투입한 것은 추가적인 공분산이 존재하는데, 이는 indicator-specific variance가 시간적으로 안정적이기 때문에(method effect)
  • indicator intercept와 factor mean 을 추정하기위해서는 indicator의 평균값을 input data에 추가해야한다.
    때문에 입력 행렬은 변수의 개수(평균 값의 개수) 만큼 추가 됨.
    \(a=[p(p+1)/2] + p\), \(a=[p(p+3)]/2\)
    이 예시에서 8개의 관찰된 평균 값이 있지만 CFA에서 추정해야하는mean structure 부분의 값은 10개임(8 indicator intercepts + 2 latent variable means)
    때문에 이 측면에서 보자면 이 모형은 underidentification.
  • covariance structure analysis에서는 잠재 변수의 평균을 0으로 가정하지만,
    mean structure analysis에서는 잠재 변수는 0이 아닌 다른 평균 값을 가질 수 있기에, origins must be assigned.
  • single-sample anlysis에서 평균 구조는 세 가지 정도 방법으로 식별됨
    1. fixing the latent mean to zero
      모든 indicator의 intercept는 자유 모수로 추정되지만 관찰한 평균 값과 동일
    2. assigning the factor mean to take on the mean as one of its indicators
      (by fixing the intercept of one indicators to zero)
      하나를 제외한 전부의 intercept만 자유모수로 추정하고 이 intercepts는 샘플 평균과 다른 값을 가짐.
      요인 평균은 자유모수로 추정되지만 intercept를 0으로 고정한 indicator만 관찰한 평균하고만 동일함.
    3. using the effects coding approach
      indicator intercepts와 같은 measurement model에 제약이 가해져서 latent construct의 합이 0이되게끔 함.
    • 이 방법들의 제한은 솔루션에서 mean structure 부분에 있어서 just-identification 결과를 가져옴.
      모든 방법 들은 추가적인 제약을 가해서 overidentify하게 할 수 있음.
      (e.g., indicator intercepts가 동일하도록 제약을 가하거나)
  • 예시에서 A indicator의 intercept는 두번의 반복 측정에서 0으로 고정됨.
    결과적으로, 초기의 제약이 덜 가해진 솔루션에서 직업 만족의 잠재 변수의 평균은 indicator A의 관찰된 평균과 동일함.
    그리고 이런 제약으로 인해 평균구조는 just-identification임
    (8개의 관찰한 평균 값 = 8개의 자유모수(6개의 절편 + 2개의 잠재 변수 평균))
    어쨌거나 input matrix은 indicator means을 추가하여 확장했지만 전체적인 모형 df는 15로 동일함. 왜냐하면 mean structure component는 추가적인 자유도를 제공해주지 않기 때문에 8-8=0
  • indicator A의 intercept를 0으로 고정해서 mean structrue 부분을 identify 하려 했음.
    이 때문에 A1과 A2의 estimates 값이 0으로 도출되고
    결과적으로 잠재 변수의 평균도 A1과 A2의 관찰한 평균값과 동일

\[ \begin{aligned} M_y &= a + bM_x \\ 1.32 &= -0.107 +0.951(1.5) \end{aligned} \]

  • eqaul()
# equality constraint를 주기 위해서 equal() 활용:     B1 ~ equal("B2~1")*1
# B1의 intercept를 B2의 것과 동일하도록 제약 주는 것.
model.equali <- '
    # equality of factor loadings
    satis1 =~ v1*A1 + v2*B1 + v3*C1 + v4*D1
    satis2 =~ v1*A2 + v2*B2 + v3*C2 + v4*D2
    A1 ~~ A2
    B1 ~~ B2
    C1 ~~ C2
    D1 ~~ D2
    
    # fix indicator intercepts to 0
    A1 ~ 0*1
    A2 ~ 0*1
    # free factor intercepts
    satis1 ~ 1
    satis2 ~ 1
    # equal indicator intercepts
    B1 ~ equal("B2~1")*1
    C1 ~ equal("C2~1")*1
    D1 ~ equal("D2~1")*1
'

fit.equali <- cfa(model.equali, sample.cov = lmi_covs, sample.nobs = 250, sample.mean = lmi_ms, meanstructure = TRUE)
summary(fit.equali, standardized = TRUE, fit.measures = TRUE)
## lavaan (0.5-23.1097) converged normally after  72 iterations
## 
##   Number of observations                           250
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic                7.254
##   Degrees of freedom                                21
##   P-value (Chi-square)                           0.998
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic             1823.749
##   Degrees of freedom                                28
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.010
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -3576.153
##   Loglikelihood unrestricted model (H1)      -3572.526
## 
##   Number of free parameters                         23
##   Akaike (AIC)                                7198.306
##   Bayesian (BIC)                              7279.300
##   Sample-size adjusted Bayesian (BIC)         7206.388
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent Confidence Interval          0.000  0.000
##   P-value RMSEA <= 0.05                          1.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.026
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   satis1 =~                                                             
##     A1        (v1)    1.000                               1.713    0.897
##     B1        (v2)    0.989    0.017   56.700    0.000    1.695    0.821
##     C1        (v3)    0.993    0.017   60.079    0.000    1.702    0.818
##     D1        (v4)    0.962    0.016   60.428    0.000    1.649    0.847
##   satis2 =~                                                             
##     A2        (v1)    1.000                               2.239    0.882
##     B2        (v2)    0.989    0.017   56.700    0.000    2.215    0.822
##     C2        (v3)    0.993    0.017   60.079    0.000    2.224    0.840
##     D2        (v4)    0.962    0.016   60.428    0.000    2.155    0.846
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##  .A1 ~~                                                                 
##    .A2                0.723    0.117    6.187    0.000    0.723    0.717
##  .B1 ~~                                                                 
##    .B2                1.023    0.162    6.298    0.000    1.023    0.564
##  .C1 ~~                                                                 
##    .C2                1.031    0.158    6.515    0.000    1.031    0.601
##  .D1 ~~                                                                 
##    .D2                0.785    0.133    5.918    0.000    0.785    0.560
##   satis1 ~~                                                             
##     satis2            2.547    0.321    7.923    0.000    0.664    0.664
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .A1                0.000                               0.000    0.000
##    .A2                0.000                               0.000    0.000
##     satis1            1.500    0.121   12.421    0.000    0.876    0.876
##     satis2            6.617    0.160   41.421    0.000    2.955    2.955
##    .B1      (B2~1)   -0.156    0.098   -1.583    0.113   -0.156   -0.075
##    .C1      (C2~1)   -0.032    0.099   -0.328    0.743   -0.032   -0.016
##    .D1      (D2~1)   -0.039    0.089   -0.436    0.663   -0.039   -0.020
##    .B2      (.17.)   -0.156    0.098   -1.583    0.113   -0.156   -0.058
##    .C2      (.18.)   -0.032    0.099   -0.328    0.743   -0.032   -0.012
##    .D2      (.19.)   -0.039    0.089   -0.436    0.663   -0.039   -0.015
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .A1                0.711    0.101    7.060    0.000    0.711    0.195
##    .B1                1.391    0.152    9.149    0.000    1.391    0.326
##    .C1                1.427    0.155    9.185    0.000    1.427    0.330
##    .D1                1.070    0.124    8.655    0.000    1.070    0.282
##    .A2                1.428    0.188    7.609    0.000    1.428    0.222
##    .B2                2.363    0.260    9.082    0.000    2.363    0.325
##    .C2                2.066    0.236    8.753    0.000    2.066    0.295
##    .D2                1.839    0.214    8.610    0.000    1.839    0.284
##     satis1            2.936    0.291   10.099    0.000    1.000    1.000
##     satis2            5.013    0.499   10.050    0.000    1.000    1.000
  • equal form(cf. gamma change)같은 증거를 가지고 종단 측정 불변 테스트를 실시할 수 있다.
    tau equivalence와 다르게 종단에서는 한 요인에 걸리는 로딩 값들의 동일이 아니라 A끼리 B끼리 같은지 비교하는 것임.
Table 7.7
Table 7.7
  • Eqaul factor loading 값을 보면, \(\chi^2_{diff}\)가 유의하지 않음. 자유도는 3만 증가하는데 왜냐면 A 지표는 고정했기에 적용되지 않고,
    B,C,D만 각 2개씩 추정하던걸 1개만 추정하니(B1,B2(2개) : B1= B2(1개)) 자유도가 3 증가.
  • 결과를 통해서 직업 만족이 시간에 변화함에 따라 지표들은 equivalent 관계를 가진다 라고 할 수 있음.
  • factor loading의 동질성 제약을 한 상태로 다음 모형은 indicators’ intercepts의 동질성 검정을 추가적으로 실시함. (A1, A2는 이미 0으로 고정이라 제외하고)
    이 모형도 유의하지않음. 즉 두 측정 시기 간에 indicator의 intercept는 변하지 않음.
  • 회귀분석에서 intercept와 \(\tau_X\)는 동일하게 해석 가능. \(\kappa=0\) 일 때의 값.
    때문에 indicator의 intercept는 시간의 변화에 따라 변하지 않는다 할지라도 잠재 변수의 수준이 달라지면 에측 값이 달라질 수 있음.
    달리 말하자면, “true score”(latent variable)이 변하지 않는다 할지라도, indicator의 관찰 값은 시간의 변화에 따라 변할 수 있음.
    때문에 관찰 값의 변화가 true change(alpha change)라고 잘못 해석할 수 있다. 관찰 값의 변화는 때로 indicator의 측정 속성에서 시간의 변화에 의한 것일 수 있음.
  • 예를 들어, factor loading equivalence는 indicator가 시간적으로 변함 없음을 나타내지만, noninvariance indicator intercept는 indicator’s location paramteres over time의 inequality를 나타낼 수 있다.
  • 요 예시에서는 factor loading과 indicator intercept가 변하지 않는다는 결과가 도출되었으니, 결과적으로 시간에 따른 평균의 차이는 construct의 ture change라고 할 수 있당.
Table 7.8
Table 7.8
  • 분산의 heterogeneity는 반복측정 설계에서 흔하게 도출되는 결과임. 떄문에 equal residual variance 검정은 종종 달성되지 못함.
    이는 직업 만족 개입 프로그램에서 개인차를 반영하는 것일 수도 있음.
    즉 첫 측정에서는 사람들이 비슷했는데 개입 프로그램에 사람들이 다르게 반응하기 때문에 누군가는 효과가 있고 누군 없고~ 그래서 두번째에는 개인차가 생긴 것. 이는 입력 행렬에서 두번째 측정의 분산의 크기가 커진 것을 통해 확인 가능.
  • equal indicator residual variance는 실제 데이터에서 거의 성립되지 않는데, 다행스럽게도 equality of indicator error variance는 invariance 평가와 별로 관련 없음.

- The Effects Coding Approach to Scaling Latent Variables.

  • 제약을 통해 주어진 construct에서 factor loading의 평균이 1이 되게 하고 관련되는 indicator의 intercept의 합이 0이되도록 함.
    때문에 잠재 변수의 분산은 construct에 의해서 설명되는 indicator들의 분산의 평균을 반영함. 그리고 잠재 변수의 평균은 해당 construct를 구성하는 indicator들의 가중 평균임. 때문에 mardker indicator approach와는 다르게 effect coding approach는 nonarbitrary라고 표현되는데 왜냐하면 잠재 변수는 그것의 모든 manifest indicator의 평균으로 구성되기에 같은 unstandardzied metric을 갖기 때문.
  • indicator가 해석가능한 척도를 가지는 경우에 effect coding approach가 더 나은 방법으로 평가받는다. 왜냐하면 이펙트 코딩 방법으로 도출되는 unstandardized parameter 추정치가 nonarbitrary scale of measurement를 반영하기 때문에 보다 더 해석가능성이 높아서.
############################################
# 틀렸음
# 확인 필요!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# https://groups.google.com/forum/#!topic/lavaan/mUkfB3HQLmM
############################################
model.effect <- '
# Measurement Model
statis1 =~ NA*A1 + v1*A1 + v2*B1 + v3*C1 + v4*D1
statis2 =~ NA*A2 + u1*A2 + u2*B2 + u3*C2 + u4*D2

# Defining intercepts
A1 ~ t1*1
B1 ~ t2*1
C1 ~ t3*1
D1 ~ t4*1

A2 ~  s1*1
B2 ~  s2*1
C2 ~  s3*1
D2 ~  s4*1

# Effect coding
v1 == 4 - v2 - v3 - v4
u1 == 4 - u2 - u3 - u4
t1 == 4 - t2 - t3 - t4
s1 == 4 - s2 - s3 - s4
'

fit.effect <- cfa(model.effect, sample.cov = lmi_covs, sample.nobs = 250, sample.mean = lmi_ms, meanstructure = TRUE)
summary(fit.effect, standardized = TRUE, fit.measures = TRUE)
## lavaan (0.5-23.1097) converged normally after  57 iterations
## 
##   Number of observations                           250
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic              921.148
##   Degrees of freedom                                21
##   P-value (Chi-square)                           0.000
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic             1823.749
##   Degrees of freedom                                28
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.499
##   Tucker-Lewis Index (TLI)                       0.332
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -4033.100
##   Loglikelihood unrestricted model (H1)      -3572.526
## 
##   Number of free parameters                         23
##   Akaike (AIC)                                8112.200
##   Bayesian (BIC)                              8193.194
##   Sample-size adjusted Bayesian (BIC)         8120.282
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.414
##   90 Percent Confidence Interval          0.391  0.437
##   P-value RMSEA <= 0.05                          0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           2.229
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   statis1 =~                                                            
##     A1        (v1)    1.041    0.032   32.131    0.000    1.809    0.910
##     B1        (v2)    0.971    0.039   25.122    0.000    1.689    0.818
##     C1        (v3)    0.980    0.039   25.121    0.000    1.703    0.817
##     D1        (v4)    1.008    0.035   28.445    0.000    1.752    0.863
##   statis2 =~                                                            
##     A2        (u1)    1.033    0.012   88.361    0.000    6.092    0.983
##     B2        (u2)    1.005    0.014   71.239    0.000    5.924    0.967
##     C2        (u3)    0.984    0.014   72.818    0.000    5.800    0.970
##     D2        (u4)    0.978    0.013   75.926    0.000    5.768    0.973
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   statis1 ~~                                                            
##     statis2           5.011    0.751    6.674    0.000    0.489    0.489
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .A1        (t1)    1.045    0.050   20.792    0.000    1.045    0.525
##    .B1        (t2)    0.922    0.063   14.621    0.000    0.922    0.447
##    .C1        (t3)    1.050    0.064   16.505    0.000    1.050    0.504
##    .D1        (t4)    0.983    0.057   17.216    0.000    0.983    0.484
##    .A2        (s1)    0.976    0.068   14.412    0.000    0.976    0.157
##    .B2        (s2)    0.901    0.082   10.953    0.000    0.901    0.147
##    .C2        (s3)    1.166    0.079   14.807    0.000    1.166    0.195
##    .D2        (s4)    0.958    0.075   12.760    0.000    0.958    0.162
##     statis1           0.000                               0.000    0.000
##     statis2           0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .A1                0.682    0.105    6.474    0.000    0.682    0.172
##    .B1                1.411    0.153    9.212    0.000    1.411    0.331
##    .C1                1.447    0.157    9.230    0.000    1.447    0.333
##    .D1                1.056    0.128    8.278    0.000    1.056    0.256
##    .A2                1.309    0.192    6.826    0.000    1.309    0.034
##    .B2                2.420    0.270    8.971    0.000    2.420    0.065
##    .C2                2.133    0.243    8.766    0.000    2.133    0.060
##    .D2                1.852    0.220    8.410    0.000    1.852    0.053
##     statis1           3.022    0.296   10.200    0.000    1.000    1.000
##     statis2          34.763    3.152   11.027    0.000    1.000    1.000
## 
## Constraints:
##                                                |Slack|
##     v1 - (4-v2-v3-v4)                            0.000
##     u1 - (4-u2-u3-u4)                            0.000
##     t1 - (4-t2-t3-t4)                            0.000
##     s1 - (4-s2-s3-s4)                            0.000
  • effect size coding을 한다고해서 모형 적합도가 달라지지 않음. 1.0 근처에서 요인부하량이 추정되긴 하지만, marker에서 처럼 어떤 요인계수가 1로 고정되거나 하지 않음
  • 잠재 변수의 평균은 indicator의 관찰 평균 값의 평균임.
    보다 엄밀하게 말하면 indicator의 관찰 평균값의 비표준화 요인 부하량의 가중평균임.
  • 요인의 분산은 잠재 변수에 의해 설명되는 indicator의 분산의 평균을 반영함.
    이 점이 marker approach와 effect coding approach의 중요한 차이임.
    marker를 활용하게 되면 요인의 metric은 선택한 하나의 마커 측정 값에 의해서 정의되기에,
    구성개념의 true mean 과 variance에 관하여 도출된 추정 값이 언제나 해석가능하지는 않다.
    구성개념을 측정하는 모든 측정이 요인의 metric에 기여함과 동시에 요인의 평균과 분산 추정치는 true-score의 측정치의 평균의 평균과 분산을 나타내기 떄문에 effect coding이 더 좋다.
    때문에 effect coding은measurement invariance 평가 상황 또는 요인을 정의하는 indicator들이 해석 가능한 metric을 지니는 상황에서 더 유용하다.
    만약 metric이 별로 중요하지 않다면 요인 분산을 1로 고정한 표준화 솔루션을 원할 수도 있다.

  • \(\tau_1 = 4 - \tau_2 - \tau_3 - \tau_4\) 여기서 좌측 텀을 뭘 두든 상관없음. marker처럼 해당 indicator를 활용하는게 아니라 네 가지 지표 모두 추정에 활용하기 때문
  • scaling 방법을 무엇을 쓰건 간에 상관 없이 모형 적합도는 동일!

CFA IN MULTIPLE GROUPS

- Overview of the Multiple-Group Solutions

  • 동시에 한 그룹 이상에 분석을 실시하는 것
  • 앞에서 이야기했듯이 EFA와 비교해 CFA갖는 장점은 모든 measurement, structrual parameter에 대한 동질성 검정을 여러 그룹에 걸쳐 실시할 수 있다는 점임.
  • measurement model은 indicator들 측정 속성존 존재?. observed measures, lambda, tau, theta.
    반면 그룹간 동질성 평가는 measurement invariance
  • structural parameter는 phi, kappa. 만약 잠재Y 변수가 투입된다면 psi와 alpha가 사용됨.
    structural parameter는 표본을 표집한 모집단의 특성을 묘사하기 때문에 structural parameter의 그룹 일치(group concordance)를 검정하는 것은 population heterogeneity라 할 수 있다.
    이는, 퍼진 정도, 상호관계, 요인의 수준은 그룹마다 다를까?로 표현 가능.
  • structural parameter에 대한 평가는 측정오차와 오차이론을 고려했을 때 그룹 간에 존재할 수 있는 잠재적인 차이를 드러냄.
  • CFA with multiple group은 연구에 활용가치가 뛰어남.
    측정 불변성 문제를 평가하는 것은 심리측정에 있어서 중요하다.
    모집단에 속하는 서브그룹에 대해서 설문문항이 같은 construct를 측정하는지? construct들 간에 같은 관계를 갖는지? 또는 성별에 따라, 나이에 따라, 인종에따라 설문지에 대한 반응이 다른지? 특정한 서브그룹에 대해서는 편향적인 문항을 갖고 있는지?(잠재 수준이 동일할때 특정 그룹에서 점수낮거나 높아지는지).
    또한, 일반화가능도(generalizability)에 있어서도 중요함.
  • 요인 공분산의 동질성 검사를 하는 것은 CFA에서 독립적인 상관계수가 다른 크기를 갖는지 평가하는 추론적 평가과정에 대응된다.
  • test of the equality of latent means는 평균 비교라는점에서 t test나 ANOVA와 대응되지만 CFA의 장점은 측정 오차와 오차간 상관 등을 고려한 latent variable measurement model의 맥락에서 이루어진다는 점이다.
  • CFA에서 멀티플 그룹을 평가하는 두가지 방법 이 있음.
    1. multiple group CFA
    2. MIMIC modeling
  • multiple group CFA는 CFA를 둘 이상의 그룹에 동시에 적용하는 과정임.
    만약 남녀의 두그룹이면 두개의 별개의 입력 행렬을 가지고 분석을 실시하고 파라미터에 제약을 걸어서 measurement 와 structrual solution에서 equivalent한지 검증함.
    비록 실제 연구에서 덜활용되고 있지만, multiple groups CFA는 평균 구조에 대한 분석을 통해 indicator intercepts에 대한 동질성 평가를 수반할수 있다.
    multiple groups CFA의 중요한 장점은 measurement invariance와 population heterogeneity에서 모든 측면을 검증 할 수 있다는 점임.
  • 반면에, MIMIC modeling은 하나의 공분산 행렬 분석을 수반하는데 그룹에 속하는지는 더미 변수로 코딩함. MIMIC은 “multiple indicators, multiple causes”의 줄임말인데 또는 CFA with covariates로도 불림
  • dummy code 변수의 direct effect가 유의한 것은 population heterogeneity인것. 즉 그룹이 다른 것.
    그리고 indicator의 더미 변수의 직접 효과가 유의한 것은 measurement noninvariance(측정 변화)를 의미함. 즉 그룹마다 indicator가 다르게 기능함.
    MIMIC 모델은 하나의 공분산행렬만 활용하기에 multiple group CFA 보다 더 간명함. 그룹여 여러개일때 적용하기 더 쉬움 (Multiple group CFA는 집단이 두개 이상되면 다루기 힘들어짐). 그리고 MIMIC은 샘플 사이즈상 상대적으더 ㄷ작아되 ㄷ고 multiple group은 각 그룹에 대해서 충분히 큰 샘플을 필요로 함. multiplegruop CFA와 비교해서 MIMIC의 큰 한계점은 단지 두개의 invariance의 잠재적 원인에 대해서만 검증가능하다는 것(indicator intercepts, factor means)

- Multiple Groups CFA

  • multiple-groups CFA 하기 전에 연구에 활용하는 용어와 절차에 관해서 잘아는 것이 중요함.
  • factor structure가 동일한지(equal form: 요인의 수, 지표의 패턴, 요인 부하량) 탐지하는 것은 configural invariance라고 함.
    factor loading이 같은 것은 metric invarinace(weak factorial invariance)
    indicator intercept의 동질성은 scaler invariance(strong factorial invariance)
    indicator residual의 동질성 검정은 strict factorial invariance라고 부름.
    복잡하니까 이교재에서 추천하는 표현을 쓰는게 젤 좋을 듯 equal form, equal factor loadings, equal intercepts
  • multiple group CFA를 추정할 때 model restriction을 평가하는 순서가 사람마다다름.
    가장 흔하게는, longidutinal invariance 평가하는 것 처럼 가장 제한이 적은(equal form)부터 단계적으로 추정하는 경우가 젤 많음.
    그리고 이어지는 검증은 eqaul factor loading > equal intercepts > equal residual variance 이런 식으로 \(nested \ \chi^2\)를 통해서 순서대로 검증.
    그런데, 일부 방법론자들은 step-down을 권함 (가장 제약이 큰 모형부터 제약을 풀면서 검증)
  • 그런데 CFA 솔루션이 복잡한 경우에는 restriction을 추가해나가는 것이 더 권고도미. full invariance 모형의 fitting이 좋지 않을 때 어떤 것이 noninvariance의 source인지 탐지하는 것이 쉽지 않을 수 있다.
    ill fit의 특성을 탐지하는 것은 새로운 제한을 추가하는 형태로 접근 하는 것이 더 편하다.
  • 게다가, invariance의 어떤 측면들은 invariance의 다른 측면들의 가정에 기초한다.
    잠재 평균의 그룹 비교는 요인 부하량과 인디케이터 인터셉트가 invariance 할 때에만 의미를 가진다.
    요인 분산과 공분산의 그룹 간 비교는 요인 부하량이 invariant 할 때에만 의미를 가질 수 있다.
  • fully constrained model의 적용가능성(viability)는 less constrained model의 결과에 달려 있다. 때문에 제약이 가장 작은 모델부터 위쪽을 향하며 measurement invariance와 poppulation heherogeneity 보증되는지 확인하는 과정이 필요함.
    여기서 중요한 이슈는 partial invariance임. noninvariance parameter가 존재하는 상황에서도 group equivalence 평가를 해야하는 순간이 온다.
  • multiple groups CFA invariance 추정을 위한 추천 순서.
    1~5단계: measurement invariance 검정, 6~8단계: population heterogeneity 검정
    1. test the CFA model separately in each groups
    2. Conduct the simultaneous test of equal form(identical factor structure)
    3. Test the equality of factor loadings
    4. test the equality of indicator intercepts
    5. test the equaliy of indicator residual variances(optional)
      Then, if substantively meaningful
    6. test the equality of factor variances
    7. test the equality of factor covariances
      (if applicable, i.e., >1 factor)
    8. test the equality of latent means
  • 그룹에 따라 공분산 행렬에대한 overall test를 해야하는지에 관해서 약간 논쟁이있는데
    omnibus test가 \(\Sigma_1 = \Sigma_2\)로 결과가 도출된다 할지라도 measruement나 structural parameter는 다르게 도출될 수도 있고 반대의 경우도 가능함.
    overall test가 주는 정보는 별로 크지않은 것 같다. 약간의 가이드만 줄 뿐

  • 실제 데이터 예시 Figure 7.3

  • 남녀 각 375명, 성별에 따른 DMS-5에서 MDD 일반화 확인 위함. 데이터는 ML에 적합한 것으로 나타남(정규성, 다변량 이상치 등)
  • 각그룹에 대해서 추정에 필요한 자유 모수는 19개, 정보는 45개로 자유도는 26, overidentified
  1. multiple-group CFA 하기 전에 각 그룹에 대해서 on-factor 모델이 수용가능한지 확인하는 것이 필요함.
Table 7.11
Table 7.11
  • 결과를 확인해보니 single-gorup solution이 각 성별에 대해서 적합한 것으로 나타남.
  • $Men   ^2 + Women  ^2= Equal  form =  45.96  + 52.95 = 98.91 $ Table 7.12
  • 그룹 변수 지정
    전체 모형 설정 및 남성의 경우에도 모형설정해주는데 남성의 경우에 M1 with M2는 기본모형에 투입되어있으니 안넣어도됨
  • 이 결과가 table 7.1에 있고 이 결과가 baseline model로 차후에 measurement invariance와 poppulation heterogeneity 추정에 활용할 것.
  • 그룹에 따라 샘플사이즈가 달라도 multiple-group CFA 할 수는 있는데 왠만하면 balanced가 좋음.
    n수 많이 다르면 결과 해석에 유의할 것.
  1. 다음 단계로는 factor loadings(unstandardized) of the MDD indicators가 남녀 간에 동일한지(equivalent) 검증하는 과정이 필요.
    • equl factor loading 검증은 multiple-groups CFA에서 중요한 과정임.
      이 과정은 다른 측정 불변성 평가와 더불어 측정이 그룹에 따라서 같은 의미와 구조를 갖고 있는지 확인하는 절차.
    • \(\chi^2_{diff}(8)=3.93\), ns. 즉 equal factor loading 적절.
      M2~M9가 하나의 파라미터로 줄었으니까 자유도 8인 것. M1은 fixed to 1.0 as the marker
      그런데 간명성 지수인 RMSEA에서 적합도 상승이 발생.
    • 이 결과를 통해 loading이 같다고 결론내릴 수 있으니 이는 아래의 a와 b 그림 중 하나임. 고로 이제 intercept 검증을하겠지.
      지금의 결과는 mean structure 없이 한 것이고 intercept 검증을 위해서는 평균값의 추가가 필요함.
Figure 7.4
Figure 7.4
  • 그런데 두 그룹의 intercept equality 검증을 위해서는 평균을 분석에 입력해야함.
  • 평균구조 분석을 하기위해서는 또다른 식별의 문제가 발생함. 남 녀 각 9개씩의 indicator means총 18개가 있는데, 필요한 freed parameters는 (18개의 intercept, 2 latent means) 총 20개임.
    때문에 이 모형을 추정하기 위해서는 추가적인 제약이 필요함.
  • indicator intercept를 그룹 간에 동일하게 고정하고평균 구조를 식별하는 방법은 세 가지 방법 중 아무거나 쓰면 됨.
    1. 한 그룹의 잠재 평균을 0으로 고정
      어떤 그룹을 0으로 고정하는지는 자의적인데. 실증적 또는 해석적 고려에에 따라 달라질 수 있음.
      나머지 그룹의 잠재 평균은 자유 모수로 추정되는데 이는 reference group과의 차이로 도출됨.
      즉, 잠재 평균은 절대 값이 아닌 상대적인 차이를 반영함!
    2. 각 잠재 변수의 마커 지표의 intercept를 0으로 고정하고 잠재 평균을 자유모수로 추정
    3. effect coding approach 활용.
  • indicator intercept를 고정한 결과 \(\chi^2_{diff}(8)=12.47, ns\). 이를 통해 intercept도 동일하니 7.4A라고 말할 수 있음.
    이는, 각 그룹(남녀)는 잠재 변수(\(\xi\))가 0일 경우 indicator X2는 동일한 값을 기대값으로 가짐.
    하지만 이렇게 해석하는 것 보다는, factor value의 특정한 수준이 주어질 때 indicator의 observed value는 그룹 간에 통계적으로 동일하다고 해석하는 것을 추천함.
  • 7.4의 다른 그림을 봐봐, loading과 intercept 중 하나라도 다르다면, 그룹 간에 값은 특정 잠재 변수의 수준에 따라서 관찰 값이 다름을 나타냄.
    indicator가 biased된 것.
    differential item functioning: describe situations where an item yields a different mean response for the members of different groups with the same value of the underlying attribute.
  1. measurement invariance에서 검정할수있는 마지막 단계는 equality of the indicatior error variances 임.
    • 결과를 보면 역시나 유의미 하지않음.
  • 사실 현실에서 오차 분산의 동질성 검정이 성립되는 경우는 드물다. 방법론 연구자들도 오차 분산과 공분산의 동질성 검정은 너무 제약이 크고 측정 불변성 평가에 있어서 별로 중요한 요소가 아니라고 간주함.
  • 여기서는 보여주려고 하긴 했는데 현실에서 eqaul error variance 검정은 대부분 필요하지 않다.
    그리고 7.4A에 나타난것처럼 equivalent observed score를 그룹간에 예측하는 것도 오차 분산은 별로 의미 없음.
    오히려 오차 분산 동질성 검정을 강요하는게 더 문제일 수도 있음.
  • 여기까지왔으면 measurement 부분은 끝났고 남은 그룹간 비교는 structural parameter에 대한 부분임.
    structural parameter의 비교 적용가능성(viability)는 measruement invariance에 달려 있음.
    즉, 달리말하면, 그룹에 따라서 각 그룹이 같은 construct를 측정한다는 가정이 없으면 group의 비교는 쓸모 없음
  • factor variance의 그룹 비교는 factor loading이 invariant 할 때에만 의미있고,
    factor covariance의 그룹 비교는 factor loading과 factor variance가 invariant할 때에만 의미 있음.
    factor loading > factor variance > factor covariance
  • 마지막으로, 잠재 변수의 평균의 동질성 검정은 factor loading과 indicator intercept의 invariant에 달려 있다.
  • factor variance의 동질성을 검사하는 것은 within-group construct의 variability(dispersion, 퍼진정도)가 그룹에 따라 얼마나 다른지 평가하는 것.
  • 비록 모든 불변성 평가에서 중요하긴 하지만, 왜 equal factor variance를 통해 비표준화 솔루션의 활용이 왜 중요한지 예를 들 수 있다.
    factor variance(\(\phi\))는 marker indicator를 활용할 경우 이 분산의 크기에 크게 영향을 받기 때문에, evaluation of whether the groups draw from similar ranges of the underlying construct to respond to the indicators of that construct.
Table 7.15
Table 7.15
  • factor mean의 동질성 제약은 근원적인 construct의 수준이 그룹 간에 동일한지 평가.
  • omnibus test에서 차이가 도출되었다면 ( 그룹 이상일 때) 이어서 나타나는 것은
    그렇다면 어떤 그룹에서 차이가 나타나는지 post hoc 테스트 실시
    아노바랑 비슷하긴 하지만 CFA 기반 방법이 몇 가지 장점을 가지는데.
    중요한 것은 CFA 접근은 그룹간 비교가 적합한지 수립한다는 점이다.
    MODEL = CONFIGURAL METRIC SCALAR
Data <- read.table("http://people.bu.edu/tabrown/Ch7/MDDALL.dat")
names(Data) <- c("sex", paste("mdd", 1:9, sep = ""))
Data$sex <- factor(Data$sex, levels = c(0, 1), labels = c("female", "male"))

model.mdd <- '
  MDD =~ mdd1 + mdd2 + mdd3 + mdd4 + mdd5 + mdd6 + mdd7 + mdd8 + mdd9
  mdd1 ~~ mdd2
'
# Single group solution (men)
fit.men <- cfa(model.mdd, data = Data[Data$sex == "male",])
summary(fit.men, fit.measures = TRUE)
## lavaan (0.5-23.1097) converged normally after  36 iterations
## 
##   Number of observations                           375
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic               45.957
##   Degrees of freedom                                26
##   P-value (Chi-square)                           0.009
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic              643.402
##   Degrees of freedom                                36
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.967
##   Tucker-Lewis Index (TLI)                       0.955
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -6882.587
##   Loglikelihood unrestricted model (H1)      -6859.609
## 
##   Number of free parameters                         19
##   Akaike (AIC)                               13803.174
##   Bayesian (BIC)                             13877.786
##   Sample-size adjusted Bayesian (BIC)        13817.504
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.045
##   90 Percent Confidence Interval          0.022  0.066
##   P-value RMSEA <= 0.05                          0.617
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.041
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   MDD =~                                              
##     mdd1              1.000                           
##     mdd2              1.236    0.098   12.580    0.000
##     mdd3              0.786    0.133    5.912    0.000
##     mdd4              1.166    0.152    7.656    0.000
##     mdd5              0.959    0.139    6.916    0.000
##     mdd6              1.132    0.145    7.790    0.000
##     mdd7              0.766    0.143    5.360    0.000
##     mdd8              1.019    0.144    7.075    0.000
##     mdd9              0.632    0.113    5.616    0.000
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##  .mdd1 ~~                                             
##    .mdd2              0.920    0.160    5.743    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##    .mdd1              1.499    0.152    9.889    0.000
##    .mdd2              2.459    0.244   10.085    0.000
##    .mdd3              3.727    0.290   12.830    0.000
##    .mdd4              3.547    0.304   11.671    0.000
##    .mdd5              3.467    0.282   12.304    0.000
##    .mdd6              3.111    0.270   11.516    0.000
##    .mdd7              4.599    0.353   13.030    0.000
##    .mdd8              3.626    0.297   12.192    0.000
##    .mdd9              2.770    0.214   12.943    0.000
##     MDD               1.048    0.183    5.718    0.000
# Single group solution (women)
fit.women <- cfa(model.mdd, data = Data[Data$sex == "female",])
summary(fit.women, fit.measures = TRUE)
## lavaan (0.5-23.1097) converged normally after  34 iterations
## 
##   Number of observations                           375
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic               52.954
##   Degrees of freedom                                26
##   P-value (Chi-square)                           0.001
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic              700.173
##   Degrees of freedom                                36
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.959
##   Tucker-Lewis Index (TLI)                       0.944
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -6824.311
##   Loglikelihood unrestricted model (H1)      -6797.834
## 
##   Number of free parameters                         19
##   Akaike (AIC)                               13686.621
##   Bayesian (BIC)                             13761.233
##   Sample-size adjusted Bayesian (BIC)        13700.951
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.053
##   90 Percent Confidence Interval          0.032  0.073
##   P-value RMSEA <= 0.05                          0.390
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.044
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   MDD =~                                              
##     mdd1              1.000                           
##     mdd2              1.107    0.086   12.911    0.000
##     mdd3              0.729    0.101    7.221    0.000
##     mdd4              0.911    0.108    8.407    0.000
##     mdd5              0.812    0.103    7.845    0.000
##     mdd6              0.924    0.100    9.240    0.000
##     mdd7              0.611    0.098    6.222    0.000
##     mdd8              0.979    0.107    9.132    0.000
##     mdd9              0.484    0.085    5.709    0.000
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##  .mdd1 ~~                                             
##    .mdd2              0.393    0.147    2.684    0.007
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##    .mdd1              1.375    0.155    8.853    0.000
##    .mdd2              2.132    0.223    9.576    0.000
##    .mdd3              3.551    0.277   12.837    0.000
##    .mdd4              3.583    0.290   12.351    0.000
##    .mdd5              3.501    0.278   12.610    0.000
##    .mdd6              2.677    0.226   11.823    0.000
##    .mdd7              3.658    0.279   13.113    0.000
##    .mdd8              3.137    0.264   11.905    0.000
##    .mdd9              2.831    0.214   13.223    0.000
##     MDD               1.564    0.224    6.993    0.000
# Measurement Invariance using semTools
require(semTools)
## Loading required package: semTools
## 
## ###############################################################################
## This is semTools 0.4-14
## All users of R (or SEM) are invited to submit functions or ideas for functions.
## ###############################################################################
## 
## Attaching package: 'semTools'
## The following object is masked from 'package:psych':
## 
##     skew
measurementInvariance(model.mdd, data = Data, group = "sex", strict = TRUE)
## 
## Measurement invariance models:
## 
## Model 1 : fit.configural
## Model 2 : fit.loadings
## Model 3 : fit.intercepts
## Model 4 : fit.residuals
## Model 5 : fit.means
## 
## Chi Square Difference Test
## 
##                Df   AIC   BIC   Chisq Chisq diff Df diff Pr(>Chisq)
## fit.configural 52 27526 27785  98.911                              
## fit.loadings   60 27514 27736 102.839     3.9286       8     0.8635
## fit.intercepts 68 27510 27695 115.309    12.4699       8     0.1314
## fit.residuals  77 27502 27645 125.021     9.7115       9     0.3743
## fit.means      78 27502 27640 126.935     1.9144       1     0.1665
## 
## 
## Fit measures:
## 
##                  cfi rmsea cfi.delta rmsea.delta
## fit.configural 0.963 0.049        NA          NA
## fit.loadings   0.966 0.044     0.003       0.005
## fit.intercepts 0.963 0.043     0.004       0.001
## fit.residuals  0.962 0.041     0.001       0.002
## fit.means      0.962 0.041     0.001       0.000
# using lavaan
# measurementInvariance doesn't do equal factor variance. But, this can be accomplished as follows
fit.ef <- cfa(model.mdd, data = Data, group = "sex", meanstructure = TRUE) # equal form
fit.efl <- update(fit.ef, group.equal = c("loadings")) # equal factor laodings
fit.eii <- update(fit.efl, group.equal = c("loadings", "intercepts")) # equal indicator intercepts
fit.eir <- update(fit.eii, group.equal = c("loadings", "intercepts", "residuals")) # equal indicator error variances
fit.fv <- update(fit.eir, group.equal = c("loadings", "intercepts", "residuals", "lv.variances")) # equal factor variances
fit.fm <- update(fit.fv, group.equal = c("loadings", "intercepts", "residuals", "lv.variances", "means")) # equal latent means

# chi-squared diff tests
anova(fit.ef, fit.efl, fit.eii, fit.eir, fit.fv, fit.fm, test = "chisq")
## Chi Square Difference Test
## 
##         Df   AIC   BIC   Chisq Chisq diff Df diff Pr(>Chisq)
## fit.ef  52 27526 27785  98.911                              
## fit.efl 60 27514 27736 102.839     3.9286       8     0.8635
## fit.eii 68 27510 27695 115.309    12.4699       8     0.1314
## fit.eir 77 27502 27645 125.021     9.7115       9     0.3743
## fit.fv  78 27501 27639 125.814     0.7931       1     0.3732
## fit.fm  79 27501 27635 127.734     1.9201       1     0.1659

- Selected Issures in Single- and Multiple-Groups CFA Invariance Evaluation

  • CFA invariance 평가에 있어서 4가지 잡다한 이슈들을 다룰 것임.

Partial measurement Invariance

  • noninvariant measurement parameter를 만나게 되면 이후에 행하는 measruemtemnt invariance와 population heterogeneity의 검사가 불가능하다고 했었으나. 그게아님. omnibus \(\chi^2\) test의 유의한 결과를 통해서 모든 파라미터가 noninvariant 하다고 여겨선 안돼.
  • invariance 평가는 partial measurement invariance의 단계로 넘어갈 수 있음.
    즉, CFA에서 모든 measruemetn parameter가 동질하지는 않은 것.
  • X1 - X5 문항에 대해서 그룹비교를 했는데 카이검정 결과 차이가 유의했을때, X5만 MI가 크고 나머지가 크지 않는다면 X5를 제외한 나머지는 동질 제약을 걸고 분석을 수행하면 유의하지 않은 카이 검정 결과를 가져올 것임.
  • factor loading 일부가 invariant할 때 indicator intercept의 일부에 대한 동질성 검정도 할 수 있음.
  • 이렇게 하는 것의 장점은 향후 structrual parameter에 대한 검증이 실질적으로 주요 관심사일 때.
    부분 불변성 상황에서도 분석을 이어나갈 수 있다는 것.
    측정 파라미터에서 불변성의 우세함이 가정이 된다면 보다 중요한 분석인 cross-lagged effect 같은 것들을 partial measurement invariance 의 맥락에서 분석 가능하다.
  • partial invariance의 주요한 단점은, its exploratory nature and its risk of capitalization on chance.
    adfasdfdfasdfaf

Selection of Marker Indicators

  • 만약 선택한 마커가그룹에 따라 noninvariant한 경우에 문제가 생긴다.
    1. 전부 1로 고정했기에 이런 noninvariance를 탐지 못할 수 있다.
    2. 마커에 영향을 받기 때문에 나머지 지표들에 대한 불변성 검증 결과는 fitting이 나쁠 것.
      결과에서 나타나는 이런 poor-fitting은 true differnece를 나타내는 것이 아닐 수 있다.
      이를 해결하는 방법으론 다른 지표를쓰거나 요인분산을 1로 고정하거나 이펙트 코딩을 쓰거나~

Reliance on \(\chi^2\)

  • 카이스퀘어만 가지고 검증을하는데 자유도에 영향을 많이 받는 문제.
  • 또한 통계적으로 유의하게 나타날지라도 실제로 봐보면 요인들의 차이가 별로 없는 경우.
    즉, 카이스퀘어가 샘플사이즈때문에 차이에 민감하게 반응해서 발생하는 결과일 수 있음.
    ㅁㅇㄴㄹㄴㅇㄹ

Nonlinear Factor-Indiccator Relationsihps

  • 이럴 땐 넌리니어에 맞는 방법을 쓰세용

MIMIC Modeling (CFA with Covariates)

  • regressing the latent varaibles and indicators onto covariates that represent group membership.
  • multiple-group CFA와 다르게 MIMIC은 하나의 input matrix를 활용.
  • basic step
    1. full sample을 통해 적용가능한 measurement model 도출.
    2. 1개 이상의 covariate을 추가하여 요인에 대한 직접효과 검사.
      직접효과가 유의한 것은 population heterogenity가 존재 하는 것임.
      that is, the factor means are different at different levels of the covariates.
      significant direct effect는 measurement noninvariance를 나타냄.
    • 그룹 평 균차이는 direct effect 파라미터로 표현됨.
  • multiple group CFA와 비교해 MIMIC은 indicator intercept와 factor means의 invariance만 추정가능.
    (고로, measurement와 structural parameter의 다른 측면들은 같다고 고정됨. (factor loadings, error variances-covariances, factor variances-covariances))
  • 장점
    • 상대적으로 작은 샘플 사이즈를 필요로함
    • 많은 그룹을 동시에 비교할 때, 너무 복잡해 multiple-gorups CFA는.
    • 연속형 predictor 활용가능, multiple-group CFA는 연속형을 cutoff 줘서 카테고리컬로 바꿔야한다.
  • 일반적으로 covariate는 measurement error에서 자유롭다라고 가정된다(error variance가 0으로 고정됨) 챕터4에서 다룬 것 처럼.
Figure 7.5
Figure 7.5
sds <- '2.26 2.73 2.11 2.32 2.61 2.44 0.50'

cors <- '
  1.000
  0.705   1.000
  0.724   0.646   1.000
  0.213   0.195   0.190   1.000
  0.149   0.142   0.128   0.521   1.000
  0.155   0.162   0.135   0.557   0.479   1.000
  -0.019  -0.024  -0.029  -0.110  -0.074  -0.291   1.000'

covs <- getCov(cors, sds = sds, names = c("S1", "S2", "S3", "A1", "A2", "A3", "sex"))