• 검색 결과가 없습니다.

(1)인자분석 2 다음의 [예제 1]은 R 패키지 {psych}를 이용하여 FA를 수행한다

N/A
N/A
Protected

Academic year: 2022

Share "(1)인자분석 2 다음의 [예제 1]은 R 패키지 {psych}를 이용하여 FA를 수행한다"

Copied!
9
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

인자분석 2

다음의 [예제 1]은 R 패키지 {psych}를 이용하여 FA를 수행한다.

[예제 1] 분석에 사용될 자료는 300명의 대학생에 대해 6개 항목(과목에 대해 좋아하는 정 도)에 대한 설문을 실시한 결과(가상의 자료)이다. 각 항목은 1(아주 싫어함)부터 5(아주 좋 아함)의 값을 가진다. 6개의 항목은 서로 다른 영역의 과목에 대한 선호도를 학생들에게 묻 는 것으로 구성되었다. 6개 과목은 biology(BIO), geology(GEO), chemistry(CHEM), algebra(ALG), calculus(CALC), statistics(STAT)이다. 이 자료는 아래의 싸이트로부터 .csv 파일로 다운로드 받을 수 있다(c:/subjects.csv로 저장).

> setwd("c:/")

> subjects <- read.csv("subjects.csv", head=T)

> head(subjects, 3)

BIO GEO CHEM ALG CALC STAT 1 1 1 1 1 1 1 2 4 4 3 4 4 4 3 2 1 3 4 1 1

> tail(subjects, 3)

BIO GEO CHEM ALG CALC STAT 298 3 4 4 2 4 5 299 2 2 2 5 4 4 300 3 3 3 5 5 5

> library(psych)

> options(digits=3)

> (corMat <- cor(subjects))

BIO GEO CHEM ALG CALC STAT BIO 1.000 0.682 0.7470 0.1153 0.213 0.203 GEO 0.682 1.000 0.6815 0.1354 0.205 0.232 CHEM 0.747 0.681 1.0000 0.0838 0.136 0.166 ALG 0.115 0.135 0.0838 1.0000 0.771 0.409 CALC 0.213 0.205 0.1364 0.7709 1.000 0.507 STAT 0.203 0.232 0.1660 0.4094 0.507 1.000

fa() 함수를 이용하여 FA를 수행한다. fa() 함수의 주요 옵션은 다음과 같다.

• r: 상관행렬

• nfactors: 요인의 수(디폴트는 1)

• rotate: 회전의 방법으로, 직교회전에는 “none", "varimax", “quartimax"등이 있 고, 사교회전에는 "promax", "oblimin"등이 있다.

(2)

• fm: 요인화 방법(factoring method)

(예: "pa"(principal axis), "ml"(maximum likelihood), “minres"(minimum residual, OLS), "wls"(weighted least square, WLS), "gls"(generalized least square, GLS),...)

fa() 함수는 여러 가지 회전과 요인화 방법을 제공한다. 회전은 직교(orthogonal)과 사교 (oblique) 회전으로 구분되며, 두 방법의 차이는 요인들 간의 상관을 허용하느냐의 차이를 가진다. 요인화(factoring)의 방법은 common과 component로 구분되는데, common은 데이터를 잘 묘사하는 것이 주목적이며, component는 데이터의 양을 줄이는데 그 목적이 있다. fa() 함수는 common 요인화에 사용된다.

이 예제에서는 학생들의 잠재 과목(요인)간에 다소의 상관이 있을 것으로 생각하여 사교 회전(rotation="oblimin")을 사용한다. 또한, 데이터의 잠재된 요인(구인)을 식별하는데 가 장 관심이 있으므로 주축요인화 방법(fm="pa")을 사용하였다(factor.pa{pcych}를 이용할 수 도 있음).

R 패키지 {GPArotation}은 "varimax", "promax" 이외의 다양한 회전("oblimin" 옵션 등) 을 수행하게 해 준다.

> library("GPArotation") # 사교회전(“oblimin”옵션)의 수행에 필요함

> EFA <- fa(r = corMat, nfactors = 2, rotate="oblimin", fm = "pa")

> EFA

Factor Analysis using method = pa

Call: fa(r = corMat, nfactors = 2, rotate = "oblimin", fm = "pa") Standardized loadings (pattern matrix) based upon correlation matrix PA1 PA2 h2 u2 com

BIO 0.86 0.02 0.75 0.255 1.0 GEO 0.78 0.05 0.63 0.369 1.0 CHEM 0.87 -0.05 0.75 0.253 1.0 ALG -0.04 0.81 0.65 0.354 1.0 CALC 0.01 0.96 0.92 0.081 1.0 STAT 0.13 0.50 0.29 0.709 1.1 ---

(해석) 요인부하(factor loadings)를 살펴보면, BIO, GEO, CHEM은 모두 제1요인(PA1)에 0.8 근방의 매우 높은 요인부하를 가진다. 따라서 이 요인을 과학(Science)으로 명명하고, 학생 들의 과학에 대한 관심도를 나타내는 것으로 해석할 수 있다. 유사한 방법으로, ALG, CALC, STAT은 제2요인(PA2)에 높은 부하를 가지므로 제2요인을 수학(Math)으로 명명한다. 한가지 주목할 점은 STAT의 경우 ALG나 CALC에 비해 제2요인에 상대적으로 낮은 부하를 가지면서 PA1에도 약간의 부하를 가진다. 이것은 통계학(statistics)이 대수(algebra)와 미적분 (caculus) 보다는 수학(MATH)의 개념과 덜 연관되어있음을 의미한다.

---

(3)

PA1 PA2 SS loadings 2.14 1.84 Proportion Var 0.36 0.31 Cumulative Var 0.36 0.66 Proportion Explained 0.54 0.46 Cumulative Proportion 0.54 1.00

With factor correlations of PA1 PA2

PA1 1.00 0.21 PA2 0.21 1.00

---

(해석) 각 요인은 분산의 약 30% 정도를 설명하고 있으며, 두 개의 요인은 전체 분산의 66%

를 설명한다. 두 요인은 어느 정도 상관되어 있으며(상관계수: 0.21), 이는 우리가 사교회 전을 선택한 것과 맥락이 같다.

--- Mean item complexity = 1

Test of the hypothesis that 2 factors are sufficient.

The degrees of freedom for the null model are 15 and the objective function was 2.87

The degrees of freedom for the model are 4 and the objective function was 0.01

The root mean square of the residuals (RMSR) is 0.01 The df corrected root mean square of the residuals is 0.02

Fit based upon off diagonal values = 1

Measures of factor score adequacy

PA1 PA2 Correlation of scores with factors 0.94 0.96 Multiple R square of scores with factors 0.88 0.93 Minimum correlation of possible factor scores 0.77 0.86

fa() 함수는 아래와 같이 다양한 결과를 제공한다. 이 가운데 부하(loadings)을 시각화 하면 다음과 같다.

> ls(EFA)

[1] "Call" "chi" "communality"

[4] "communality.iterations" "complexity" "criteria"

[7] "crms" "dof" "e.values"

[10] "EBIC" "ENull" "EPVAL"

(4)

[13] "ESABIC" "factors" "fit"

[16] "fit.off" "fm" "fn"

[19] "loadings" "n.obs" "nh"

[22] "null.dof" "null.model" "objective"

[25] "Phi" "PVAL" "r"

[28] "r.scores" "R2" "residual"

[31] "rms" "rotation" "score.cor"

[34] "sd" "Structure" "uniquenesses"

[37] "valid" "values" "weights"

> EFA$loadings

> load<-EFA$loadings[,1:2]

> plot(load, type="n")

> text(load, labels=names(subjects), cex=.7)

이제 요인의 수를 정하는 문제를 생각해보자. 이 예제에서는 요인의 수를 미리 2로 정하 여 FA를 수행하였으나, 이 값의 결정을 위해서는 R 패키지 {nFactors}를 이용한다.

> library(nFactors)

> ev <- eigen(cor(subjects)) # get eigenvalues

> ap <- parallel(subject=nrow(subjects),var=ncol(subjects), rep=100,cent=.05)

> nS <- nScree(x=ev$values, aparallel=ap$eigen$qevpea)

> plotnScree(nS)

(5)

R 패키지 {FacoMineR}는 탐색적요인분석(EFA)에 대한 많은 추가적인 함수를 제공한 다.

> library(FactoMineR)

> result <- PCA(subjects)

(6)

참고로, 위 자료에 대해 아래의 SEM 모형의 적합 결과를 소개하면 다음과 같다. R 패키 지 {sem}을 이용하여 다음 모형을 적합한다. 아래의 SEM 모형은 두 개의 미 관측 잠재변 수(F1, F2)가 있어, 6개의 변수에 영향을 미치는 구조이다. X1, X2, X3에 미치는 F1의 부 하는 lam1, lam2, lam3 이고, x4, X5, X6에 미치는 F2의 부하는 lam4, lam5, lam6 이다.

양방향 화살표는 두 잠재변수간의 공분산을 나타난다(F1F2). e1~e6는 잔차분산(두 잠재변 수에 의해 설명되지 않는 관측변수의 분산)을 나타낸다. F1과 F2의 분산을 1로 고정하여, 모수들의 크기가 의미를 가지도록 한다(이로써 F1F2가 두 잠재변수간의 상관계수가 된다).

R 패키지 {sem}은 관측변수의 공분산을 요구한다(아래에서 cov() 함수). specifyModel() 함수를 이용하여 CFA 모형을 구체적으로 지정한다. 형식은 화살표 지정, 모수명, 초기값 으 로 구성된다. 초기값에서 NA는 분석자가 특별히 지정하지 않음을 나타낸다. F1과 F2의 분 산은 1로 고정한다(두번째 열은 NA임).

(7)

> names(subjects) <-c("X1", "X2", "X3", "X4", "X5", "X6")

> names(subjects)

[1] "X1" "X2" "X3" "X4" "X5" "X6"

> mydata.cov <- cov(subjects)

> model.mydata <- specifyModel() 1: F1 -> X1, lam1, NA

2: F1 -> X2, lam2, NA 3: F1 -> X3, lam3, NA 4: F2 -> X4, lam4, NA 5: F2 -> X5, lam5, NA 6: F2 -> X6, lam6, NA 7: X1 <-> X1, e1, NA 8: X2 <-> X2, e2, NA 9: X3 <-> X3, e3, NA 10: X4 <-> X4, e4, NA 11: X5 <-> X5, e5, NA 12: X6 <-> X6, e6, NA 13: F1 <-> F1, NA, 1 14: F2 <-> F2, NA, 1 15: F1 <-> F2, F1F2, NA

16: # 주의: 마지막에 빈줄(blank line)이 필요함 Read 15 records

NOTE: it is generally simpler to use specifyEquations() or cfa() see ?specifyEquations

> mydata.sem <- sem(model.mydata, mydata.cov, nrow(subjects))

> # print results (fit indices, paramters, hypothesis tests)

(8)

> summary(mydata.sem)

Model Chisquare = 14.4 Df = 8 Pr(>Chisq) = 0.0718 AIC = 40.4

BIC = -31.2

Normalized Residuals

Min. 1st Qu. Median Mean 3rd Qu. Max.

-1.110 -0.030 0.002 0.212 0.438 2.430

R-square for Endogenous Variables X1 X2 X3 X4 X5 X6 0.755 0.625 0.737 0.619 0.960 0.269

Parameter Estimates

Estimate Std Error z value Pr(>|z|) lam1 1.0664 0.0602 17.712 3.38e-70 X1 <--- F1 lam2 0.9727 0.0624 15.600 7.31e-55 X2 <--- F1 lam3 1.0921 0.0627 17.415 6.37e-68 X3 <--- F1 lam4 0.9235 0.0657 14.053 7.35e-45 X4 <--- F2 lam5 1.1043 0.0619 17.851 2.84e-71 X5 <--- F2 lam6 0.6532 0.0719 9.086 1.03e-19 X6 <--- F2 e1 0.3696 0.0559 6.606 3.94e-11 X1 <--> X1 e2 0.5667 0.0608 9.316 1.21e-20 X2 <--> X2 e3 0.4266 0.0605 7.054 1.74e-12 X3 <--> X3 e4 0.5259 0.0756 6.957 3.48e-12 X4 <--> X4 e5 0.0508 0.0889 0.571 5.68e-01 X5 <--> X5 e6 1.1580 0.0998 11.602 4.04e-31 X6 <--> X6 F1F2 0.2205 0.0603 3.655 2.57e-04 F2 <--> F1

Iterations = 21

> # print standardized coefficients (loadings)

> stdCoef(mydata.sem)

Std. Estimate 1 lam1 0.869 X1 <--- F1 2 lam2 0.791 X2 <--- F1 3 lam3 0.858 X3 <--- F1 4 lam4 0.786 X4 <--- F2 5 lam5 0.980 X5 <--- F2 6 lam6 0.519 X6 <--- F2 7 e1 0.245 X1 <--> X1

(9)

8 e2 0.375 X2 <--> X2 9 e3 0.263 X3 <--> X3 10 e4 0.381 X4 <--> X4 11 e5 0.040 X5 <--> X5 12 e6 0.731 X6 <--> X6 13 1.000 F1 <--> F1 14 1.000 F2 <--> F2 15 F1F2 0.220 F2 <--> F1

참조

관련 문서

[r]

(1) 1) 전자로 입자지만 빛의 성질도 가지고 있는 물질의 이중성의 원리로 설명될 수 있다. 따라서 광학적 성질을 띈다고 해서 입자임을 부정하는 것은 옳지 못하다... 2) 수소원자는

따라서

A반을 나타내는 그래프가 B반을 나타내는 그래프보 다 오른쪽으로 치우쳐 있으므로 A반 학생들이 B반 학생들보다 도서관 이용

미지수 x, y가 분모에 있으므로

 잔여접근법 (residual approach) 또는 차감법 : 거래가격에서 판매가격이 알 려진 이행의무의 판매가격을 차감한 나머지 금액을 판매가격이 알려지지 않 은

진행기준에 의한 수익인식은 다음과 같은 이유에서 특정 회계기간 의 의무이행활동과 성과의 정도에 대한 유용한 정보를 제공.. ① 거래가 발생하는 기간에 거래의 영향을 보고함으로써

개별판매가격 (stand-alone selling price): 해당 제품 또는 용역을 별도로 판매하였을 때 받게 될 금액.. 가장 쉽고 객관적인 방법.. 그러나 게임사용권은