다중대응분석(MCA)

다중 대응 분석(MCA: Muliple Correspondence Analysis)는 다변량 범주형 자료의 탐색적 분석에 이용되는 차원 축소 기법으로 대응분석(CA:Corespondance Analysis)의 확장형이라고 할 수 있다. 또한, 이는 범주형 데이터에 대한 주성분분석(PCA)라고 볼 수도 있다.

수치형(연속형)자료에서의 주성분분석은 자료간 선형조합을 기준으로 공분산분석기반 주성분을 추출하지만, 범주형 자료에서는 공분산을 사용할 수 없기 때문에 범주형 변수의 빈도기반 카이제곱 분석을 수행한다. 카이제곱값이 커지면 변수간 종속관계를 확인 할 수 있다. 변수 간 카이제곱 검정통계량으로 만든 행렬을 분해(Decomposition)하여 요인을 찾아내는 것이 대응분석(CA)이고, 여러변수로 확장한것이 다중 대응 분석(MCA) 이다.

주로 설문 조사에서 다수의 범주형 변수(예: 성별, 직업, 선호도)들이 있을 때 이들의 패턴을 이해하고자 할 때 유용하게 사용되며, 관측치와 변수들 사이의 관계를 2차원 또는 3차원의 시각적 지도 상에 표현하여 데이터의 구조를 파악할 수 있다.

다중대응분석의 주요 특징과 단계

  1. 데이터 매트릭스 구성:
    • 각 관측치(응답자)와 변수(설문 항목)를 범주형으로 표현합니다. 이를 통해 두 변수 간의 교차표를 만들고 이를 기반으로 다중대응분석을 수행합니다.
  2. 행렬 분해:
    • 주성분분석과 유사하게 특잇값 분해(SVD)를 사용하여 관측치와 변수 간의 관계를 저차원 공간에 투영합니다.
    • 특이값 분해를 통해 중요한 축(성분)을 찾고, 이 축을 통해 데이터를 2차원 또는 3차원 상에 시각화합니다.
  3. 관측치와 범주의 시각화:
    • MCA 결과는 주로 점 그래프로 시각화되며, 각 점은 관측치나 범주를 나타냅니다. 서로 가까운 점들은 유사한 패턴을 공유한다는 의미이며, 멀리 떨어진 점들은 상반된 패턴을 가짐을 나타냅니다.
  4. 해석:
    • 주된 성분들이 무엇을 의미하는지 해석하며, 이를 통해 변수들 간의 관계와 군집을 분석합니다. 이를 통해 특정 집단이 공유하는 특성이나 변수들 간의 연관성을 파악할 수 있습니다.

다중대응분석의 활용 예시

  • 고객 세분화: 고객의 성별, 연령대, 선호도 등의 변수들을 분석하여 유사한 속성을 가진 고객 그룹을 찾는 데 유용합니다.
  • 마케팅 조사: 제품에 대한 선호도, 사용 빈도, 구매 이유 등의 변수들 간의 관계를 분석하여 마케팅 전략을 수립하는 데 도움을 줍니다.
  • 사회과학 연구: 설문 조사 응답 데이터를 활용해 사회적 집단 간의 유사성이나 차이를 분석할 수 있습니다.

이처럼 다중대응분석은 범주형 데이터에서 의미 있는 패턴을 추출하고, 이를 시각적으로 이해하기 쉽게 하는 데 강력한 도구입니다.

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())

코드 설명

  1. 패키지 설치 및 로드: FactoMineR 패키지를 사용하여 다중대응분석을 수행하고, factoextra 패키지를 사용해 시각화를 진행합니다.
  2. 데이터 불러오기: tea 데이터셋은 FactoMineR 패키지에 포함된 예제 데이터로, 다양한 범주형 변수로 구성되어 있습니다.
  3. 다중대응분석 수행:
    • MCA() 함수를 사용하여 다중대응분석을 수행합니다.
    • quali.sup 인자는 보조 변수(예를 들어, 분석에 포함하지 않을 변수를 지정)를 선택하는 데 사용됩니다.
  4. 결과 요약:
    • summary() 함수를 사용해 다중대응분석 결과에 대한 요약 정보를 볼 수 있습니다.
  5. 시각화:
    • fviz_mca_biplot()으로 변수와 관측치를 함께 시각화하여 이들의 관계를 파악합니다.
    • fviz_mca_var()로 변수들 간의 관계를 시각화할 수 있습니다.
    • fviz_mca_ind()로 관측치(예: 응답자) 간의 관계를 시각화하며, 이때 클러스터별로 색상을 다르게 하고 신뢰구간 타원을 추가할 수도 있습니다.

이 코드를 통해 범주형 변수들 간의 관계를 시각적으로 분석할 수 있다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤