설문 문항이 20개, 고객행동 변수가 40개, 센서 측정값이 100개라면 연구자는 자연스럽게 질문한다.
이 많은 변수를 더 적은 수의 축으로 정리할 수 없을까?
이때 자주 등장하는 방법이 요인분석과 주성분분석이다. 두 방법은 상관된 여러 변수를 소수의 차원으로 요약하고, 적재량이라는 유사한 형태의 결과를 제공한다. 통계 프로그램에서도 같은 메뉴 안에 배치되는 경우가 있어 동일한 분석처럼 보이기 쉽다.
그러나 핵심 목적은 다르다.
주성분분석은 관측변수의 전체 정보를 몇 개의 합성변수로 압축한다.
요인분석은 관측변수 사이의 공통된 관계를 잠재요인으로 설명한다.
주성분분석에서 성분은 관측변수들을 가중합해 만든 수학적 점수다. 요인분석에서 요인은 여러 문항의 공분산을 설명한다고 가정하는 관찰되지 않은 변수다.
두 방법이 비슷한 적재량을 제시하는 경우도 있다. 하지만 결과가 비슷해 보인다고 목적과 해석까지 같아지는 것은 아니다(Jolliffe & Morgan, 1992; Fabrigar et al., 1999; de Winter & Dodou, 2016).
같은 데이터를 보지만 질문이 다르다
자기효능감을 측정하는 20개 문항이 있다고 하자.
요인분석은 다음과 같이 질문한다.
문항들의 상관관계를 만들어내는 자기조절, 과제집중, 대인관계 효능감 같은 공통된 잠재개념이 존재하는가?
주성분분석은 다음과 같이 질문한다.
20개 문항이 가진 전체 변동을 최대한 보존하면서 더 적은 수의 합성점수로 바꿀 수 있는가?
두 질문은 비슷해 보이지만 분석의 초점이 다르다.
| 구분 | 요인분석 | 주성분분석 |
|---|---|---|
| 핵심 목적 | 잠재구조 설명 | 정보 압축과 차원 축소 |
| 관심 대상 | 변수 사이의 공통분산 | 관측변수의 전체분산 |
| 새로운 차원 | 잠재요인 | 관측변수의 가중합인 주성분 |
| 고유분산·오차 | 별도로 구분 | 별도로 분리하지 않음 |
| 대표적 활용 | 척도개발, 구성타당도, 측정모형 | 시각화, 압축, 전처리, 다중공선성 완화 |
| 기본 해석 | 요인이 문항들의 공통된 움직임을 설명 | 성분이 전체 자료를 효율적으로 요약 |
| 점수의 성격 | 추정된 잠재요인 점수 | 관측변수로 정확히 계산한 합성점수 |
| 이론적 요구 | 잠재개념과 문항구조에 대한 근거 필요 | 압축 목적만으로도 사용 가능 |
“변수가 많으니 줄인다”는 목표라면 PCA가 자연스러울 수 있다. “문항 뒤에 존재하는 구성개념을 밝힌다”는 목표라면 공통요인분석이 더 적절하다(Floyd & Widaman, 1995; Kahn, 2006).
주성분분석은 관측변수의 가중합을 만든다
표준화된 관측변수 \(X_1,X_2,\ldots,X_p\)가 있다고 하자.
첫 번째 주성분은 다음과 같은 선형결합이다.
\[
PC_1=w_{11}X_1+w_{12}X_2+\cdots+w_{1p}X_p
\]
두 번째 주성분은 다음과 같다.
\[
PC_2=w_{21}X_1+w_{22}X_2+\cdots+w_{2p}X_p
\]
가중치 \(w\)는 첫 번째 성분이 자료의 분산을 가능한 한 많이 설명하도록 결정된다.
두 번째 성분은 첫 번째 성분과 직교하면서 남은 분산을 가장 많이 설명한다. 이후의 성분도 같은 방식으로 구성된다.
회전하지 않은 전통적 PCA의 성분들은 서로 상관되지 않는다.
\[
\mathrm{Cor}(PC_j,PC_k)=0,\qquad j\neq k
\]
변수가 \(p\)개라면 최대 \(p\)개의 주성분을 만들 수 있다. 모든 성분을 유지하면 원자료의 전체분산을 완전히 재현할 수 있다.
그러나 PCA의 목적은 보통 모든 성분을 유지하는 것이 아니다.
첫 번째 몇 개 성분만으로 전체분산의 상당 부분을 설명하고 나머지 성분을 버리는 것이 차원 축소의 핵심이다(Jolliffe & Cadima, 2016).
요인분석은 공통된 원인을 모형화한다
공통요인모형은 관측변수를 다음과 같이 표현한다.
\[
X_j=\lambda_{j1}F_1+\lambda_{j2}F_2+\cdots+\lambda_{jm}F_m+\varepsilon_j
\]
각 기호의 의미는 다음과 같다.
- \(X_j\): 관찰된 문항 또는 변수
- \(F_1,\ldots,F_m\): 공통요인
- \(\lambda_{jk}\): 요인적재량
- \(\varepsilon_j\): 해당 변수의 고유한 부분과 측정오차
행렬식으로는 다음처럼 표현할 수 있다.
\[
\mathbf{X}=\mathbf{\Lambda F}+\boldsymbol{\varepsilon}
\]
요인분석은 관측변수의 분산을 두 부분으로 나눈다.
\[
\mathrm{Var}(X_j)=h_j^2+\psi_j
\]
여기서 \(h_j^2\)는 공통성이고, \(\psi_j\)는 고유분산이다.
공통성은 해당 변수가 공통요인들에 의해 설명되는 정도다. 고유분산에는 변수만의 고유한 특성과 측정오차가 포함될 수 있다.
표준화된 변수라면 전체분산은 1이다.
\[
1=h_j^2+\psi_j
\]
요인들이 서로 상관되지 않는 단순한 구조에서는 공통성을 다음처럼 계산할 수 있다.
\[
h_j^2=\lambda_{j1}^2+\lambda_{j2}^2+\cdots+\lambda_{jm}^2
\]
요인들이 상관되는 사각회전에서는 요인상관까지 고려해야 하므로 적재량을 단순히 제곱해 더한 값과 공통성이 정확히 같지 않을 수 있다.
전체분산과 공통분산의 차이
요인분석과 PCA를 구분하는 가장 중요한 기준은 어떤 분산을 분석하느냐이다.
관측변수의 분산은 개념적으로 다음과 같이 나눌 수 있다.
\[
\text{전체분산}=\text{공통분산}+\text{고유분산}+\text{오차분산}
\]
PCA는 이 전체분산을 사용한다.
측정오차나 변수만의 고유한 변동도 데이터에 존재하는 정보로 보고 성분을 구성한다.
공통요인분석은 변수들이 공유하는 공통분산을 설명하려 한다. 변수만의 고유분산과 측정오차는 공통요인과 분리한다.
예를 들어 만족도 문항 하나가 다음 요소를 포함한다고 하자.
- 전체적인 서비스 만족
- 해당 문항의 독특한 표현
- 질문을 잘못 읽은 반응
- 일시적인 기분
- 우연한 응답오차
요인분석은 여러 문항에 공통으로 나타나는 만족도 부분을 분리하려 한다.
PCA는 이 모든 변동을 포함한 관측점수들을 가장 효율적으로 압축한다.
PCA에서 공통성이 1이라는 말의 정확한 의미
통계 프로그램의 PCA 결과에서 초기 공통성이 모두 1로 표시되는 경우가 있다.
이는 각 변수가 실제로 완벽하게 측정되었다거나 오차가 없다는 뜻이 아니다.
PCA가 처음부터 각 변수의 전체분산을 성분분석의 대상으로 사용한다는 뜻이다.
표준화된 변수라면 각 변수의 전체분산이 1이므로 초기 공통성을 1로 표시할 수 있다.
그러나 일부 성분만 유지하면 추출 후 공통성은 일반적으로 1보다 작다.
예를 들어 두 개 성분을 유지한 뒤 한 문항의 적재량이 0.70과 0.30이라면 추출된 성분이 설명하는 비율은 다음과 같다.
\[
0.70^2+0.30^2=0.58
\]
두 성분이 해당 문항 분산의 약 58%를 재현하고 나머지는 버려진 성분에 남아 있다는 뜻이다.
따라서 다음 설명은 지나치게 단순하다.
PCA에서는 모든 문항의 공통성이 언제나 1이다.
보다 정확한 표현은 다음과 같다.
PCA는 초기 단계에서 변수의 전체분산을 분석대상으로 삼으며, 유지한 성분들이 설명하는 추출 공통성은 1보다 작을 수 있다.
요인은 변수의 원인이고 성분은 변수의 결과인가
요인모형은 흔히 다음 방향으로 표현된다.
\[
F\rightarrow X_1,X_2,\ldots,X_p
\]
예를 들어 잠재적인 우울 정도가 여러 우울 문항의 응답에 영향을 준다고 가정할 수 있다.
반면 주성분은 관측변수들로부터 계산된다.
\[
X_1,X_2,\ldots,X_p\rightarrow PC
\]
따라서 성분은 관측변수의 가중합이고, 요인은 관측변수들의 공통된 관계를 설명하도록 설정된 잠재변수다.
그러나 요인분석 결과만으로 잠재요인이 문항의 인과적 원인임이 증명되는 것은 아니다.
요인모형은 공분산 구조에 관한 통계모형이다. 인과적인 해석을 위해서는 이론, 측정과정, 시간적 순서와 대안모형에 관한 추가 근거가 필요하다.
요인이 문항을 설명한다는 모형적 방향과 실제 인과관계가 입증되었다는 주장은 구분해야 한다.
요인적재량과 성분적재량은 같은 숫자인가
두 분석 모두 적재량을 출력한다.
그러나 적재량이 의미하는 대상이 다르다.
PCA의 적재량은 변수와 성분 사이의 관계를 나타낸다.
요인분석의 적재량은 변수와 잠재요인 사이의 관계를 나타낸다.
결과표가 비슷하더라도 다음처럼 구분해 보고해야 한다.
- PCA: 성분적재량
- 공통요인분석: 요인적재량
공통성이 높고, 각 차원에 충분한 변수가 있으며, 적재구조가 명확하다면 PCA와 공통요인분석의 적재량이 유사하게 나타날 수 있다.
반대로 다음 상황에서는 차이가 커질 수 있다.
- 공통성이 낮다.
- 요인별 변수가 적다.
- 교차적재가 많다.
- 요인들이 강하게 상관된다.
- 표본이 작다.
- 잘못된 차원 수를 유지했다.
시뮬레이션 연구에서도 자료조건이 좋으면 두 방법이 유사한 패턴을 보일 수 있지만, 낮은 적재량과 낮은 공통성에서는 PCA 적재량이 공통요인 적재량과 체계적으로 달라질 수 있음이 보고되었다(de Winter & Dodou, 2016; Widaman, 2018).
주성분과 요인점수도 다르다
PCA의 성분점수는 관측변수의 가중합으로 직접 계산된다.
\[
PC_i=w_1X_{i1}+w_2X_{i2}+\cdots+w_pX_{ip}
\]
같은 PCA 해와 같은 전처리를 사용하면 각 사람의 성분점수가 결정된다.
반면 요인은 직접 관찰되지 않는다. 요인점수는 회귀법, Bartlett 방법 등으로 추정해야 한다.
요인분석에서는 같은 공분산 구조를 설명하는 여러 점수추정치가 가능하다. 이를 요인점수의 불확정성이라고 한다(Grice, 2001).
따라서 다음과 같은 활용에서는 차이가 중요하다.
| 목적 | 더 자연스러운 점수 |
|---|---|
| 원자료를 압축한 예측변수 생성 | 주성분점수 |
| 잠재개념의 개인별 수준 추정 | 요인점수 |
| 설명변수의 다중공선성 완화 | 주성분점수 |
| 심리척도 하위요인 점수 | 검증된 요인모형 기반 점수 |
| 2차원 시각화 | 주성분점수 |
| 측정오차를 고려한 구조모형 | 잠재요인 |
실제 척도에서는 단순 합산점수, 평균점수, 요인점수 가운데 무엇을 사용할지 별도로 결정해야 한다. CFA가 적합하다고 요인점수가 자동으로 가장 좋은 실무점수가 되는 것은 아니다.
회전은 요인분석에만 사용하는가
회전은 요인분석에서 특히 중요하지만 PCA에도 적용할 수 있다.
회전의 목적은 유지한 차원공간을 더 해석하기 쉬운 방향으로 바꾸는 것이다.
직교회전
Varimax 같은 직교회전은 요인이나 회전된 성분 사이의 상관을 0으로 유지한다.
사각회전
Oblimin이나 Promax 같은 사각회전은 차원 사이의 상관을 허용한다.
심리, 교육과 마케팅 개념들은 서로 관련되는 경우가 많으므로 요인분석에서는 사각회전이 자연스러운 경우가 많다(Fabrigar et al., 1999).
한 가지 주의할 점이 있다.
회전하지 않은 PCA의 주성분은 서로 직교한다. 하지만 PCA 해에 사각회전을 적용하면 회전된 성분들은 서로 상관될 수 있다.
따라서 다음 문장은 조건을 붙여야 한다.
주성분은 항상 서로 상관되지 않는다.
보다 정확하게는 다음과 같다.
회전하지 않은 전통적 주성분은 서로 직교하지만, 사각회전을 적용한 성분해는 상관될 수 있다.
회전 후에는 개별 성분이 설명하는 분산의 순서가 바뀔 수 있다. 다만 유지된 차원들이 함께 설명하는 총분산은 직교회전에서는 보존된다.
추출방법을 구분해야 한다
통계 프로그램에서 ‘요인분석’ 메뉴를 선택했다고 모두 공통요인분석이 실행되는 것은 아니다.
대표적인 추출방법은 다음과 같다.
| 추출법 | 분석 성격 |
|---|---|
| 주성분분석 | 전체분산을 이용한 차원 축소 |
| 주축요인법 | 공통분산 중심의 요인추정 |
| 최소잔차법 | 재현된 상관행렬의 잔차 최소화 |
| 최대우도 요인분석 | 분포가정 아래 요인모형 추정과 검정 |
| 일반화 최소제곱 | 가중된 잔차를 이용한 요인추정 |
새로운 설문척도의 잠재구조를 분석하려는 목적이라면 주축요인법, 최소잔차법 또는 최대우도 요인분석과 같은 공통요인 접근을 우선 고려할 수 있다.
변수들을 몇 개의 합성축으로 압축하려는 목적이라면 PCA가 적절하다.
분석보고서에는 단순히 “요인분석을 실시하였다”고 쓰지 말고 실제 추출방법을 밝혀야 한다.
차원의 수는 어떻게 결정하는가
PCA와 요인분석 모두 몇 개의 차원을 유지할지 결정해야 한다.
대표적인 방법은 다음과 같다.
- 스크리 그림
- 평행분석
- 고유값
- 누적설명분산
- 해석 가능성
- 이론
- 교차검증
- MAP 기준
고유값이 1보다 큰 차원만 유지하는 기준이 널리 사용되지만, 과대추출이나 과소추출이 발생할 수 있어 단독으로 사용하기 어렵다.
평행분석은 실제 고유값을 같은 크기의 무작위자료에서 얻은 고유값과 비교한다(Horn, 1965; Hayton et al., 2004).
중요한 점은 PCA와 요인분석에 사용하는 평행분석이 같지 않다는 것이다.
- PCA 평행분석은 주성분 고유값을 비교한다.
- 요인 평행분석은 공통요인 추출에 맞는 고유값을 비교한다.
요인분석을 계획하면서 PCA 방식의 평행분석 결과를 그대로 사용하면 차원 수 결정이 달라질 수 있다.
통계기준뿐 아니라 각 차원의 문항 수, 적재량, 교차적재와 내용적 해석을 함께 검토해야 한다.
설명분산도 같은 의미가 아니다
PCA에서는 설명분산 비율이 핵심 결과다.
표준화한 변수가 10개라면 전체분산은 10이다. 첫 번째 성분의 고유값이 4라면 전체분산의 40%를 설명한다.
\[
\frac{4}{10}\times100=40%
\]
두 번째 성분의 고유값이 2라면 두 성분의 누적설명률은 60%다.
\[
\frac{4+2}{10}\times100=60%
\]
요인분석의 설명분산은 같은 방식으로 단순 비교하기 어렵다. 요인분석은 전체분산이 아니라 추정된 공통분산을 설명하는 모형이기 때문이다.
PCA가 요인분석보다 더 높은 누적설명률을 제시하는 것은 흔하다. PCA가 측정오차와 고유분산까지 포함한 전체분산을 사용하기 때문이다.
따라서 다음처럼 비교해서는 안 된다.
PCA의 설명률이 70%이고 요인분석은 55%이므로 PCA가 더 우수하다.
두 분석의 분모와 목적이 다르기 때문에 설명률이 높다는 사실만으로 분석의 적절성을 판단할 수 없다.
자기효능감 설문에는 무엇을 사용해야 할까
20개 문항이 자기조절, 과제집중과 대인관계 효능감이라는 세 잠재개념을 측정한다고 하자.
연구목적이 다음과 같다면 공통요인분석이 적절하다.
- 실제 하위요인 수를 탐색한다.
- 문항들이 어떤 잠재개념을 측정하는지 확인한다.
- 교차적재 문항을 검토한다.
- 척도의 구성타당도를 평가한다.
- 후속 CFA 측정모형을 개발한다.
반면 다음 목적이라면 PCA가 적절할 수 있다.
- 20개 문항을 두세 개 합성변수로 압축한다.
- 고객들을 2차원 공간에 시각화한다.
- 군집분석의 입력변수 수를 줄인다.
- 서로 강하게 상관된 예측변수를 직교성분으로 바꾼다.
- 데이터 저장과 계산비용을 줄인다.
같은 자기효능감 자료를 사용해도 연구질문에 따라 방법이 달라진다.
PCA가 예측모형을 항상 개선하는 것은 아니다
PCA는 다중공선성을 줄이고 변수 수를 줄일 수 있다.
그러나 PCA는 결과변수 \(Y\)를 보지 않고 \(X\)의 분산만을 최대화하는 비지도 방법이다.
분산이 큰 성분이 반드시 결과를 잘 예측하는 것은 아니다.
예측에 중요한 정보가 분산이 작은 성분에 들어 있을 수도 있다. 따라서 PCA를 적용했다고 모델의 예측력이 자동으로 향상되지는 않는다.
예측목적에서는 다음 절차가 필요하다.
- 학습자료 안에서만 중심화와 표준화 수행
- 학습자료에서 PCA 추정
- 검증자료에는 학습자료의 변환 적용
- 유지할 성분 수를 교차검증으로 선택
- PCA를 사용하지 않은 모델과 성능 비교
- 데이터 누출 방지
전체 데이터로 PCA를 수행한 뒤 훈련·검증자료를 나누면 검증자료의 정보가 전처리에 반영되는 데이터 누출이 발생할 수 있다.
변수의 단위는 PCA에 큰 영향을 준다
PCA를 공분산행렬로 수행하면 단위와 분산이 큰 변수가 첫 번째 성분을 지배할 수 있다.
예를 들어 다음 변수를 함께 분석한다고 하자.
- 연간소득: 원 단위
- 만족도: 1∼5점
- 방문횟수: 0∼20회
연간소득의 수치분산이 훨씬 크기 때문에 표준화하지 않은 PCA에서는 소득이 주성분을 지배할 수 있다.
단위가 서로 다르거나 분산크기를 비교할 근거가 없다면 일반적으로 표준화한 상관행렬을 사용한다.
\[
Z_j=\frac{X_j-\bar{X}_j}{s_j}
\]
반대로 모든 변수가 같은 단위이고 실제 분산차이 자체가 중요한 경우에는 공분산행렬을 사용할 수 있다.
무조건 표준화하거나 무조건 원자료를 사용하는 것이 아니라 분석목적을 기준으로 선택해야 한다.
요인분석에서도 변수들이 서로 다른 척도를 사용한다면 상관행렬을 이용하는 경우가 많다.
Likert 문항에는 어떤 상관행렬을 사용할까
Likert형 문항은 기본적으로 순서형 자료다.
응답범주가 적고 한쪽에 심하게 몰려 있다면 Pearson 상관계수가 잠재적인 문항관계를 충분히 반영하지 못할 수 있다.
이때 공통요인분석에서는 다분상관행렬을 고려할 수 있다.
다분상관은 관찰된 순서형 응답 뒤에 연속적인 잠재반응이 존재한다고 가정한다.
다음 조건에서는 특히 검토할 가치가 있다.
- 응답범주가 2∼4개다.
- 천장효과나 바닥효과가 크다.
- 문항분포가 심하게 비대칭이다.
- 잠재적인 심리구조를 추정하려 한다.
응답범주가 5개 이상이고 분포가 비교적 대칭적이며 표본이 충분하다면 Pearson 상관을 이용한 결과와 큰 차이가 없을 수도 있다.
자료형, 표본크기와 추정방법을 함께 고려해야 한다.
표본 수는 문항 수의 배수만으로 정할 수 없다
“문항당 5명” 또는 “문항당 10명” 같은 규칙이 사용되지만 모든 요인분석에 적용할 수는 없다.
필요한 표본 수는 다음 요소에 따라 달라진다.
- 공통성
- 요인적재량
- 요인별 문항 수
- 요인 수
- 교차적재
- 요인 간 상관
- 문항분포
- 결측률
- 추출방법
공통성이 높고 요인별로 강한 문항이 충분하다면 비교적 작은 표본에서도 안정적인 구조를 얻을 수 있다.
공통성이 낮고 요인별 문항이 적다면 훨씬 큰 표본이 필요하다(MacCallum et al., 1999).
PCA에서도 표본이 작으면 주성분 방향과 적재량이 표본변동에 민감할 수 있다. 가능하면 부트스트랩, 재표집, 교차검증 또는 독립표본을 이용해 안정성을 확인하는 것이 좋다.
R로 PCA와 요인분석 비교하기
두 개의 잠재요인에서 여섯 문항이 생성되는 가상자료를 만들어보자.
첫 번째 요인은 문항 1∼3, 두 번째 요인은 문항 4∼6과 관련되도록 설정한다.
set.seed(2026)
sample_size <- 500L
factor_correlation <- matrix(
c(
1.00, 0.35,
0.35, 1.00
),
nrow = 2,
byrow = TRUE
)
latent_factor <- MASS::mvrnorm(
n = sample_size,
mu = c(
0,
0
),
Sigma = factor_correlation
)R각 문항에 측정오차를 추가한다.
loading <- 0.75
error_sd <- sqrt(
1 - loading^2
)
survey_data <- data.frame(
item1 = loading * latent_factor[, 1] +
rnorm(
sample_size,
sd = error_sd
),
item2 = loading * latent_factor[, 1] +
rnorm(
sample_size,
sd = error_sd
),
item3 = loading * latent_factor[, 1] +
rnorm(
sample_size,
sd = error_sd
),
item4 = loading * latent_factor[, 2] +
rnorm(
sample_size,
sd = error_sd
),
item5 = loading * latent_factor[, 2] +
rnorm(
sample_size,
sd = error_sd
),
item6 = loading * latent_factor[, 2] +
rnorm(
sample_size,
sd = error_sd
)
)
round(
cor(
survey_data
),
2
)R문항 1∼3과 문항 4∼6 안에서 상대적으로 높은 상관이 나타날 가능성이 크다.
기본 R로 PCA 실행하기
변수들을 표준화해 PCA를 실시한다.
pca_fit <- prcomp(
survey_data,
center = TRUE,
scale. = TRUE
)
summary(
pca_fit
)R성분적재량을 확인한다.
round(
pca_fit$rotation,
3
)R첫 두 성분이 설명하는 분산을 확인한다.
explained_variance <- (
pca_fit$sdev^2
) / sum(
pca_fit$sdev^2
)
round(
explained_variance,
3
)R누적설명률은 다음과 같이 계산한다.
round(
cumsum(
explained_variance
),
3
)R각 사람의 주성분점수는 다음에 저장된다.
head(
pca_fit$x
)R이 점수들은 표준화된 관측변수의 가중합이다.
psych 패키지로 회전된 PCA 실행하기
# 최초 한 번만 실행
# install.packages("psych")
library(psych)
pca_rotated <- principal(
survey_data,
nfactors = 2,
rotate = "oblimin",
scores = TRUE
)
print(
pca_rotated$loadings,
cutoff = 0.30,
sort = TRUE
)R사각회전을 사용했으므로 회전된 두 성분의 상관을 확인할 수 있다.
pca_rotated$PhiR초기의 주성분들은 직교하지만 사각회전된 성분해는 서로 상관될 수 있다.
같은 자료에 공통요인분석 적용하기
최소잔차법과 Oblimin 회전을 사용한다.
efa_fit <- fa(
survey_data,
nfactors = 2,
fm = "minres",
rotate = "oblimin",
scores = "regression"
)
print(
efa_fit$loadings,
cutoff = 0.30,
sort = TRUE
)R요인 간 상관을 확인한다.
round(
efa_fit$Phi,
3
)R문항별 공통성을 확인한다.
round(
efa_fit$communality,
3
)R고유분산은 다음과 같이 확인한다.
round(
efa_fit$uniquenesses,
3
)R표준화된 자료에서는 공통성과 고유분산의 합이 대체로 1에 가까워진다.
PCA와 요인분석 적재량 비교하기
회전과 문항순서를 동일하게 맞춘 뒤 두 적재량을 비교할 수 있다.
pca_loadings <- unclass(
pca_rotated$loadings
)
efa_loadings <- unclass(
efa_fit$loadings
)
round(
cbind(
pca_loadings,
efa_loadings
),
3
)R가상자료는 비교적 높은 적재량과 명확한 두 요인 구조를 갖도록 생성했으므로 PCA와 요인분석의 패턴이 비슷하게 나타날 수 있다.
그러나 PCA 적재량은 전체분산을 기반으로 하고, 요인적재량은 공통분산 모형을 기반으로 한다. 숫자가 비슷해도 해석은 같지 않다.
평행분석에서 분석 종류 지정하기
PCA의 성분 수를 검토하려면 다음처럼 설정한다.
fa.parallel(
survey_data,
fa = "pc",
n.iter = 100,
main = "PCA 평행분석"
)R공통요인 수를 검토하려면 다음처럼 설정한다.
fa.parallel(
survey_data,
fa = "fa",
fm = "minres",
n.iter = 100,
main = "요인 평행분석"
)Rfa = "pc"와 fa = "fa"는 서로 다른 질문에 답한다.
분석목적과 다른 평행분석을 적용하지 않도록 주의해야 한다.
Likert 문항에 다분상관 적용하기
문항이 순서형이라면 다분상관행렬을 계산할 수 있다.
poly_result <- polychoric(
ordinal_data
)
poly_correlation <- poly_result$rho
efa_ordinal <- fa(
poly_correlation,
nfactors = 2,
n.obs = nrow(
ordinal_data
),
fm = "minres",
rotate = "oblimin"
)
print(
efa_ordinal$loadings,
cutoff = 0.30
)R다분상관은 빈 범주가 많거나 분포가 극단적이면 불안정할 수 있다. 문항별 응답빈도를 먼저 확인해야 한다.
어떤 분석을 선택해야 하는가
다음 질문으로 선택을 시작할 수 있다.
| 연구질문 | 권장되는 출발점 |
|---|---|
| 변수들을 적은 수의 합성점수로 압축하려는가? | PCA |
| 자료를 2차원이나 3차원으로 시각화하려는가? | PCA |
| 예측모형의 입력변수를 줄이려는가? | PCA와 교차검증 |
| 다중공선성이 큰 변수들을 직교축으로 바꾸려는가? | PCA |
| 문항 뒤에 잠재개념이 있다고 가정하는가? | 공통요인분석 |
| 척도의 하위요인 구조를 탐색하려는가? | EFA |
| 사전에 정한 문항구조를 검증하려는가? | CFA |
| 측정오차와 고유분산을 분리하려는가? | 요인모형 |
| 집단 간 잠재개념을 비교하려는가? | CFA와 측정불변성 |
| 단순한 데이터 압축이 목적이고 잠재해석이 불필요한가? | PCA |
분석방법은 결과가 더 깔끔하게 나오는 쪽을 선택하는 것이 아니다.
연구질문이 데이터 압축인지 잠재구조 설명인지 먼저 정해야 한다.
결과는 어떻게 보고해야 할까
PCA 결과는 다음과 같이 보고할 수 있다.
12개 관측변수의 차원을 축소하기 위해 상관행렬을 이용한 주성분분석을 실시하였다. 변수들은 분석 전에 표준화하였다. 유지할 성분 수는 PCA 기반 평행분석, 스크리 그림과 누적설명률을 종합해 결정하였다. 두 개의 주성분을 유지했으며, 해석 가능성을 높이기 위해 Varimax 회전을 적용하였다. 두 성분의 누적설명률과 성분적재량 및 성분점수 산출방법을 보고하였다.
공통요인분석은 다음과 같이 보고할 수 있다.
설문 문항 사이의 잠재구조를 탐색하기 위해 최소잔차법을 이용한 공통요인분석을 실시하였다. 요인들이 관련될 가능성을 고려해 Oblimin 회전을 사용하였다. 요인 수는 요인분석 기반 평행분석, 스크리 그림, 적재구조와 이론적 해석을 종합해 결정하였다. 문항별 요인적재량, 교차적재, 공통성, 고유분산과 요인 간 상관을 보고하였다.
다음 표현은 피하는 것이 좋다.
Varimax 회전을 이용한 요인분석을 실시하였다.
이 문장만으로는 PCA인지 주축요인법인지 최소잔차법인지 알 수 없다.
추출법과 회전법은 서로 다른 선택이므로 모두 밝혀야 한다.
자주 발생하는 오류
PCA를 수행하고 잠재요인을 발견했다고 말한다
PCA의 성분은 관측변수의 합성점수다. 잠재요인과 동일하게 해석하려면 별도의 측정이론이 필요하다.
통계 프로그램의 요인분석 메뉴를 사용했으므로 공통요인분석이라고 생각한다
실제 추출방법이 PCA로 설정되어 있을 수 있다. 출력에서 추출법을 확인해야 한다.
PCA의 설명률이 높으므로 요인분석보다 우수하다고 판단한다
전체분산과 공통분산이라는 서로 다른 대상을 분석하므로 설명률을 직접 비교하기 어렵다.
PCA에서는 공통성이 항상 1이라고 생각한다
초기 공통성은 1로 표시될 수 있지만, 일부 성분만 유지한 추출 공통성은 1보다 작을 수 있다.
요인분석은 이론검증이고 PCA는 완전히 이론이 없는 분석이라고 생각한다
EFA도 문항선정과 요인해석에 이론이 필요하다. CFA가 사전에 정한 구조를 더 직접적으로 검정한다.
요인과 성분이 비슷한 적재량을 보이므로 같은 방법이라고 판단한다
자료조건이 좋으면 패턴이 유사할 수 있지만 분산모형과 해석대상은 다르다.
PCA 성분은 언제나 서로 상관되지 않는다고 말한다
회전하지 않은 주성분은 직교하지만 사각회전된 성분은 상관될 수 있다.
고유값 1 기준만으로 차원 수를 정한다
평행분석, 스크리 그림과 해석 가능성을 함께 검토해야 한다.
PCA 기반 평행분석으로 요인 수를 결정한다
분석목적에 맞게 성분 평행분석과 요인 평행분석을 구분해야 한다.
Likert 문항을 무조건 연속형 정규자료로 처리한다
범주 수와 분포에 따라 다분상관과 순서형 추정법을 고려해야 한다.
PCA를 전체 데이터에 적용한 뒤 검증자료를 나눈다
예측분석에서 데이터 누출이 발생할 수 있다.
분석 전에 확인할 질문
- 목적이 잠재구조 설명인가, 데이터 압축인가?
- 결과를 요인이라고 부를 것인가, 성분이라고 부를 것인가?
- 측정오차와 고유분산을 분리할 필요가 있는가?
- 문항들이 하나 이상의 잠재개념을 측정한다고 가정하는가?
- 변수의 단위가 서로 같은가?
- 공분산행렬과 상관행렬 중 무엇을 사용할 것인가?
- Likert 문항의 범주 수와 분포는 어떠한가?
- Pearson 상관과 다분상관 가운데 무엇이 적절한가?
- 차원 수를 어떤 근거로 결정할 것인가?
- 평행분석의 종류가 분석목적과 일치하는가?
- 직교회전과 사각회전 중 무엇이 이론적으로 적절한가?
- 성분적재량과 요인적재량을 구분해 보고했는가?
- 공통성과 고유분산을 확인했는가?
- 요인별 문항 수가 충분한가?
- 교차적재가 많은 문항은 없는가?
- 표본 수가 구조를 안정적으로 추정하기에 충분한가?
- 다른 표본에서도 결과가 재현되는가?
- 예측목적이라면 교차검증 안에서 PCA를 수행했는가?
- 점수산출 방법을 명확히 설명할 수 있는가?
- 결과의 통계적 이름과 이론적 의미를 혼동하고 있지 않은가?
요인은 설명하고 성분은 압축합니다
요인분석과 주성분분석은 모두 많은 변수를 적은 수의 차원으로 정리한다.
그러나 그 정리의 목적은 다르다.
비전공자는 다음 다섯 문장으로 기억할 수 있다.
PCA는 관측변수의 전체분산을 보존하는 합성점수를 만든다.
요인분석은 변수들이 공유하는 공통분산을 잠재요인으로 설명한다.
주성분에는 별도의 오차항이 없지만 요인모형은 고유분산과 오차를 구분한다.
두 방법의 적재량이 비슷해도 해석은 동일하지 않다.
문항 뒤의 개념을 찾는다면 요인분석, 데이터를 압축한다면 PCA가 기본적인 출발점이다.
20개 자기효능감 문항을 세 개 숫자로 줄였다고 해서 세 개의 심리적 요인이 발견된 것은 아니다.
그 숫자가 관측변수의 분산을 효율적으로 요약한 성분인지, 문항들의 공통된 구조를 설명하는 잠재요인인지 구분해야 한다.
PCA는 복잡한 데이터를 간결하게 정리하는 강력한 도구다.
요인분석은 직접 보이지 않는 개념이 관찰된 문항에 어떻게 나타나는지를 모형화하는 도구다.
둘 가운데 어느 하나가 항상 더 우수한 것은 아니다.
가장 중요한 것은 분석을 시작하기 전에 다음 질문에 답하는 것이다.
나는 데이터를 줄이려는가, 아니면 데이터 뒤의 개념을 설명하려는가?
이 질문이 분명해지면 성분과 요인을 혼동할 가능성도 크게 줄어든다.
참고문헌
Costello, A. B., & Osborne, J. W. (2005). Best practices in exploratory factor analysis: Four recommendations for getting the most from your analysis. Practical Assessment, Research, and Evaluation, 10, Article 7. https://doi.org/10.7275/jyj1-4868
de Winter, J. C. F., & Dodou, D. (2016). Common factor analysis versus principal component analysis: A comparison of loadings by means of simulations. Communications in Statistics—Simulation and Computation, 45(1), 173–190. https://doi.org/10.1080/03610918.2013.862274
Fabrigar, L. R., Wegener, D. T., MacCallum, R. C., & Strahan, E. J. (1999). Evaluating the use of exploratory factor analysis in psychological research. Psychological Methods, 4(3), 272–299. https://doi.org/10.1037/1082-989X.4.3.272
Floyd, F. J., & Widaman, K. F. (1995). Factor analysis in the development and refinement of clinical assessment instruments. Psychological Assessment, 7(3), 286–299. https://doi.org/10.1037/1040-3590.7.3.286
Goretzko, D., Pham, T. T. H., & Bühner, M. (2021). Exploratory factor analysis: Current use, methodological developments and recommendations for good practice. Current Psychology, 40, 3510–3521. https://doi.org/10.1007/s12144-019-00300-2
Grice, J. W. (2001). Computing and evaluating factor scores. Psychological Methods, 6(4), 430–450. https://doi.org/10.1037/1082-989X.6.4.430
Hayton, J. C., Allen, D. G., & Scarpello, V. (2004). Factor retention decisions in exploratory factor analysis: A tutorial on parallel analysis. Organizational Research Methods, 7(2), 191–205. https://doi.org/10.1177/1094428104263675
Horn, J. L. (1965). A rationale and test for the number of factors in factor analysis. Psychometrika, 30(2), 179–185. https://doi.org/10.1007/BF02289447
Jolliffe, I. T., & Cadima, J. (2016). Principal component analysis: A review and recent developments. Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences, 374(2065), 20150202. https://doi.org/10.1098/rsta.2015.0202
Jolliffe, I. T., & Morgan, B. J. T. (1992). Principal component analysis and exploratory factor analysis. Statistical Methods in Medical Research, 1(1), 69–95. https://doi.org/10.1177/096228029200100105
Kahn, J. H. (2006). Factor analysis in counseling psychology research, training, and practice: Principles, advances, and applications. The Counseling Psychologist, 34(5), 684–718. https://doi.org/10.1177/0011000006286347
Kim, H.-J. (2008). Common factor analysis versus principal component analysis: Choice for symptom cluster research. Asian Nursing Research, 2(1), 17–24. https://doi.org/10.1016/S1976-1317(08)60025-0
MacCallum, R. C., Widaman, K. F., Zhang, S., & Hong, S. (1999). Sample size in factor analysis. Psychological Methods, 4(1), 84–99. https://doi.org/10.1037/1082-989X.4.1.84
Widaman, K. F. (2018). On common factor and principal component representations of data: Implications for theory and for confirmatory replications. Structural Equation Modeling: A Multidisciplinary Journal, 25(6), 829–847. https://doi.org/10.1080/10705511.2018.1478730









