다중 대응 분석(MCA: Muliple Correspondence Analysis)는 다변량 범주형 자료의 탐색적 분석에 이용되는 차원 축소 기법으로 대응분석(CA:Corespondance Analysis)의 확장형이라고 할 수 있다. 또한, 이는 범주형 데이터에 대한 주성분분석(PCA)라고 볼 수도 있다.
수치형(연속형)자료에서의 주성분분석은 자료간 선형조합을 기준으로 공분산분석기반 주성분을 추출하지만, 범주형 자료에서는 공분산을 사용할 수 없기 때문에 범주형 변수의 빈도기반 카이제곱 분석을 수행한다. 카이제곱값이 커지면 변수간 종속관계를 확인 할 수 있다. 변수 간 카이제곱 검정통계량으로 만든 행렬을 분해(Decomposition)하여 요인을 찾아내는 것이 대응분석(CA)이고, 여러변수로 확장한것이 다중 대응 분석(MCA) 이다.
주로 설문 조사에서 다수의 범주형 변수(예: 성별, 직업, 선호도)들이 있을 때 이들의 패턴을 이해하고자 할 때 유용하게 사용되며, 관측치와 변수들 사이의 관계를 2차원 또는 3차원의 시각적 지도 상에 표현하여 데이터의 구조를 파악할 수 있다.
다중대응분석의 주요 특징과 단계
- 데이터 매트릭스 구성:
- 각 관측치(응답자)와 변수(설문 항목)를 범주형으로 표현합니다. 이를 통해 두 변수 간의 교차표를 만들고 이를 기반으로 다중대응분석을 수행합니다.
- 행렬 분해:
- 주성분분석과 유사하게 특잇값 분해(SVD)를 사용하여 관측치와 변수 간의 관계를 저차원 공간에 투영합니다.
- 특이값 분해를 통해 중요한 축(성분)을 찾고, 이 축을 통해 데이터를 2차원 또는 3차원 상에 시각화합니다.
- 관측치와 범주의 시각화:
- MCA 결과는 주로 점 그래프로 시각화되며, 각 점은 관측치나 범주를 나타냅니다. 서로 가까운 점들은 유사한 패턴을 공유한다는 의미이며, 멀리 떨어진 점들은 상반된 패턴을 가짐을 나타냅니다.
- 해석:
- 주된 성분들이 무엇을 의미하는지 해석하며, 이를 통해 변수들 간의 관계와 군집을 분석합니다. 이를 통해 특정 집단이 공유하는 특성이나 변수들 간의 연관성을 파악할 수 있습니다.
다중대응분석의 활용 예시
- 고객 세분화: 고객의 성별, 연령대, 선호도 등의 변수들을 분석하여 유사한 속성을 가진 고객 그룹을 찾는 데 유용합니다.
- 마케팅 조사: 제품에 대한 선호도, 사용 빈도, 구매 이유 등의 변수들 간의 관계를 분석하여 마케팅 전략을 수립하는 데 도움을 줍니다.
- 사회과학 연구: 설문 조사 응답 데이터를 활용해 사회적 집단 간의 유사성이나 차이를 분석할 수 있습니다.
이처럼 다중대응분석은 범주형 데이터에서 의미 있는 패턴을 추출하고, 이를 시각적으로 이해하기 쉽게 하는 데 강력한 도구입니다.
R code
다중대응분석을 R에서 수행하기 위해 주로 FactoMineR
패키지를 많이 사용한다
# 패키지 설치 및 로드
install.packages("FactoMineR")
install.packages("factoextra") # 시각화 패키지
library(FactoMineR)
library(factoextra)
# 예제 데이터셋 (FactoMineR 패키지에 포함된 tea 데이터셋 사용)
data("tea")
# 다중대응분석 수행
mca_result <- MCA(tea, quali.sup = 19:36) # 범주형 변수들을 다중대응분석에 사용
# 결과 요약
summary(mca_result)
# 차원 축소된 결과를 시각화
fviz_mca_biplot(mca_result, repel = TRUE,
ggtheme = theme_minimal()) # Biplot 시각화
# 변수만 시각화
fviz_mca_var(mca_result, choice = "mca.cor", repel = TRUE,
ggtheme = theme_minimal()) # 변수들 간의 관계 시각화
# 관측치(응답자)만 시각화
fviz_mca_ind(mca_result,
label = "none", # 관측치 라벨 숨기기
habillage = "Cluster", # 클러스터별 색상 구분
addEllipses = TRUE, ellipse.type = "confidence",
ggtheme = theme_minimal())
코드 설명
- 패키지 설치 및 로드:
FactoMineR
패키지를 사용하여 다중대응분석을 수행하고,factoextra
패키지를 사용해 시각화를 진행합니다. - 데이터 불러오기:
tea
데이터셋은FactoMineR
패키지에 포함된 예제 데이터로, 다양한 범주형 변수로 구성되어 있습니다. - 다중대응분석 수행:
MCA()
함수를 사용하여 다중대응분석을 수행합니다.quali.sup
인자는 보조 변수(예를 들어, 분석에 포함하지 않을 변수를 지정)를 선택하는 데 사용됩니다.
- 결과 요약:
summary()
함수를 사용해 다중대응분석 결과에 대한 요약 정보를 볼 수 있습니다.
- 시각화:
fviz_mca_biplot()
으로 변수와 관측치를 함께 시각화하여 이들의 관계를 파악합니다.fviz_mca_var()
로 변수들 간의 관계를 시각화할 수 있습니다.fviz_mca_ind()
로 관측치(예: 응답자) 간의 관계를 시각화하며, 이때 클러스터별로 색상을 다르게 하고 신뢰구간 타원을 추가할 수도 있습니다.
이 코드를 통해 범주형 변수들 간의 관계를 시각적으로 분석할 수 있다.