안녕하세요. 오랜만의 포스팅입니다.
이번에는 범주형 자료 분석이라는 주제를 가지고 한동안 올려볼 생각입니다.
주요 참고 도서는 학부시절 배운 Agresti 교수님의 Introduction to categorical data analysis을 위주로 작성합니다.
다만, 교재에서 빠진 증명이나 예시 같은 부분도 다수 포함할 예정이지만 수리통계학에 대해 익숙하다고 가정하고 있습니다.
1. 범주형 변수 (Categorical Variable)
앞으로 알아볼 범주형 변수(Categorical Variable)은 정치성향(진보, 보수, 중도)나 예 / 아니오와 같은 응답여부, A / B / AB / O 혈액형와 같이 범주의 집합으로 구성된 측정 척도를 가집니다.
특히 응답 여부(예/아니오)나 바이러스 검사 결과(음성/양성)와 같이 범주형 변수가 가질 수 있는 값이 두 종류라면 이항변수(Binary Variable)라고 합니다.
범주형 변수는 또한 명목형(Nominal)과 순서형(Ordinal) 변수로 분류할 수 있는데, 동물의 종류나 성별과 같이 범주들간의 순서가 존재하지 않는 경우를 명목형 변수,
선호도나 체중분류(저체중 / 정상 / 과체중 / 비만)와 같이 범주간의 순서가 존재하는 경우를 순서형 변수라고 합니다.
범주형 변수와 달리 수치형(Numerical) 변수는 수치적으로 의미가 있는 값들을 집합으로 하는 측정 척도를 가지는데 키, 몸무게, 발생 건수 등의 예가 있습니다.
여기서 가장 중요한 점은 수치형 변수에 Binning 적용하여 범주화할 수 있다는 사실입니다.
몸무게는 그 자체로는 수치형 변수이지만 만약 아래 그림과 같이 50kg 미만을 Type1, 50kg ~ 70kg를 Type2, 70kg 이상을 Type3라고 한다면 Type1, Type2, Type3의 범주를 가지는 변수는 범주형 변수가 됩니다.
실생활에서 혈당(공복)의 수치를 사용해 정상 / 전당뇨 / 당뇨와 같이 분류하는 것처럼 말이죠.

2. 범주형 자료 분석에 자주 사용되는 분포
범주형 자료 분석에 자주 사용되는 확률분포로는 크게 4가지로 아래와 같습니다.
- Binomial Dist (이항분포) : 관심있는 사건이 발생할 확률이 p이고 n번의 실험을 했을 때, 몇 번의 사건이 발생하였는지
- Multinomial Dist (다항분포) : 두가지 범주를 가지는 이항분포를 확장해 세가지 이상 범주에 관한 분포
- Poisson Dist (포아송분포) : 시간 또는 공간 한 단위에서 사건이 얼만큼 발생했는지
- Normal Dist (정규분포) : 자연에서 주로 보이는 분포로 종모양의 형태를 가짐
이중에서도 특히 이항분포 위주로 살펴보겠습니다.
확률변수 Y가 이항분포를 따를 때, $Y \sim B(n, \pi)$라고 표현하며 확률질량분포(PMF)는 아래와 같습니다.
$$ P(Y=y) = \binom{n}{y}\pi^y \cdot (1-\pi)^{n-y} $$
또한 평균과 분산은 각각 $E[Y] = n\pi$, $Var[Y] = n\pi(1-\pi)$이며, 대표본일때 근사적으로 정규분포를 따르는 것을 보일 수 있습니다.
그리고 모수 $\pi$의 ML 추정량으로는 $\hat{p} = \frac{Y}{n}$을 사용할 수 있으며 $\pi$의 신뢰구간은 다음과 같이 구분할 수 있습니다.

신뢰구간은 예전에 올린 포스팅 https://moogie.tistory.com/134 참고하면 좋겠습니다.
참고로 이항분포는 가질 수 있는 범주가 성공 / 실패 두가지인데, 다항분포는 가질 수 있는 범주를 3가지 이상으로 확장한 분포로 아래와 같은 확률질량분포(PMF)를 보입니다. (단 $\sum n_i = n$이고 $\sum \pi_i = 1$)
$$P(Y_1 = n_1, Y_2 = n_2, \ldots, Y_c = n_c) = \frac{n!}{n_1!\cdot n_2! \cdots n_c!}\pi_1^{n_1}\pi_2^{n_2}\cdots\pi_c^{n_c}$$
3. 문제
[Q1 - Binning] 아래와 같은 glucose 파일이 있다. age는 나이, age_group은 연령대, sex는 성별, glucose는 공복혈당을 나타낸다.
이때, glucose가 100미만 이라면 "Normal", 100 ~ 125라면 "IFG" 126이상이라면 "Diabetes"을 나타내는 glucose_category열을 생성하시오.
glucose.csv
0.09MB

[Q2 - Variable] 교육수준을 다음과 같이 분류하자고 하자. 그렇다면 해당 변수는 수치형 변수인가 범주형 변수인가?
- 중졸 이하인 경우 1
- 고졸 이하인 경우 2
- 대졸 이하인 경우 3
[Q3 - MLE] 이항분포의 모수의 ML 추정량이 $\hat{\pi} = \frac{Y}{n}$임을 보이시오.
[Q4 - CI] 특정 법안에 찬성하는 비율을 조사하기 위해 1239명의 사람 중 512명이 찬성하였다. 이때, 모비율의 95% 신뢰구간을 구하시오.
n = 1239
y1 = 512
binom::binom.confint(x = y1, n = n, conf.level = 0.95)

Wald CI : [0.3858 ~ 0.4406] | Agresti-Coull CI : [0.3861 ~ 0.4408] | wilson CI : [0.3861 ~ 0.4408]
0. Reference
Agresti, A. (2007). Introduction to categorical data analysis (2nd ed.). Hoboken, NJ: Wiley-Interscience.