Description for Path Analysis
질책
: 시험 점수가 낮을 때, 부모가 질책하는 정도를
점수화격려
: 시험 점수가 낮을 때, 부모가 격려하는 정도를
점수화실패불안
: 실패에 대한 자녀의 불안 정도를 점수화학습의욕
: 학습에 대한 자녀의 의욕 정도를 점수화학업성적
: 자녀의 국어 및 수학 시험 평균 점수경로도
이며, 아래의 그림과
같다. 질책 격려 실패불안 학습의욕 학업성적
1 9 12 16 17 66
2 6 6 30 16 68
3 7 9 22 19 44
4 4 12 23 16 56
5 3 3 17 18 83
6 4 11 22 19 61
# 데이터 구조
str(data)
'data.frame': 500 obs. of 5 variables:
$ 질책 : int 9 6 7 4 3 4 7 5 3 5 ...
$ 격려 : int 12 6 9 12 3 11 8 11 12 8 ...
$ 실패불안: int 16 30 22 23 17 22 15 55 37 29 ...
$ 학습의욕: int 17 16 19 16 18 19 20 9 14 17 ...
$ 학업성적: int 66 68 44 56 83 61 84 46 51 36 ...
경로분석은 Package
lavaan
을 통해 수행할 수 있다.
''
로 표시하며, 각
변수가 어떤 변수로부터 경로를 받을지는 ~
을 사용해서
표현한다.
~
의 왼쪽에는 경로를 받는 변수(결과변수, 종속변수),
오른쪽에는 경로를 보내는 변수(원인변수, 독립변수)를 명시한다.
실패불안 ~ 질책
은
질책 → 실패불안
이라는 경로를 표현한다.+
로 변수를 연결한다.lavaan
에서는 이것을 모형 기술 시에 명시하지
않아도 외생변수(화살표를 받지 않는 변수) 간에 상관이 있는 것을 자동으로
지정해준다.
# 모형 기술model <- '
실패불안 ~ 질책
학습의욕 ~ 격려
학업성적 ~ 실패불안 + 학습의욕
'
lavaan
에서 제공하는 함수
sem()
을 이용해 모수를 추정한다.
sem()
의 자세한 옵션은 여기를
참고한다.# 모수 추정pacman::p_load("lavaan")
fit <- sem(model, # 기술한 모형을 대입한 객체NA= data) # 데이터
# 분석 결과 출력
summary(fit, # 분석 결과를 저장하고 있는 객체 standardized = TRUE, # 표준화 추정값의 출력 여부NA= TRUE) # 결정계수의 출력 여부
lavaan 0.6-12 ended normally after 1 iterations
Estimator ML
Optimization method NLMINB
Number of model parameters 7
Number of observations 500
Model Test User Model:
Test statistic 117.641
Degrees of freedom 5
P-value (Chi-square) 0.000
Parameter Estimates:
Standard errors Standard
Information Expected
Information saturated (h1) model Structured
Regressions:
Estimate Std.Err z-value P(>|z|) Std.lv
실패불안 ~
질책 1.628 0.234 6.948 0.000 1.628
학습의욕 ~
격려 0.224 0.064 3.519 0.000 0.224
학업성적 ~
실패불안 -0.138 0.046 -2.964 0.003 -0.138
학습의욕 0.904 0.162 5.572 0.000 0.904
Std.all
0.297
0.155
-0.128
0.240
Variances:
Estimate Std.Err z-value P(>|z|) Std.lv
.실패불안 146.580 9.271 15.811 0.000 146.580
.학습의욕 12.865 0.814 15.811 0.000 12.865
.학업성적 173.522 10.974 15.811 0.000 173.522
Std.all
0.912
0.976
0.925
R-Square:
Estimate
실패불안 0.088
학습의욕 0.024
학업성적 0.075
Caution!
결과 출력은 함수 summary()
를
이용하여 수행하며, 그 결과는 다음과 같다.
1. “Estimator”는 모수의 추정방법으로서 “ML”은 최대우도추정법을
의미한다.
2. “Model Test User Model”은 기술한 모형에 대한 모형 적합도로서 귀무가설
\(H_0\)은 “설정한 모형에 대한
공분산행렬과 표본에 의해 계산된 표본공분산행렬이 동일하다.”이며,
대립가설 \(H_1\)은 “설정한 모형에 대한
공분산행렬과 표본에 의해 계산된 표본공분산행렬이 동일하지 않다.”이다.
다시 말해, 귀무가설 \(H_0\)은 “설정한
모형은 데이터에 적합하다.”이며, 대립가설 \(H_1\)은 “설정한 모형은 데이터에 적합하지
않다.”이다.
3. “Regression”과 “Variance”는 모수 추정에 대한 결과이다. “Estimate”는
비표준화 추정값, “Std.Err”는 표준오차, “z-value”와 “P(>|z|)”는
귀무가설 \(H_0\) : “해당 경로계수는
0이다.”와 대립가설 \(H_1\) : “해당
경로계수는 0이 아니다.”에 대한 검정통계량의 \(z\) 값과 \(p\)-값이다. “Std.lv”는 잠재적인 구조변수의
분산만 1로 했을 때의 표준화 추정값을 나타내며, “Std.all”은 오차변수를
제외한 변수의 분산을 1로 했을 때의 표준화 추정값을 나타낸다. 이
모형에서는 잠재적인 구조가 없기 때문에 “Std.lv”값과 “Estimate”값이
동일하다.
4. “R-Square”은 결정계수 \(R^2\)을
의미한다. 결정계수는 0과 1사이의 값으로 1에 가까울수록 데이터의 변동을
적합된 모형이 잘 설명하고 있다고 할 수 있다.
Result!
“Regression” 부분에는 경로계수에 대한 추정 결과가
출력되어 있다. 예를 들어, 실패불안 ~ 질책
행을 보면,
질책 → 실패불안
경로계수 \(\beta_1\)의 비표준화 추정값은 1.628(표준화
추정값은 0.297)로, \(p\)-값이 0이므로
경로계수가 유의한 의미를 가지고 있다고 볼 수 있다. 따라서, 추정값이
양수이기 때문에 시험에서 실패했을 때 질책을 받는 경험이 많은 자녀일수록
실패불안이 높은 경향을 보인다고 할 수 있다. 추정된 비표준화 경로계수에
의한 경로도는 다음과 같다.
“Variance” 부분은 오차변수의 분산 추정값을 나타낸다. 예를 들어,
.실패불안
행은 실패불안
의 오차변수 \(e_1\)의 분산을 의미한다.
“R-Square”은 결정계수를 나타낸다. 예를 들어, 실패불안
은
질책
으로부터 경로를 받았기 때문에 실패불안
중에 질책
으로 설명할 수 있는 부분이 8.8%라고 해석할 수
있다. 이 점은 반대로 질책
으로 설명할 수 없는 부분이
91.2%만큼 있다는 것을 의미하며, 이러한 부분은 오차변수 \(e_1\)으로 표현되어 있다. 그래서, 실제로
91.2%는 실패불안
에서 오차 분산의 표준화 추정값(“Std.all”)과
동일하다.
summary(fit, # 분석 결과를 저장하고 있는 객체 standardized = TRUE, # 표준화 추정값의 출력 여부NA= TRUE, # 결정계수의 출력 여부 ci = TRUE) # 신뢰구간 출력 여부여부
lavaan 0.6-12 ended normally after 1 iterations
Estimator ML
Optimization method NLMINB
Number of model parameters 7
Number of observations 500
Model Test User Model:
Test statistic 117.641
Degrees of freedom 5
P-value (Chi-square) 0.000
Parameter Estimates:
Standard errors Standard
Information Expected
Information saturated (h1) model Structured
Regressions:
Estimate Std.Err z-value P(>|z|) ci.lower
실패불안 ~
질책 1.628 0.234 6.948 0.000 1.169
학습의욕 ~
격려 0.224 0.064 3.519 0.000 0.099
학업성적 ~
실패불안 -0.138 0.046 -2.964 0.003 -0.229
학습의욕 0.904 0.162 5.572 0.000 0.586
ci.upper Std.lv Std.all
2.088 1.628 0.297
0.348 0.224 0.155
-0.047 -0.138 -0.128
1.222 0.904 0.240
Variances:
Estimate Std.Err z-value P(>|z|) ci.lower
.실패불안 146.580 9.271 15.811 0.000 128.410
.학습의욕 12.865 0.814 15.811 0.000 11.270
.학업성적 173.522 10.974 15.811 0.000 152.012
ci.upper Std.lv Std.all
164.749 146.580 0.912
14.460 12.865 0.976
195.032 173.522 0.925
R-Square:
Estimate
실패불안 0.088
학습의욕 0.024
학업성적 0.075
Caution!
함수 summary()
에 옵션
ci = TRUE
를 지정함으로서 추정값의 신뢰구간을 출력할 수
있다.
summary()
로 결과를 출력할 때 옵션
fit.measures = TRUE
를 추가하면 출력할 수 있다.1에 가까울수록 모형 적합이 잘 수행
되었다는 것을
의미한다.값이 작을수록 모형 적합이 잘 수행
되었다는 것을
의미한다.0에 가까울수록 모형 적합이 잘 수행
되었다는 것을
의미한다.0에 가까울수록 모형 적합이 잘 수행
되었다는 것을 의미하며,
데이터와 모형이 완전히 일치하면 0이 된다. 다만, RMR은 단위의 영향을 받기
때문에 일반적인 단위로 표준화한 지표 SRMR이 이용된다.summary(fit, # 분석 결과를 저장하고 있는 객체 standardized = TRUE, # 표준화 추정값의 출력 여부NA= TRUE, # 결정계수의 출력 여부 ci = TRUE, # 신뢰구간 출력 여부여부
fit.measures = TRUE) # 적합도 평가 출력 여부
lavaan 0.6-12 ended normally after 1 iterations
Estimator ML
Optimization method NLMINB
Number of model parameters 7
Number of observations 500
Model Test User Model:
Test statistic 117.641
Degrees of freedom 5
P-value (Chi-square) 0.000
Model Test Baseline Model:
Test statistic 227.626
Degrees of freedom 9
P-value 0.000
User Model versus Baseline Model:
Comparative Fit Index (CFI) 0.485
Tucker-Lewis Index (TLI) 0.073
Loglikelihood and Information Criteria:
Loglikelihood user model (H0) -5303.001
Loglikelihood unrestricted model (H1) -5244.181
Akaike (AIC) 10620.003
Bayesian (BIC) 10649.505
Sample-size adjusted Bayesian (BIC) 10627.287
Root Mean Square Error of Approximation:
RMSEA 0.212
90 Percent confidence interval - lower 0.180
90 Percent confidence interval - upper 0.246
P-value RMSEA <= 0.05 0.000
Standardized Root Mean Square Residual:
SRMR 0.115
Parameter Estimates:
Standard errors Standard
Information Expected
Information saturated (h1) model Structured
Regressions:
Estimate Std.Err z-value P(>|z|) ci.lower
실패불안 ~
질책 1.628 0.234 6.948 0.000 1.169
학습의욕 ~
격려 0.224 0.064 3.519 0.000 0.099
학업성적 ~
실패불안 -0.138 0.046 -2.964 0.003 -0.229
학습의욕 0.904 0.162 5.572 0.000 0.586
ci.upper Std.lv Std.all
2.088 1.628 0.297
0.348 0.224 0.155
-0.047 -0.138 -0.128
1.222 0.904 0.240
Variances:
Estimate Std.Err z-value P(>|z|) ci.lower
.실패불안 146.580 9.271 15.811 0.000 128.410
.학습의욕 12.865 0.814 15.811 0.000 11.270
.학업성적 173.522 10.974 15.811 0.000 152.012
ci.upper Std.lv Std.all
164.749 146.580 0.912
14.460 12.865 0.976
195.032 173.522 0.925
R-Square:
Estimate
실패불안 0.088
학습의욕 0.024
학업성적 0.075
Caution!
“CFI”와 “TLI”은 0.95 이상, “RMSEA”는 0.06 이하,
“SRMR”은 0.08 이하면 모형 적합이 잘 이루어졌다고 판단할 수 있다. 하지만,
이러한 기준은 어디까지나 경험적인 것이기 때문에 기계적으로 판단할 수
없다는 점에 주의해야 한다.
# 모든 적합도 지표 출력NAfitmeasures(fit)
npar fmin chisq
7.000 0.118 117.641
df pvalue baseline.chisq
5.000 0.000 227.626
baseline.df baseline.pvalue cfi
9.000 0.000 0.485
tli nnfi rfi
0.073 0.073 0.070
nfi pnfi ifi
0.483 0.268 0.494
rni logl unrestricted.logl
0.485 -5303.001 -5244.181
aic bic ntotal
10620.003 10649.505 500.000
bic2 rmsea rmsea.ci.lower
10627.287 0.212 0.180
rmsea.ci.upper rmsea.pvalue rmr
0.246 0.000 6.951
rmr_nomean srmr srmr_bentler
6.951 0.115 0.115
srmr_bentler_nomean crmr crmr_nomean
0.115 0.141 0.141
srmr_mplus srmr_mplus_nomean cn_05
0.115 0.115 48.052
cn_01 gfi agfi
65.120 0.876 0.627
pgfi mfi ecvi
0.292 0.893 0.263
Caution!
함수 fitmeasures()
를 이용하면
Package lavaan
에서 계산된 모든 적합도 지표를 출력할 수
있다.
modindices()
를
통해 출력할 수 있다.# 수정 지표 출력NAmodindices(fit)
lhs op rhs mi epc sepc.lv sepc.all sepc.nox
8 질책 ~~ 질책 0.000 0.000 0.000 0.000 0.000
9 질책 ~~ 격려 0.000 0.000 0.000 NA 0.000
10 격려 ~~ 격려 0.000 0.000 0.000 0.000 0.000
11 실패불안 ~~ 학습의욕 101.086 -19.525 -19.525 -0.450 -0.450
12 실패불안 ~~ 학업성적 2.206 35.765 35.765 0.224 0.224
13 학습의욕 ~~ 학업성적 0.012 -1.524 -1.524 -0.032 -0.032
14 실패불안 ~ 학습의욕 95.372 -1.459 -1.459 -0.418 -0.418
15 실패불안 ~ 학업성적 26.448 -0.547 -0.547 -0.590 -0.590
16 실패불안 ~ 격려 1.718 0.308 0.308 0.061 0.024
17 학습의욕 ~ 실패불안 96.308 -0.125 -0.125 -0.437 -0.437
18 학습의욕 ~ 학업성적 39.464 0.377 0.377 1.423 1.423
19 학습의욕 ~ 질책 0.265 -0.039 -0.039 -0.025 -0.011
20 학업성적 ~ 질책 2.206 -0.397 -0.397 -0.067 -0.029
21 학업성적 ~ 격려 0.012 0.026 0.026 0.005 0.002
22 질책 ~ 실패불안 1.426 0.021 0.021 0.113 0.113
23 질책 ~ 학습의욕 0.252 -0.013 -0.013 -0.020 -0.020
24 질책 ~ 학업성적 2.901 -0.012 -0.012 -0.072 -0.072
25 질책 ~ 격려 0.000 0.000 0.000 0.000 0.000
26 격려 ~ 실패불안 1.427 0.009 0.009 0.047 0.047
27 격려 ~ 학습의욕 0.252 -0.034 -0.034 -0.049 -0.049
28 격려 ~ 학업성적 0.535 -0.006 -0.006 -0.031 -0.031
29 격려 ~ 질책 0.000 0.000 0.000 0.000 0.000
Caution!
출력 결과에서 “mi” 값은 수정 지표, “epc”는
추가된 경로계수 추정값의 변화 기댓값, “sepc.lv”는 잠재적인 구조변수의
분산만 1로 했을 때의 변화 기댓값, “sepc.all”은 오차변수를 제외한 변수의
분산을 1로 했을 때의 변화 기댓값, “sepc.nox”는 외생변수를 제외한 변수의
분산을 1로 했을 때의 변화 기댓값이다. ~~
는 변수 간의
공분산(상관, ↔︎)을 나타낸다.
Result!
예를 들어, 11 실패불안 ~~ 학습의욕
행은 실패불안
의 오차변수와 학습의욕
의 오차변수
사이에 상관관계(즉, \(e_1\) ↔︎ \(e_2\))를 두면, 모형의 \(\chi^2\) 값이 101.086 작아지는 것을
의미한다. 또한, 실패불안
과 학습의욕
사이의
공분산 기댓값은 -19.525, 상관계수의 기대값(“sepc.all”)은 -0.450로
나타났다. 그리고 14 실패불안 ~ 학습의욕
행은
학습의욕 → 실패불안
이라는 경로를 추가했을 때의 수정
지표(“mi”)와 학습의욕 → 실패불안
의 경로계수 추정값의 변화
기댓값에 관한 정보를 나타내고 있다.
수정 지표(“mi”)를 살펴보면, 11 실패불안 ~~ 학습의욕
행의
“mi” 값이 가장 높으며, 이는 실패불안
의 오차변수와
학습의욕
의 오차변수 사이에 공분산(상관)을 두는 것으로 모형
적합도가 개선되는 것을 알 수 있다. 오차변수 사이에 상관을 가정한다는
것은 “변수 질책
과 격려
외에
실패불안
과 학습의욕
에 공통되는 변수(즉, 두
변수와 각각 상관을 갖는 변수)가 있다는 것을 가정한다.”는 의미이다. 예를
들어, 학업에 자신 있는 학습자일수록 실패에 대한 불안감이 낮고 학습
의욕은 높다고 생각할 수 있다. 이와 같이 본인의 자신감이라는 요인이 오차
간 상관을 생성하고 있을 가능성이 있기 때문에 오차 간에 상관을 가정하는
것은 합리적이라고 할 수 있다. 따라서, 실패불안
의 오차변수와
학습의욕
의 오차변수 사이에 상관을 가정하는 것으로 수정한 후
다시 분석을 한다. 수정 후 모형은 다음과 같은 경로도로 나타낼 수
있다.
# 오차변수 사이에 상관을 가정한 모형 기술model2 <- '
실패불안 ~ 질책
학습의욕 ~ 격려
학업성적 ~ 실패불안 + 학습의욕
실패불안 ~~ 학습의욕
'
Caution!
~~
는 변수 간의 상관관계(↔︎)를
나타낸다. 실패불안 ~~ 학습의욕
에 있는 내생변수 “실패불안”과
“학습의욕”은 사실 해당 변수에 관한 오차를 의미한다. 즉,
실패불안 ~~ 학습의욕
는 실패불안
과
학습의욕
사이에 상관을 설정하는 것이 아니라,
실패불안
의 오차변수와 학습의욕
의 오차변수
사이에 상관을 설정하는 것이다.
# 모수 추정pacman::p_load("lavaan")
fit2 <- sem(model2, # 기술한 모형을 대입한 객체NA= data) # 데이터
# 분석 결과 출력
summary(fit2, # 분석 결과를 저장하고 있는 객체 standardized = TRUE, # 표준화 추정값의 출력 여부NA= TRUE, # 결정계수의 출력 여부 ci = TRUE, # 신뢰구간 출력 여부여부
fit.measures = TRUE) # 적합도 평가 출력 여부
lavaan 0.6-12 ended normally after 18 iterations
Estimator ML
Optimization method NLMINB
Number of model parameters 8
Number of observations 500
Model Test User Model:
Test statistic 4.330
Degrees of freedom 4
P-value (Chi-square) 0.363
Model Test Baseline Model:
Test statistic 227.626
Degrees of freedom 9
P-value 0.000
User Model versus Baseline Model:
Comparative Fit Index (CFI) 0.998
Tucker-Lewis Index (TLI) 0.997
Loglikelihood and Information Criteria:
Loglikelihood user model (H0) -5246.346
Loglikelihood unrestricted model (H1) -5244.181
Akaike (AIC) 10508.692
Bayesian (BIC) 10542.409
Sample-size adjusted Bayesian (BIC) 10517.017
Root Mean Square Error of Approximation:
RMSEA 0.013
90 Percent confidence interval - lower 0.000
90 Percent confidence interval - upper 0.070
P-value RMSEA <= 0.05 0.809
Standardized Root Mean Square Residual:
SRMR 0.022
Parameter Estimates:
Standard errors Standard
Information Expected
Information saturated (h1) model Structured
Regressions:
Estimate Std.Err z-value P(>|z|) ci.lower
실패불안 ~
질책 1.601 0.213 7.522 0.000 1.184
학습의욕 ~
격려 0.256 0.058 4.444 0.000 0.143
학업성적 ~
실패불안 -0.138 0.052 -2.650 0.008 -0.240
학습의욕 0.904 0.180 5.009 0.000 0.550
ci.upper Std.lv Std.all
2.018 1.601 0.292
0.370 0.256 0.178
-0.036 -0.138 -0.126
1.258 0.904 0.238
Covariances:
Estimate Std.Err z-value P(>|z|) ci.lower
.실패불안 ~~
.학습의욕 -19.582 2.131 -9.190 0.000 -23.758
ci.upper Std.lv Std.all
-15.405 -19.582 -0.451
Variances:
Estimate Std.Err z-value P(>|z|) ci.lower
.실패불안 146.583 9.271 15.811 0.000 128.413
.학습의욕 12.872 0.814 15.811 0.000 11.276
.학업성적 173.522 10.974 15.811 0.000 152.012
ci.upper Std.lv Std.all
164.754 146.583 0.915
14.467 12.872 0.968
195.032 173.522 0.901
R-Square:
Estimate
실패불안 0.085
학습의욕 0.032
학업성적 0.099
Result!
우선 모형 적합도(“Model Test User Model”)를
확인해보면, 가설 \(H_0\) : “설정한
모형은 데이터에 적합하다.” vs \(H_1\) :
“설정한 모형은 데이터에 적합하지 않다.”의 검정통계량 \(\chi^2\) 값은 4.330이고 \(p\)-값은 0.363이다. 이에 근거하여 유의수준
5%에서 \(p\)-값이 0.05보다 크기 때문에
귀무가설 \(H_0\)은 기각하지 않는다. 즉,
설정한 모형은 관측된 데이터에 적합하다.
적합도 지표 중 “CFI”, “TLI”, “RMSEA”, “SRMR”을 살펴봤을 때 데이터에 대한
모형 적합도는 양호하다고 할 수 있다. 게다가, “AIC”와 “BIC”의 관점에서 첫
번째 모형(“model”)은 각각 10620.003, 10649.505이었으나 현재
모형(“model2”)에서는 10508.692, 10542.409로 첫 번째 모형에 비해
줄어들었다. 이러한 결과를 볼 때, 오차변수 사이에 상관을 가정하지 않은
모형보다 상관을 가정한 모형이 더 적절하다는 것을 알 수 있다.
경로에 관한 추정값의 관점은 첫 번째 모형 때와 같지만 공분산(상관계수)에
관한 추정값이 “Covariances” 부분에 출력되었다. “Estimate”는 공분산,
“Std.all”은 상관계수 값을 나타낸다. 따라서, 실패불안
의
오차변수와 학습의욕
의 오차변수 사이의 공분산은 -19.582,
상관계수는 -0.451이 된다. 추정된 표준화 경로계수에 의한 경로도는 다음과
같다.
# 경로도도
pacman::p_load("semPlot")
# semPaths(fit2, 'std', layout = 'tree2')
semPlot::semPaths(fit2, # 분석 결과를 저장하고 있는 객체 whatLabels = "std", # 라벨로 나타낼 값 (est : 비표준화 추정값, std : 표준화 추정값)값)
intercepts = FALSE, # 절편 출력 여부NA= "lisrel", # 스타일
nCharNodes = 0, # 노드에 출력할 문자 개수, 0 : 모든 문자 출력 rotation = 2, # 외생변수 위치
edge.label.position = 0.5, # 화살표에서 경로계수의 위치치
edge.label.cex = 1, # 경로계수 크기
curveAdjacent = TRUE, # 화살표를 곡선으로 할 것인지 여부
title = TRUE,
layout = "tree2", # 경로도의 모양
curvePivot = TRUE, # 화살표의 가장자리를 곡선으로 할 것인지 여부 pastel = TRUE, # 파스텔 컬러로부터 색깔을 선택할 것인지 여부NA= "manlat") # 동일한 색깔을 부여할 그룹 노드
Caution!
Package semPlot
에서 제공하는 함수
semPaths()
를 이용하여 분석 결과에 대한 경로도를 작성할 수
있다. 함수 semPaths()
의 옵션은 여기를
참고한다.
Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".