이번 글은 Khan Acadmey 마지막 단원인 14 ~ 16단원에 해당하는 카이제곱 분포와 검정방법 3가지(적합도, 독립성, 동질성), 분산분석에 대해서 다룬다. 예시로 쉽게 알아보고 Python 코드를 이용해서 적용해보자.


1. 글목차

  • 카이제곱 분포
  • 카이제곱 검정: 적합도, 독립성, 동질성 검정
  • F 분포
  • 분산분석

2. 본문

2.1. 카이제곱 분포

카이제곱분포이란 무엇인가?  표준정규분포를 따르는 $Z \sim N(0,1^{2})$변수의 그림을 떠올려 보자. 

이를 제곱한 분포를 그려보자.  새로운 분포인 $\chi^{2}  = Z^{2}$라고 표현할 수 있다. 표준정규분포는 평균이 0 이고 표준편차가 1인 분포를 따르기 때문에 이를 제곱한 결과는 0에 대부분 쏠려 있을 것이다. 반면  평균이 0 이지만 0을 벗어난 즉, 1,2와 같은 값들이 극히 희박한 확률로 존재할 수있다.  확률변수가 $X$ 1개 이니 자유도는 1로 표현한다. 

확률변수가 1개 이상을 제곱하여 더한 분포도 존재할 수도 있다. $\chi^{2} = Z^{2}_{1} + Z^{2}_{2}... + Z^{2}_{n}$ 단 여러개의 확률변수를 더하기 때문에 그 수가 많아질 수록 $\chi$값의 분포는 좌측으로 이동하게 될 것이다 

변수가 많아질수록 즉, 자유도가 커지는 변화에 따른 분포에 대한 그림을 그릴 수 있고, 분포 별로 확률 그래프도 도출 가능할 것 이다.

 

표는 다음 링크을 참고: https://www.scribbr.com/statistics/chi-square-distribution-table/

 

2.2. 카이제곱 검정  - 적합도 검정

위에서 카이제곱 분포를 설명한 대로 확률 변수의 제곱을 분포에 표현한 것으로 이해할 수 있다. 이를 적용하기 위한 방법이 카이제곱 검정이다. 이때 카이제곱 검정 통계량은 다음 식으로 정의한다. 

$\chi^{2} = \sum^{n}_{i}\frac{(O_{i} - E_{i})^{2}}{E_{i}}$

  • $O_{i}$: 관찰 빈도
  • $E_{i}$: 기대빈도
  • 자유도: $ n - 1$

Q1) 왜 기대 값을 분모로 나누어 정규화할까?

카이제곱 검정에서 확인하고자 하는 바는 관측 값이 기대 값보다 얼마나 차이나는가이다. 만약 기대빈도가 크다면 조금의 오차가 있더라도 이해할 수준으로 관리하는 것이고, 기대 값이 작다면 작은 숫자의 차이에도 민감하게 적용하도록 설정한 것이라고 이해할 수 있다.

Q2) 왜 관측 값과 기대 값를 차에 대한 제곱을 관리할까?

관측 값와 기대 값은 양수가 될 수도 음수가 될 수 도 있다. 단순히 이차이를 더한다면 상쇄될 수 있기 때문에 제곱을 통해서 양수로 변환하는게 첫 번째 목적이다. 다음으로는 제곱은 큰 차이를 더 부풀리는 효과를 가지고 있다. 1의 제곱과 10의 제곱은 변화에 대한 차이가 후자가 더 크다. 이를 이용해서 차이의 크기를 강조하기 위함이 두 번째이다. 세 번째는 제곱하는 방법은 평균에서 이탈을 측정하는 분산(Variance)와 같이 제곱 형태는 통계학에서 자주 사용되는 개념이기 때문이다.

다음은 상점을 매수하려는 상황에서 상점 주인이 주장하는 방문객 비율과 실제 관측한 방문 수로 적합도 검정을 수행하는 예시이다.

  합계
주장하는 방문 비율(%) 10 10 15 20 30 16 100
관측한 방문 수(명) 30 14 34 45 57 20 200
  • 귀무가설($H_{0}$): 관찰된 요일별 방문객 수는 주장된 비율과 차이가 없다.
  • 대립가설 ($H_{1}$) : 차이가 있다.
  • 풀이방법
    • $\chi^{2} = \frac{(30-20)^{2}}{20} + \frac{(14-20)^{2}}{20} + \frac{(34-30)^{2}}{30} + \frac{(45-40)^{2}}{40} + \frac{(57-60)^{2}}{60} + \frac{(20-30)^{2}}{30}$    = 11.442 
      • (월요일부터 토요일까지의 검정통계량 값)
    • 자유도: 6 - 1 = 5
    • $p-value$: 0.043
    • 따라서 주장된 비율과 차이가 있음. 귀무가설 기각. 대립 가설 채택

위 처럼 주어진 기대비율과 실제 관찰된 비율이 얼마나 차이가 나는지 평가하는 것을 적합도 검정(Goodness of fit) 이라 한다. 후술할 독립성 검정은 2가지 변수가 존재해야하는데 반하여 적합도 검정은 1차원 데이터에도 적용할 수 있는 특징을 가지고 있다.

 

import numpy as np
from scipy.stats import chisquare

# 주장하는 방문 비율(%)을 기반으로 기대값을 계산
expected_ratios = np.array([10, 10, 15, 20, 30, 15])
total_visits = 200
expected_counts = (expected_ratios / 100) * total_visits

# 관찰된 방문 수
observed_counts = np.array([30, 14, 34, 45, 57, 20])

# 카이제곱 적합도 검정을 수행
chi2_stat, p_val = chisquare(f_obs=observed_counts, f_exp=expected_counts)

# 결과 출력
print(f"Chi-squared Statistic: {chi2_stat:.3f}") # 11.442
print(f"P-value: {p_val:.3f}") # 0.043

# 결론 도출
alpha = 0.05  # 유의수준
if p_val < alpha:
    print("귀무가설 기각: 관찰된 방문 비율은 주장하는 비율과 다르다.")
else:
    print("귀무가설 채택: 관찰된 방문 비율은 주장하는 비율과 같다.")

 

적합도 검정의 좋은 예시가 있어서 링크달기: 광고 채널별 고객 유입 분석

https://m.blog.naver.com/gksshdk8003/222020037634

 

[SAS] 적합도 검정(goodness of fit test)

안녕하세요. 데이터 과학자를 꿈꾸는 꿈쟁이입니다. 오늘은 카이제곱 검정의 한 유형인 적합도 검정(goodne...

blog.naver.com

 

 

2.2. 카이제곱 검정  - 독립성 검정

적합도 검정이 1개 변수의 기대 값과 관찰 값의 차이를 검증하는 과정이라고 한다면, 독립성 검정은 2가지 변수가 존재할 떄 사용한다. 예컨데 성별과 흡연 여부의 독립성 검정을 위해서 관측된 자료가 다음과 같다고 하자. 

  흡연자 비흡연자 합계
남성 40 60 100
여성 30 70 100
합계 70 130 200

위 합계를 가지고 기대 빈도를 도출 할 수 있다. 전체 인원 200명 중 남여의 비율은 50%으로  남성이면서 흡연하는 사람과 여성이면서 흡연하는 사람은 전체 70명 중 50%인 35명씩 기대값을 가져야한다. 같은 맥락으로 비흡연자로 65명씩 기대값을

    • $\chi^{2}= \frac{(40-35)^{2}}{35} + \frac{(30-35)^{2}}{35} + \frac{(60-65)^{2}}{65} + \frac{(70-65)^{2}}{65}  = 2.1978 $
      • 각각 남성/흡연 + 여성/흡연 + 남성/비흡연 + 여성/비흡연에 대한 카이제곱 통계량
    • 자유도: (행의수 - 1) x (열의수 -1)  = (2-1)*(2-1) = 1
    • $p-value$: 0.138
    • 결론: 유의수준 0.05 하에서 귀무가설을 기각하지 못하므로  남녀간 흡연엔 독립적이다.
import numpy as np
from scipy.stats import chi2_contingency

# 관찰된 데이터: 성별과 흡연 여부에 따른 빈도수
data = np.array([
    [40, 60],  # 남성: 흡연자, 비흡연자
    [30, 70]   # 여성: 흡연자, 비흡연자
])

# 카이제곱 통계량, p-value, 자유도, 기대값을 계산
chi2_stat, p_val, dof, expected = chi2_contingency(data, correction=True)

# 결과 출력
print(f"Chi-squared Statistic: {chi2_stat:.3f}") #1.780
print(f"P-value: {p_val:.3f}") #0.182
print(f"Degrees of Freedom: {dof:.3f}") #1.000
print("Expected frequencies:")
print(expected)
'''
[[35. 65.]
 [35. 65.]]
 '''

# 결론
alpha = 0.05  # 유의수준
if p_val < alpha:
    print("귀무가설 기각: 성별과 흡연 여부는 독립적이지 않다.")
else:
    print("귀무가설 채택: 성별과 흡연 여부는 독립적이다.")

Q) 왜 검정통계량이 손 계산과 다른가?

실제로 scipy를 이용해서 검정을 해보면 correction =True 기본 옵션으로 인하여 검정통계량과 p-value가 손 계산과 다르게 나온다. 이는 연속성 수정방식을 사용하기 때문이다. 이는 카이제곱 분포가 연속형 확률변수에 기인하였지만 실제 데이터는 이산형인 경우가 많기 때문에  검정통계량을 줄임으로써 실제로 귀무가설을 기각할 가능성을 줄이는 방식으로 작동한다. 2x2 교차표(정확히는 자유도가 1일 때)에서는 연속성 수정하는 것이 권장되고 카이제곱 통계량을 계산할때 각 항에 0.5를 뺌으로써 적용한다. 이는 n > 30이면 정규분포를 따른다는 가정처럼 경험적인 수치다. 

다음은 scipy의 chi2_contigency 함수 문서이다.

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.chi2_contingency.html

 

chi2_contingency — SciPy v1.14.0 Manual

In [4], the use of aspirin to prevent cardiovascular events in women and men was investigated. The study notably concluded: …aspirin therapy reduced the risk of a composite of cardiovascular events due to its effect on reducing the risk of ischemic strok

docs.scipy.org

 

 

2.3. 카이제곱 검정  - 동질성 검정

동질성 검정(Test of Homogenetiy)는 서로 다른 두 개 이상 집단에서 동일한 범주형 변수의 분포가 동일한지를 검정하는 방법이다. 귀무가설은 모든 집단에서 특정 변수의 분포가 동일하다는 점으로 설정한다. 기본적으로 독립성 검정과 동일한 방식으로 작동하며 검정의 목적데이터 해석방식에만 차이가 있다.

  독립성 검정
(Test of Independence)
동질성 검정
(Test of Homogeneity)
공통점 카이제곰 검정 사용  
차이점: 목적 두 범주형 변수 간 독립유무를 검정 여러 집단에서 동일한 범주형 분포가 동일한지 검정
차이점: 가설 $H_{0}$: 두 변수는 독립적
$H_{1}$: 두 변수는 독립적이지 않음
$H_{0}$: 모든 집단에서 분포가 동일
$H_{1}$: 적어도 하나의 집단에서 분포가 다름

 

다음은 학교별로 과목에 대한 선호도 조사표이다. 

과목 학교A 학교B 학교C 합계
수학 50 60 55 165
과학 40 45 50 135
문학 30 35 40 105
합계 120 140 145 405
  • 귀무가설$H_{0}$: 각 학교에서 학생들이 선호하는 과목의 분포는 동일
  • 대립가설$H_{1}$: 각 학교에서 학생들의 선호하는 과목의 분포는 동일하지 않다. 

위 관측 값에서 학교A의 수학에 대한 기대 값은 다음과 같이 계산할 수 있다. 

 $E_{\text{수학}, A} = \frac{\text{수학의 전체 학생 수} \times \text{학교 A의 총 학생 수}}{\text{전체 학생 수}} = \frac{165 \times 120}{405} = 48.89
 명$

위 식에 따라 기대값 표는 다음과 같다.(소괄호로 작성)

과목 학교A 학교B 학교C 합계
수학 50(48.89) 60(57.04) 55(59.07) 165
과학 40(40.00) 45(46.67) 50(48.33) 135
문학 30(31.11) 35(36.30) 40(37.60) 105
합계 120 140 145 405
  • 자유도: (행 - 1 ) x (열 -1) = (3 - 1) x (3 - 1) = 4
  • 카이제곱 통계량: 0.817
  • $p-value$: 0.936
  • 귀무가설 채택, 각 학교에서 과목 선호도는 동일하다.

 

import numpy as np
from scipy.stats import chi2_contingency

# 관찰된 데이터: 각 학교에서 학생들이 선호하는 과목의 빈도수
data = np.array([
    [50, 60, 55],  # 수학 선호
    [40, 45, 50],  # 과학 선호
    [30, 35, 40]   # 문학 선호
])

# 카이제곱 통계량, p-value, 자유도, 기대값을 계산
chi2_stat, p_val, dof, expected = chi2_contingency(data)

# 결과 출력
print(f"Chi-squared Statistic: {chi2_stat:.3f}"): 0.817
print(f"P-value: {p_val:.3f}") : 0.936
print(f"Degrees of Freedom: {dof:.3f}") # 0.400
print("Expected frequencies:")
print(expected.round(3))

'''
[[48.889 57.037 59.074]
 [40.    46.667 48.333]
 [31.111 36.296 37.593]]
'''

# 결론
alpha = 0.05  # 유의수준
if p_val < alpha:
    print("귀무가설 기각: 각 학교에서 과목 선호도는 동일하지 않다.")
else:
    print("귀무가설 채택: 각 학교에서 과목 선호도는 동일하다.")

 

2.4. F분포

F분포는 두 개의 카이제곱 분포를 나눈 비율로 그룹 간 차이그룹 내 변동보다 얼마나 큰지를 나타내기 위해서 고안한 분포이다.  그룹 간의 차이가 단순이 우연에 의한 것인지 아니면 유의미한 차이가 있는지 판단하는데 사용된다. 다음은 2 그룹간 자유도에 따른 F분포이다. 

$F = \frac{MSB}{MSW}$

F 통계량은 1보다 크다면, 그룹 간 분산이 그룹 내 분산보다 크다는 것을 의미하며, 이는 그룹간의 평균 차이에 유의미한 차이가 있음을 시사한다. 또는 1에 가깝거나 작다면 그룹 간 평균의 차이가 크지 않으며 이는 유연히 발생한 차이일 가능성을 시사하는 것이다. F 통계량은 분산분석(ANOVA), 회귀분석, 분산의 동질성을 검정하는데 사용한다.

2.5. 분산분석(ANOVA)

분산분석(ANOVA)이란 그룹 간 차이를 평가하기 위한 방법으로 평균의 차이를 분석하는 모수적 통계방법이다. 반면 카이제곱 검정은 비모수적 방법이다.  ANOVA는 두 개 이상의 평균이 서로 다른지 확인하기 위해서 사용된다. 또한 t-검정은 두 그룹 간의 평균을 비교하지만 ANOVA는 세 개 이상의 그룹 간 평균의 차이를 동시에 분석할 수 있다. 

  카이제곱 분산분석
분석 유형 범주형 데이터 연속형 데이터
목적 1. 관찰 값과 기대값의 일치여부(적합도 검정)
2. 두 변수간 독립성
3. 집단 간 동질성 검정
여러 그룹간 평균이 동일한지 검정
가정 분포 가정 필요 없음(비모수적)
관측빈도가 5개 이상 만족
정규 분포 및 등분산 가정 요구(모수적)
예시 성별과 흡연 여부에 대한 독립성 검정 각 교육방법 간 평균 시험 점수 비교, 신약에 따른 혈압 감소량 차이 비교

 

 

 고혈압 신약 A,B,C에 따른 환자들의 혈압감소량을 비교한다고 생각해보자.

신약A 신약B 신약C
5 8 7
7 9 6
8 7 5
6 10 8
7 9 7

F통계량에서 따지는 것은 그룹 내 분산(Within-Group Variance, SSW) 과 그룹 간 분산(Between-Group Variance, SSB) 이다.

그룹 내 분산(SSW)는 각 표본이 그룹의 평균과 얼마나 편차가 있는지가 관심 대상이며 다음과 같이 정의 된다.

$SSW = \sum^{k}_{i=1}\sum^{n_i}_{j=1}(X_{ij}-\bar{X_{i}})^{2}$

  • $X_{ij}$: $i$번째 그룹의 $j$번째 관찰 값
  • $\bar{X_{i}}$: $i$ 번째 그룹의 평균
  • $n_{i}$: $i$번째 그룹의 관찰 값 수

신약 A의 평균 $X_{1}$: 6.6, 신약 B의 평균 $X_{2}$: 8.6, 신약 C의 평균 $X_{3}$: 6.6  

그룹 간 분산(SSB)는 각 그룹이 전체 평균에 대해서 얼마나 벗어나 있는지가 관심 대상이며 다음과 같이 정의 된다.

$ SSB = \sum^{k}_{i=1}n_{i}(\bar{X_i} - \bar{X})^{2}$

전체 평균($\bar{X}$은 7.27이다.

F통계량은 위 SSW, SSB의 값의 비율이며 자유도로 나누어 주어야 한다. 

$F = \frac{MSB}{MSW}$

$MSB = \frac{SSB}{dfB}$

이때 그룹 간 자유도($dfB$)는  전체 표본 갯수 - 1 이된다. 전체 평균을 알고 데이터 14개를 알면 나머지 1개를 자연스럽게 알 수 있기 때문이다.

$MSW = \frac{SSW}{dfW}$

이때 그룹 내 자유도는($dfW$)는 전체 데이터에서 그룹 수를 뺀 값이다($N - k $) 그룹의 평균을 알고 나머지 데이터 4개를 알면 나머지 1개를 알게되며 이를 3 그룹 모두 적용할 수 있기 때문이다. 즉 위의 예시에서는 12가 된다. 

import numpy as np
import scipy.stats as stats

# 예시 데이터: 각 그룹에서 혈압 감소량 (mmHg)
group1 = [5, 7, 8, 6, 7]  # 신약 A
group2 = [8, 9, 7, 10, 9]  # 신약 B
group3 = [7, 6, 5, 8, 7]  # 신약 C

# 세 그룹의 데이터를 배열로 묶기
data = [group1, group2, group3]

# ANOVA 수행
f_statistic, p_value = stats.f_oneway(*data)

# 결과 출력
print(f"F-statistic: {f_statistic:.3f}") # 5.128
print(f"P-value: {p_value:.3f}") #0.025

# 결론 도출
alpha = 0.05  # 유의수준
if p_value < alpha:
    print("귀무가설 기각: 신약 간에 혈압 감소 효과에 차이가 있다.")
else:
    print("귀무가설 채택: 신약 간에 혈압 감소 효과에 차이가 없다.")

 

이번 글에서는 추론통계의 핵심 유의성 검정과 등장하는 개념, 그리고 일반적인 통계방법론을 정리해본다.


1. 글목차

  • 유의성 검정에 필요한 개념
  • 1종오류와 2종오류
  • 유의성 검정 절차
  • 통계검정 절차(Diagram) -연속형 종속변수인 경우, 일반적인 경우

2. 본문

 

2.1. 유의성 검정의 개념

유의성검정은 연구나 실험에서 관찰된 결과가 우연에 의한 것인지 아니면 실제로 의미있는 차이가 존재하는지를 판단한다는 것이다. 

이를 위해 몇가지 기본 개념을 설명하고 진행해야한다. 

  • 귀무가설($H_{0}$): 일반적으로 받아들여지는 사실
  • 대립가설($H_{1}$): 주장하고자 하는 바(귀무가설의 반대)

왜 귀무가설을 상정해야하는가?  수학의 증명방법 중에 귀류법 이라는 것이 있다. 모순에 의한 논증법으로 일단 귀무가설이 사실이라고 치자. 그리고 논리를 전개하다가 모순에 도달하게 되면 대립가설을 채택하게 되고 그렇지 않으면 귀무가설을 지지하게 되는 것이다. 

  • p-value: 관찰된 데이터가 귀무가설 가설이 참일 때 얻어질 확률이다. 
    • p-value가 작다면 귀무가설이 참일때 관찰된 데이터가 발생할 확률이 낮다는 의미다. 이는 우연에 의한 사건으로 보기 어렵다고 판단할 수 있으며, 그때는 귀무가설을 기각하고 대립가설을 채택해야한다. 
    • p-value가 크다면 이는 우연에 의한 사건으로 판단하여 귀무가설을 지지하는 증거가 된다. 

그렇다면 그 p-value의 기준은 얼마로 판단해야하는가? 이를 유의수준(significant level, $\alpha$)이라고 한다. 일반적으로 0.05 즉 5% 를 기준으로 그보다 희박한 확률인가 아닌가가 판단 기준이된다. 

p-value는 증거의 강도를 나타내지만 확실한 결론을 제공하지는 않는다. 이 때문에 유의수준이라고 하는 우리만의 기준을 만들어서 해석한다고 할 수 있다. 또한, 효과의 크기나 중요성을 표현하진 않는다.

 

  • 검정 통계량(test statistic)
    • 검정통계량은 데이터를 단일된 숫자로 요약하여 관찰된 데이터가 귀무가설 하에서 기대되는 것과 얼마나 차이나는 지 평가할 수 있는 척도이다.

 

  • z-검정 통계량
    • 사용조건: 모집단의 표준편차($\sigma$)가 알려져 있는 경우
    • 표본의 크기가 충분히 큰 경우(경험적 기준 n>30)

$z = \frac{\bar{X} - \mu_0}{\frac{\sigma}{\sqrt{n}}}$

 

  • t검정 통계량
    • 모집단의 표준편차($\sigma$)가 알려져 있지 않은 경우
    • 표본 크기가 작은 경우

$t = \frac{\bar{X} - \mu_0}{\frac{s}{\sqrt{n}}}$

  • 카이제곱 검정 통계량

$\chi^2 = \sum \frac{(O_i - E_i)^2}{E_i}$

  • F-검정 통계량

$F = \frac{\text{Between-group variability}}{\text{Within-group variability}} = \frac{\frac{SSB}{df_B}}{\frac{SSW}{df_W}}$

 

 

2.2. 1종 오류와 2종 오류

늘 판단은 틀릴 수 있다. 이를 극복하기 위한 것이 혼동행렬이다. 

판단 \ 실제 상황 귀무가설이 사실 대립가설이 사실
귀무가설을 기각하지 못함 옳은 채택( ($1-\alpha$) 2종 오류($\beta$)
귀무가설을 기각함 1종 오류($\alpha$) 옳은 기각($1-\beta$,  검정력 )

귀무가설은 일반적으로 우리가 받아들여지는 사실이라고 했다. 유의수준을 0.05로 설정하고 꽤나 까다롭게 설정하였는데도 불구하고 판단은 틀릴 수 있다. 정말 우연하게도. 귀무가설이 사실인데도 불구하고 대립가설을 채택하는 상황을 1종오류 ($\alpha$) 라고 한다.  일반적으로 받아들여지는 사실을 바뀐다는 것은 혼란을 불러온다. 우리는 이를 관리하기 위해서 일반적으로 1종오류를 관리한다. 

반면 대립가설이 사실인데도 불구하고 귀무가설을 채택하는 경우를 2종 오류 ($\beta$) 라고 부른다.일반적으로 1종 오류와 2종 오류는 동시에 낮추기 어렵고 상충관계(Trade off)가 존재한다. 귀무가설이 거짓일 때, 이를 옳게 기각할 확률을 검정력(power)라고 하며  $ 1- \beta$로 표현한다.

검정력과 표본크기 계산은 다음 링크를 참조

https://snowgot.tistory.com/entry/DSforS-Chap-3-%ED%86%B5%EA%B3%84%EC%A0%81-%EC%8B%A4%ED%97%98%EA%B3%BC-%EC%9C%A0%EC%9D%98%EC%84%B1-%EA%B2%80%EC%A0%95-34-38

 

(6) DSforS : Chap 3 통계적 실험과 유의성 검정 3.4 ~ 3.8.

1. 목차3.4. 통계적 유의성과 p값3.5. t검정3.6. 다중검정3.7. 자유도3.8. 분산분석  2. 본문3.4. 1종오류와 2종오류1종 오류: 귀무가설이 참인데도 불구하고 귀무가설을 채택하지 않는 오류2종 오류:

snowgot.tistory.com

 

 

2.3. 유의성 검증 절차

유의성 검증 절차는 다음과 같다. 

  • 귀무가설, 대립가설을 설정한다. 
  • 검정 유의수준(1종오류를 관리할 기준)을 세운다. 
  • 검정 방법을 결정한다(구하려는 문제에 따라 적용)
  • 검정 통계량을 계산한다. 
  • 판단

2.4. 통계 방법론 정리 

 11단원에서는 정규분포하에서의 신뢰구간을 구하는 방법에 대해서 논한다. 


1. 글목차

  • 모평균과 모비율이 중요한 이유
  • 모비율 추론
  • 모평균 추론

 

2. 본문

2.1. 모평균과 모비율이 중요한 이유

  • 모평균은 전체 모집단의 평균이다. 우리가 관심있는 변수 (ex 키, 소득, 점수)등에 대한 전체 모집단에 일반적인 수준을 이해하는데 도움이 되는 대표적인 지표이다.
  • 모비율은 전체 모집단에서 발생하는 비율이다.(ex 후보를 지지하는 비율) 
  • 통계학의 중요한 목표 중 하나는 표본으로 부터 모집단에 대한 결론을 도출하는 것이다. 모평균과 모비율에 대한 추정은 이를 기반하기 위한 근거가 될 수 있다. 
  • 또한, 모평균과 모비율은 정확히 아는 것을 불가능에 가깝기 때문에 신뢰구간을 설정함으로서 특정 범위 내에 있는 확률을 제공하게 된다. 
  • 신뢰구간(confidentail Interval)은 모수(모평균 혹은 모집단)에 대한 추정한 값을 중심으로 이 모수가 포함될 것이라고 기대되는 범위이다. 일반적으로 신뢰수준은 95% 혹은 99%로 표현한다.
  • 예컨데 모평균의 95% 신뢰구간이 10과 20사이라고 한다면, 여러 번 분포을 추출하여 동일한 방법으로 신뢰구간을 계산할 때 그 중 95%의 신뢰구간이 실제로 모평균을 포함할 것이라는 의미이다. 

 

2.2. 모비율 추론

2.2.1. 비율 추론의 조건

  1. 표본은 집단에서 무작위로 추출
  2. 표본 크기  $np >= 5$ 이면서 $np(1-p) >= 5$ (즉 사건의 성공 및 실패 횟수가 5회 이상)
    - Khan Academy에서는 10으로 제안하고 있음.
  3. 각 표본의 독립성(일반적으로 비복원 추출시 표본의 크기가 모집단 크기를 10%를 넘지 않을 때)
    위 10%는 절대적인 정해진 수치가 아닌 경험적 가이드라인 임을 주의! 이를 통해 비복원추출에서도 추출의 독립성을 확보하는 것에 목적을 두는 것.

만약 위 조건을 만족하지 않는다면  부트스트래핑 혹은 비모수적인 방법을 고려해야한다. 

seaborn 모듈에서 제공하는 errobar 옵션

 

 위 조건들은 대부분 표본의 크기가 충분히 클 경우 모집단의 분포에 관계 없이 표본 비율(표본평균)의 분포는 정규분포에 근사하게 된다는 중심극한정리(Central Limit Theroy)에 따라 만족된다. 

 

 

2.2.2. 그럼에도 불구하고?

중심극한정리는 강력한 이론이지만 ① 표본의 크기가 작거나 ② 모집단의 분포가 비정규적(비대칭, 첨도가 높음) ③ 이상치가 있는 경우 ④ 모수적 가정이 불확실하여 유연한 분석이 필요할 때 와 같은 이유로  부트스트래핑과 비모수적 방법이 필요할 수 있다. 

특히 부트스트래핑은 흔히 신뢰구간을 표현하기 위한 데이터 사이언스에서 애용하는 방법이므로 한번쯤 확인해보면 좋다. 

https://snowgot.tistory.com/entry/DSforS-Chap-2-%ED%83%90%EC%83%89%EC%A0%81-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D-24-28

 

(3) DSforS : Chap 2 탐색적 데이터분석 2.4 ~ 2.8

1. 목차2.4. 부트스트랩2.5. 신뢰구간2.6. 정규분포2.7. 긴꼬리 분포2.8. 스튜던트 t 분포모수, 통계량을 넘어가서 표본샘플링과 신뢰구간, 분포 등에 대해서 알려주는 단원입니다.  2. 본문2.4. 부트

snowgot.tistory.com

 

 

2.2.1 모비율에 대한 신뢰 구간

$ \hat{p} \pm Z \sqrt{\frac{\hat{p}(1-\hat{p})}{n}}$

  • 모집단에서 특정한 사건이 발생하는 비율 p에 대해 신뢰구간을 구하는 방법
  • $\hat{p}$ : 표본 비율
  • $Z$: 검정통계량

Z 검정 통계량은 가설 검정하에서 표본 비율과 귀무가설 모집단의 비율간 차이가 표준오차와 비교해 얼마나 큰지를 나타내는 지표이다.

$ Z = \frac{\hat{p} - p_0}{\sqrt{\frac{p_0(1 - p_0)}{n}}}$ 

  • $\hat{p}$: 표본 비율
  • $p_{0}$: 귀무가설에서 주장하는 모집단 비율
  • $n$:표본 크기
    (Z 검정에서는 모집단의 분산이 주어져있거나 충분히 큰 표본으로 표본의 분산이 모집단의 분포를 잘 추정한다고 가정 따라서 자유도를 사용하지 않음)

 

 

2.3. 모평균 추론

1. 모평균: 모분산(표준편차)를 알고 있는 경우 

$\overline{x} \pm Z  \frac{\sigma}{\sqrt(n)} $

  • $\overline{x}$: 표본 평균
  • $Z$: 신뢰 수준에 해당하는 $Z$값( 95% : 1.96, 99% : 2.58)
  • $\sigma$: 모집단의 표준 편차
  • $n$: 표본의 크기

하지만 모집단에 대한 데이터 획득이 어려운 상황에서 모평균을 알지 못하여 추정을 하는 것인데 당연히 모분산을 아는 경우도 매우 드물다. 예를 들자면 기계가 생산하는 제품의 결과에 대한 변동이 일정하게 유지되는 경우 과거의 데이터로부터 모분산을 안다고 가정하는 식으로 진행할 수 있다. 

2. 모평균: 모분산(표준편차)을 모르는 경우

$\overline{x} \pm t  \frac{s}{\sqrt(n)} $

  • 이 경우 표본의 표준 편차 $s$를 사용하고 t-분포를 적용한다.
  • $t$: 신뢰구간과 자유도에 따른 t 값(자유도는 n-1)
  • $s$: 표본의 표준 편차

 

2.4. 웹/앱서비스에서의 적용

  • 클릭률(Click Through Rate,CTR) 분석
    • 상황: 특정 광고 배너나 버튼이 노출된 후 사용자가 이를 클릭한 비율을 분석
    • 모비율: 전체 사용자 중 해당 광고를 클릭한 사용자의 비율을 모비율로 추정
    • 예시: 1000명의 노출군 중 150명이 광고를 클릭했다면 전체 사용자에 대한 클릭률을 추정하여 캠페인의 성과를 측정 가능
  • 앱 내 구매율 분석
    • 상황: 앱을 다운로드한 사용자가 실제로 인앱 구매를 진행한 비율
    • 모비율: 다운로드한 사용자 중 구매한 사용자의 비율을 모비율로 추정
    • 예시: 10,000명의 다운로드 사용자 중 500명이 구매했다면 전체 사용자에 대한 구매율 추정
  • 평균 사용시간 분석
    • 상황: 앱 사용자들이 앱을 사용하는 평균 시간을 분석
    • 모평균: 앱에서 보낸 평균시간을 모평균으로 추정
    • 예시: 앱 사용자의 표본 500명의 일일 평균 사용시간이 30분이라며 전체 사용자에 대한 일일 평균 사용시간을 추정하여 사용 패턴 분석
  • 평균 주문 금액 분석
    • 상황: 모바일 쇼핑앱에서 사용자가 한번의 거래에서 소비하는 평균 금액 분석
    • 모평균: 특정 기간동안 발생한 거래의 평균 금액을 모평균으로 추정, 사용자당 수익(ARPU)를 계산
    • 예시: 표본으로 선택한 1000건의 거래에서 평균 주문금액이 $50이라면 전체 거래 평균 금액을 추정
  • 종합 활용: A/B 테스트
    • 모비율: 버튼 디자인의 클릭률 기반 A/B test
    • 모평균: 두 랜딩 페이지에 따른 앱에서 보내는 평균 시간 비교

 

3. 읽어볼만한 글

https://yozm.wishket.com/magazine/detail/1967/

 

사용자 데이터를 효과적으로 분석하는 법 | 요즘IT

사용성 평가나 설문 조사 그리고 인터뷰와 같은 사용자 조사는 고객 관점에서의 사업 기회 발굴과 디자인 개선에 대한 인사이트를 제공해 줍니다. 그렇지만 단순히 사용자 조사로 수집된 데이

yozm.wishket.com

 

이산확확률변수와 연속확률 변수들을 정리해본다.


1. 글목차

  • 이산확률변수
  • 연속확률변수

2. 본문

현실의 세계 문제는 다양하고 복잡하다. 동전을 던지는 실험, 도로에서 발생하는 교통사고의 수, 특정 시간동안 걸려오는 콜 전화의 수 등  다양한 상황을 정확하게 반영하기 위해서 다른 확률 변수가 필요하다고 할 수 있다. 

확률변수는 특정 현상을 모델링하는데 의의미가 있다. 예컨데 포아송 확률변수는 일정 시간 또는 공간에서 발생하는 사건의 수를 모델링하는데 유용한 식으로 말이다. 오늘은 이산확률 변수에 대하서 정리해보자.

2.1. 이산확률변수

- 각 시행마다 성공확률($p$)가 정해져 있을때 시행 횟수 ($n$)회 중에서 성공한 횟수 ($X$)의 도수 분포

  • 평균: $E(X) = np$  혹은 $ E(X) = \sum_{k=0}^{n}{k*Pr(X=k)}$
  • 분산: $Var(X) = npq$ 혹은 $ Var(X) = E(X^{2}) - (E(X})^{2}$ 

위 식을 파이썬을 구현해보자. decimal모듈 이용해 정확한 계산을 해본다.

 

2.2.1. 베르누이 확률변수

  • 베르누이 확률변수(Bernoulli Random Variable)은 성공 실패를 단 두 가지의 가능한 결과를 가지는 실험을 나타내는 확률 변수이다. 
  • 예시: 동전을 던졌을 때 앞면이 나오는 경우, 뒷면이 나오는 경우
  • 분포: 베르누이 분포

2.2.2.이항확률 변수

  • 이항확률 변수(Binomial Random Variable)은 성공과 실패 두가지 가능한 결과를 가지는 실험을 일정 횟수 반복할 때, 그 성공 횟수를 나타내는 확률 변수
  • 독립적인 베르누이 시행을 n번 반복했을 때 성공한 횟수를 나타내는 확률 변수
  • 분포: 이항 분포
  • 조건
    • 각 시행은 실패 혹은 성공
    • 각 시행은 독립적
    • 확률 변수는 고정되어야함(유한한 숫자)
    • 각 시행의 성공 확률은 상수

2.2.3. 기하확률 변수

  • 기하확률변수(Geometric Random Variable)은 독립적인 베르누이 시행을 반복할 때, 첫 번째 성공이 나타낼 때까지의 시행 횟수를 나타내는 확률변수
  • 예시: 6의 나올 때 까지의 주사위를 굴리는 시행
  • 분포: 기하분포

2.2.4. 포아송 확률 변수

  • 포아송 확률변수는 일정 시간 또는 공간에서 발생하는 사건의 수
  • 예시: 특정 시간 동안 전화 교환기에 도착하는 전화의 수
  • 분포: 포아송 분포

2.2.5. 음이항 확률변수

  • 음이항 확률변수(Negative Binomial Random Variable)은 성공확률 $p$를 가지는 독립적인 베르누이 시행에서 $r$번째 성공이 발생할 때 까지 시행 횟수(실패 횟수)를 나타내는 확률 변수
  • 예시: 주사위를 3번 던져 6 나올까지의 던진 횟수
  • 분포: 음이항 분포

2.2.6. 다항 확률 변수

  • 다항 확률변수(Mutinomial Random Variable은 여러 개의 가능한 결과가 존재하는 경우에 각 결과가 나타나는 횟수를 나타내는 확률변수
  • 예시: 주사위를 10번 던져 각각의 면이 나오는 횟수
  • 분포: 다항 분포

2.2.7. 초기하 확률 변수

  • 초기하 확률 변수(Hypergeometric Random Variable)은 집단에서 성공과 실패가 있는 경우 중복없이 추출할 때 성공의 갯수를 나타낸느 확률 변수
  • 예시: 10개 카드 중 4개의 에이스가 있는 카드 덱에서 3장의 카드를 뽑았 을 때, 에이스가 나온느 갯수
  • 분포: 초기하 분포

2.3. 연속확률 변수

  • 확률 밀도 함수(Probability Density Function , PDF)란 연속확률 변수가 특정 값을 가능성을 나타내는 함수 이다. 
  • 특징
  1. 비음수성: $ f(x) >= 0 $
  2. 모든 확률의 합 1 : $\int_{-\infty}^{\infty} f(x) \, dx = 1$
  3. 구간확률 계산은 그래프의 적분 값 : $ \Pr(a \leq X \leq b) = \int_{a}^{b} f(x) \, dx$
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# 정규분포의 매개변수 설정
mu = 0      # 평균 (mean)
sigma = 1   # 표준편차 (standard deviation)

# X값 범위 설정 (평균을 중심으로 -4sigma ~ 4sigma)
x = np.linspace(mu - 4*sigma, mu + 4*sigma, 1000)

# 정규분포의 확률밀도함수 계산
pdf = norm.pdf(x, mu, sigma)

# 그래프 그리기
plt.plot(x, pdf, label=f'Normal Distribution\n$\mu={mu}$, $\sigma={sigma}$')
plt.title('Probability Density Function (PDF)')
plt.xlabel('X')
plt.ylabel('Density')
plt.legend()
plt.grid(True)
plt.show()

2.3.1. 정규확률 변수

  • 정규 확률 변수(Normal Distribution)을 따르는 확률 변수로 연속 확률 변수 중 가장 널리 알려진 분포
  • 예시: 키, 시험 점수 등

2.3.2. 지수확률 변수

  • 지수 확률 분포(Exponential Distribution)을 따르는 확률 변수로 연속 확률 변수 중에서 사건 간의 대기 시간을 모델링하는데 사용
  • 포아송 분포와 밀접관 관련
  • 예시: 반도체 장치의 수명

2.3.3. 카이제곱 확률 변수

  • 카이제곱 분포(Chi-Square Distribution)을 따르는 확률 변수로 정규 분포를 따르는 독립적인 표본들의 제곱합을 따르는 분포
  • 예시: 카이제곱 독립성 검정, 적합성 검정 등

2.3.4. t분포 확률 변수

  •  표본의 분포를 분석할 떄 사용되며 특히 표본의 크기가 작은 경우 사용
  • 예시: 두 집단의 평균비교

2.3.5. F-분포 확률 변수

  • 두 독립적인 카이제곱 분포를 따르는 확률 변수의 비율로 정의
  • 주로 분산분석(ANOVA)에 사용됨
  • 예시: 집단 간 분산의 비교

이번 단원들은 확률, 조합, 순열에 대해서 다룬다. 기본적인 내용이니만큼 간단하게 정리해본다.


1. 글목차

  • 2.1. 순열과 조합
  • 2.2. 확률과 통계 빈출 기호

2. 본문

확률과 통계 과목에서 나오는 2가지 개념은 순열과 조합이다. 

2.1 순열과 조합

  • 순열(Permutation)
    • 정의: 순열은 순서를 고려하여 객채를 배열하는 방법이다. 즉 $n$ 개의 객체 중 $r$개를 선택하여 배열하는 경우의 수를 의미한다. 
    • 공식:

$ P(n, r) = \frac{n!}{(n-r)!}$

 

  • 조합(Combination)
    • 정의: 조합은 순서를 고려하지 않고 객체를 선택하는 방법. 즉 $n$개의 객체 중 $r$개를 순서 없이 선택하는 경우의 수
    • 공식: 

 

$ C(n, r) = \binom{n}{r} = \frac{n!}{r!(n-r)!} $

 

2.2. 확률과 통계에서 빈출 기호

  • 확률변수 (Random Variable): $X$, $Y$
    • 사용 예: 확률변수 $X$ 는 주사위를 던졌을 때 나오는 눈의 수를 나타낸다.
  • 확률 (Probability): $ P(A) $
  • 기댓값 (Expected Value): $ E(X) $ 또는  $\mu$
  • 분산 (Variance): $\sigma^2$, $Var(X)$
  • 표준편차 (Standard Deviation): $\sigma$
  • 확률밀도함수 (Probability Density Function): $f(x)$
  • 누적분포함수 (Cumulative Distribution Function): $F(x)$
  • 이항분포 (Binomial Distribution): $ B(n , p ) $
    • 사용 예: n번의 독립적인 시행에서 각각의 시행이 성공할 확률이 p일 때, 성공의 수는 이항분포 $B(n, p)$
  • 정규분포 (Normal Distribution): $N(\mu, \sigma^{2}) $
    • 사용 예: 평균이 $\mu$이고 분산이 $\sigma^{2}$인 정규분포는 $N(\mu, \sigma^{2}) $ 로 나타낸다.
  • 표본평균 (Sample Mean): $\overline{X}$
    • 사용 예: 표본 $X_1$, $X_2$, ...  $X_n$ 의 표본평균은 $\overline{X}  \frac{1}{n} \sum_{i=1}^{n}{X_i}$로 나타낸다.
  • 표본분산 (Sample Variance): $ S^{2} $
    • 사용 예: 표본 $X_1$, $X_2$, ...  $X_n$ 의 표본분산은 $S^2 = \frac{1}{n-1} \sum_{i=1}^n (X_i - \overline{X})^2$로 나타낸다.
  • 상관계수 (Correlation Coefficient): $\rho$
    • 사용 예: 두 확률변수 $ X $ 와 $ Y $의 상관계수는 $ \rho $ 또는 표본 상관계수 $ r $로 나타낸다.
  • 회귀직선 (Regression Line): $ Y =  a + bX $
    • 사용 예: 두 변수 $ X $ 와 $ Y $의 선형 회귀 관계는 회귀직선 $ Y =  a + bX $

 

선형회귀를 예제를 이용해서 구해보자


1. 글목차

  • 단순선형회귀
  • 다중선형회귀

2. 본문

 

3. 참고

6단원 연구설계 단원에서는 통계학적 질문이 무엇인지, 표본조사의 방법, 통계 연구법의 종류, 실험등에 대해서 배운다. 학부때부터 실험을 많이 진행해왔는데, 빅데이터 산업군에 들어오면서 실험연구에서 진행되는 분석과 유사하면서 다르다고 느껴졌다. 그 구분법이 궁금했었다.이번 글에는 통계 연구법에 대한 분류를 알아본다.


1. 글목차

  • 2.1. 표본연구
  • 2.2.  관찰연구
  • 2.3. 실험연구

2. 본문

양적 연구를의 통계연구법은 표본연구, 관찰연구, 실험연구 3가지로 구분 할 수 있겠다. 

2.1. 표본연구

  • 정의: 표본 연구는 전체 모집단에서 일정한 기준에 따라 선택된 부분집합. 즉 표본을 조사하여 모집단의 특정을 추정하는 연구방법.
  • 특징
    • 표본추출: 모집단에서 표본을 무작위로 추출, 표본 추출 방법이 중요함
    • 추론:  표본의 결과를 바탕으로 모집단의 특성을 추론
    • 대표성: 표본이 모집단을 잘 대표할 때 결과의 신뢰성이 높아짐.
  • 예시
    • 선거 출구조사


2.2. 관찰연구

  • 정의: 연구자가 변수를 조작하지 않고 자연스럽게 발생하는 현상이나 집단을 관찰하여 기록하는 방법. 변수들 간의 관계를 파악하는데 유용하지만 인과관계를 명확히 규정하기 어렵다는 단점. 비실험 연구, 탐색 연구라고도 한다. 
  • 특징
    • 비조작성: 연구자가 독립변수를 조작하지 않음
    • 자연 발생: 연구는 자연스럽게 발생하는 상황이나 현상을 관찰
    • 인과성 부족: 상관관계는 파악할 수 있지만 인과관계를 확정짓긴 어려움
  • 예시
    • 흡연자와 비흡엽자의 건강 상태 비교

 

 

2.3. 실험연구

  • 정의: 변수들 간의 관계를 발견하기 위해 통제된 상황에서 독립변수을 인위적으로 조작하여 종속변수에 어떤 영향을 미치는가를 객관적으로 측정하여 분석하는 연구방법
  • 특징
    • 조작성: 연구자가 독립변수를 조작하여 실험 조건을 설정
    • 통제: 실험 조건을 통제하여 외부 변수 영향을 최소화(ex 무작위 배정밥업)
    • 인과성 명확: 독립변수와 종속변수 간의 인과관계를 밝힐 수 있음
  • 예시
    • A/B  test를 통한 두가지 웹 사이트 디자인 효과 비교
    • 약물 효과를 평가하기 위한 무작위 대조 실험(Randomized Control Trial)

모바일에서 자주 사용하는 A/B test

흔히 통계분석이라고 하면 들 수 있는 예시라고 생각했고 대부분의 공대학생들이 1학년때 배우는 자연과학실험의 기반이 되는 연구법이다. 어렴풋히 첫 수업때 실험연구법을 배웠던 것 같은데 기억이..😊  실험연구에서 중요한 키워드는 무작위 배정이라는 방법으로 Confounder를 제외하는 방법이다.

작년에 데이터분야에서 떠오르는 키워드였던 인과추론도 실험연구이다. 인과추론(Casual Inference)와 예측(prediction)은 서로 다른 개념이다. 인과추론은 말그대로 실험 연구의 한 분야이며, 그 관계를 입증하는데 목적이 있다. 반면 예측은 결과값을 정확하는게 목적이다. 종종 데이터분석을 공부하는 학생들은 예측모델링을 통해 통계분석을 한다고 생각하는데 실제로는 그렇지 않다. 다음 그림에 그 구분이 잘 되어있다. 

H&uuml;nermund, P., Kaminski, J., & Schmitt, C. (2021). Causal Machine Learning and Business Decision Making.&nbsp; Available at SSRN 3867326 .

 

3. 출처

 

데이터과학을 위한 통계 스터디에 이어서 Khan Academy의 확률과 통계 단원을 가볍게 공부해본다.  Khan Academy는 무료로 수학을 배울 수 있는 플랫폼인데 중학교부터 대학교 과정까지 필수수학을 다루며, 영상과 평가 홈페이지가 매우 잘 되어 있다. 본 카테고리에서는 소개와 동시에 확률과 통계에 대한 내용을 정리하고 유의미한 컨텐츠 내용들을 정리해볼 예정이다.

 


1. 글목차

  • 1단원: 범주형 자료 요약하기
  • 2단원: 양적자료를 나타내고 분석하기
  • 3단원: 양적 자료의 요약

 

2. 본문

기본적으로 확률과 통계 과목은 대학교 기초 수준의 내용으로  자료분석부터 시작하는 간단한 내용부터 회귀와 분산분석까지 포함하는 단변량, 다변량 분석의 내용까지을 다룬다. 기본적으로 Quiz과 단원별 테스트가 존재하며 이를 알려주는 약 5분 길이의 Youtube 영상도 있다. 

아래와 같이 진도가 표기되며 문제를 풀 수 있다. 문제 정답 수에 따라 등급이 올라간다. 중간  ⚡ 퀴즈 내용이며 ⭐ 는 단원 테스트이다. 단원테스트까지 완료하면 마스터 👑 배지가 수여된다. 만약 중간에 틀리더라도 다시 공부하여 맞추면 등급을 올릴 수 있다.

각 단원의 내용은 다음과 같다.

  • 1단원: 범주형 자료 분석하기
  • 2단원: 양적 자료를 나타내고 분석하기
  • 3단원: 양적 자료의 요약 

 

2.1. 1단원 범주형 자료 분석하기

1단원인만큼 별 내용이 없다. 그림그래프, 막대그래프, 파이그래프를 종합한 일반적인 자료 해석 문제가 나온다. 난이도는 중학생 정도? 

귀여운 문제들

2.2. 2단원 양적 자료를 나타내고 분석하기

2단원은 이원도수분포표를 읽고 해석하는 소단원과 범주형 자료의 추세를 분석하는 문제가 나온다. 

범주형 자료 추세 분석

이원분석을 하기 위해서 두 사건의 독립이라고 가정하고 기대도수를 입력하는 문제이다. 추후 카이제곱 검정의 이해를 위해서 똑똑하게 배치해논 것 같다는 생각이 들었다. 

2.3. 3단원 양적 자료의 요약

본격적인 기술통계가 등장한다. 평균, 중앙, 최빈값의 개념을 다룬다. 이상치를 배우면서 boxplot, IQR의 개념을 배운다.또한 모집단과 표본의 분산과 표준편차의 개념을 배운다. 

3단원부터는 조금 더 고급진 내용들이 나오는데, 항상 표본분산을 구할때 자유도 n-1로 나누는 이유에 대해서 시각적으로 설명하는 유튜브가 있어서 첨부한다. 사실 이론적인 증명은 아니지만 sampling하면서 n-1로 나눌 때 True Variance와 가까워지는 모습을 실제로 보는게 흥미롭다.

https://www.youtube.com/watch?v=F2mfEldxsPI&t=285s

 

 

3. 결론

처음에는 자료해석문제만 나와서 뜨뜨 미지근 했는데, 중간에 핵심적인 내용도 많이 있어서,  대단원 문제풀기 -> 이후 부족한 내용 Youtubue 보강하기 -> 정리하기 순으로 정리하면 입문자에게 꽤나 괜찮은 플랫폼일 것 같다. 문제를 마냥 풀기엔 심심할 것 같아서 주어진 문제를 코드로 풀고 Github에 올리는 식으로 진행할 예정

https://github.com/bellepoque7/khan_statistics/blob/main/3%EB%8B%A8%EC%9B%90.R

 

2달간 데이터과학을 위한 통계 스터디를 완료했습니다!  무사 마무리를 기념하며 책에 대한 평가와 스터디에 대한 회고를 진행해보았습니다. 100년만의 스터디였는데 뒤돌아보니 안했으면 후회했을 것 같네요!


1. 글 목차

  • 스터디 결성 이유
  • 책 리뷰
  • 스터디 KPT

2. 본문

2.1. 스터디 결성이유

이제 머신러닝을 조금 아는 수준이 되었는데 뭔가 부족한 이런 마음이 한켠에 있었습니다. 그 니즈를 해결하고자 여러 책을 탐색했었는데 21년에 처음 나온 이 책이 눈에 띄더라구요. 1판에는 R코드만 있었는데 2판이 되면서 Python 코드도 추가되었고 통계, 머신러닝, 데이터과학에 대한 다양한 분야를 아우르는 것 같아 깊은 독서를 위해 진행하게 되었습니다. 

2.2. 책 리뷰

2.2.1. 책의 장단점

기본적으로 데이터사이언스를 위한 이론을 제공합니다. 컨텐츠는 EDA, 통계분석, 회귀, 지도-비지도학습을 다룹니다. 단원마다 용어를 설명해주고 읽을 거리를 제시해주고 실습을 위한 코드도 제공해준다는 점이 장점입니다. 

 

하지만 380쪽 남짓한 책에서 데이터 사이언스의 모든 내용과 실습코드까지 정리하긴 확실히 쉽지 않아보입니다. 전체적으로 이 개념을 이렇게 간단히 넘어간다고? 라고 생각하는 부분도 분명 있지만, 한번 데이터과학에 대한 기술을 공부하기 위한 입문자를 위한 책이라면 괜찮을 것 같습니다. 만약 머신러닝을 더 깊게 공부하고 싶다면 비숍의 패턴인식과 기계학습 책을 볼 것 같습니다. 

 

✅ 이런분에게 추천 

  • 기초통계학과 머신러닝 등 전체 데이터사이언스 방법론을 이해하고 싶은 분
  • 데이터사이언스 이론은 있으나 실습코드를 이용해 공부하고 싶은 분

❌ 이런분에게는 비추천

  • 수식으로 정리된 바이블을 원하시는 분
  • 개념 하나하나를 꼭꼭 씹어먹어야 직성이 풀리시는 분 

 

2.2.2. 스터디 팀원들의 후기

배경을 좀 말하자면 1,2번 팀원은 문과로 데이터분석 부트캠프만 참여헀고, 3번 팀원은 정보통신대 & 석사. 그리고 본인은 전공자는 아니지만 5년차 분석가입니다. 

1번 팀원: 나도 헤이해졌지만 초반만큼 심화는 못 공부했는데도 불구하고 책이 불친절했다. 
2번 팀원: 좋았던 점은 최대한 수학적인 부분이나 장벽을 걷어낸점 이다. 수식을 강요되었으면 좀 어려웠을것.
3번 팀원: 부실한설명, 불친절하다. 알고리즘을 1,2, 3, 4  식으로 논문식 설명 추상적이라 아쉽다. 
나: 용어정리 더 읽어볼 것 들이 좋았다. 용두사미식 설명이 좀 있다. 역자들도 지쳤나? 2권이 나와야한다.

 

2.3. 스터디 방법 및 KPT

스터디 Timeline

  • 기간: 2달
  • 빈도: 일주일 2회,각 1-2시간씩
  •  
  • 스터디준비: 스터디 범위를 읽어오되 본인이 관심가는 주제나 용어 기준으로 풀어서 문서형식으로 남기기(Notion, 블로그)
  • 스터디방법: 일일 발표 주제 적기, 화면 공유하며 각자 발표

마지막날 발표리스트

스터디를 해본 결과 KPT는 다음과 같습니다. 

  • Keep
    1. 가장 마음에 들었던 점은 기본 개념에 수식을 열심히 찾아보면서 Latex로 블로그글에 남겼던 점입니다. 하나하나 수식을 뜯어보고 Chatgpt 및 검색을 해가면서 수식이 나타내는 바가 무엇인지 이해하는 부분이 좀 더 방법론을 깊게 다가가는데 도움을 줬습니다. 그 과정에서 개발자를 위한 필수수학 책이 나와서 도움을 좀 받았습니다. 
    2. 기술블로그를 성장시킴에 있어서 SEO를 적용해보고 싶었는데 기본적인 서식 Template를 만들어보았습니다. 가장 상단에 메타컨텐츠를 추가하면서 구조가 잡혀가는 부분이 있어 계속 유지할 생각입니다.

  • Problem
    1. 개인적으로 스터디의 방향성이 "읽어보고 관심 있는 내용 정리"하기 여서 그때 그때 세부 주제를 정했기 때문에 글의 일관성이 부족🤣 하다는 점이 아쉽네요.
    2. 수식으로만 이해하다보니 실제 예시와 코드로 이해하는 부분은 부족했습니다.
  • Try
    • (Problem 1번 보완) 방법론 - 코드 & 시각화 - 실제 예시까지 이어지는 콘텐츠의 개요를 추가 해야겠습니다. 또한 어떤 컨텐츠를 읽을 때 "나는 책의 내용을 수식화 해봐야지"와 같은 컨셉을 잡고 공부해볼 수 있을 것 같습니다.
    • (Problem 2번 보완)  예시와 코드로 구현하려면 조금 고민하는 시간이 필요한데 그럼 스터디의 시간이 너무 많이 투자되어서 지속성이 없는 단점이 생길 수 있을 것 같습니다. 전체 분량이나 실제예시가 필요한 컨텐츠의 기준을 세워야 겠습니다.

3. 마무리

개인적으로는 내가 아는 개념을 수식화하여 정리하는 것이 과정이 꽤나 재밌다고 생각이 들었습니다. 이제 이걸 비즈니스 혹은 도메인에 연결하는 방법을 고민할 차례일 것 같네요. 반면, 선형대수나 기초통계는 늘 공부해도 까먹는다는 걸 느껴서 이어 Khan Academy 공부할 생각입니다. 수식을 알면 더 많은 글을 읽을 수 있고 이해도가 올라가는 경험을 해서 더 가속이 붙네요. 다음에는 통계학 일반 내용으로 연재해보겠습니다.

그럼

이번글은 데이터 과학을 위한 통계 마지막 단원이자 내용인 클러스터링에 대해서 배운다. 크게는 k-평균클러스터링과 계층적 클러스터링, 모델 기반의 클러스터링의 원리와 차이 적용 방법에 대해서 기술한다.


1. 책 목차

  • 7.2. k-평균클러스터링
    • 7.2.1. 간단한예제
    • 7.2.2. k-평균 알고리즘
    • 7.2.3. 클러스터해석
    • 7.2.4. 클러스터 개수 선정
  • 7.3. 계층적 클러스터링
    • 7.3.1.과 간단한 예제
    • 7.3.2. 덴드로그램
    • 7.3.3. 병합 알고리즘
    • 7.3.4. 비유사도 측정
  • 7.4. 모델 기반 클러스터링
    • 7.4.1. 다변량 정규분포
    • 7.4.2. 정규 혼합
    • 7.4.3. 클러스터 개수 결정하기
  • 7.5. 스케일링과 범주형 변수
    • 7.5.1. 변수 스케일링
    • 7.5.2. 지배 변수
    • 7.5.3. 범주형 데이터와 고워거리
    • 7.5.4. 혼납 데이터의 클러스터링 문제

2. 본문

비지도학습(UnSupervised Learning)은 데이터의 레이블(Y변수, 종속변수)가 없는 상황에서 데이터의 패턴이나 구조를 찾는 머신러닝의 한 방법이다. 지도학습과 달리 정답이 없기 때문에 난이도는 높지만 고객 세그멘테이션 분석 등 활용도가 높은 특징이 있다. 대표적으로 전 글에서 다뤘던 차원축소(ex PCA), 군집화(ex k-평균), 연관 규칙 학습(ex 장바구니 분석) 등이 있다. 본 글에서는 군집화에 대해서 다뤄본다.

Classic Machine Learning의 분류

 

2.1. k-평균 클러스터링 알고리즘

클러스터링(Clustering) 군집화의 개념은 측정 가능한 지표를 바탕으로 집단을 묶겠다는 의미이다. 대표적인 클러스터링은 Kmeans 클러스터링이다.  아이디어는 다음과 같다. 

1. 초기 클러스터링 중심 설정

  • k개의 클러스터 수를 선택
  • 무작위로 k 개의 초기 클러스터 중심 $u_{1}, u_{2}, ... u_{k}$ 를 선택

2. 할당 단계

  • 각 데이터 포인트 $x_{i}$를 가장 가까운 클러스터 중심에 할당

$ c_{i} = \arg\min_{j} \| x_{i} - \mu_{j} \|^2$ 

  • $x_{i}$: 데이터 포인트 $i$
  • $\mu_{i}$: 클러스터 $j$의 중심
  • $x_{i} - \mu_{j}$ 는 데이터 포인트와 클러스터 중심 사이의 유클리드 거리
  • $\arg\min_{j}$는 데이터 포인트와 클러스터 중심 들 사이 거리 중 최소 거리를 찾기 위한 인덱스 $j$를 반환한다는 의미

 

3. 업데이트 단계

  • 각 클러스터 $j$에 대해 클러스터에 속한 데이터 포인트의 평균을 계산하여 새로운 클러스터 중심으로 설정

$ \mu_{j} = \frac{1}{|C_{j}|} \sum_{x_{i} \in C_{j}} x_{i}$

 

4. 반복

  • 2-3번을 를 클러스토의 중심 변화가 거의 없을 때 까지 반복

k-평균 클러스터링의 장점은 일반적으로 적용하기 쉽다 하지만 거리기반으로 가까움을 측정하기 때문에 차원이 많을 수록 정확도가 떨어진다. 또한 몇 개의 군집(k)를 선정할 것인지 주관적이며, 평균을 이용하기 때문에 이상치에 취약한 단점으로 가지고 있다.

2.2. 계층적 클러스터링

2.2.1. 계층적 클러스터링 알고리즘

 

계층적 클러스터링(Hierarchical Clustering)은 데이터를 계층 구조로 클러스터링 하는 방법으로 병합형과 분할형이 있다. 일반적인 병합형 계층적 클러스터링은 각 데이터 포인트를 개별 클러스터로 시작하여 점직적으로 클러스터를 병합해 나가는 방법이다. 마치 snake 게임 처럼 데이터를 합쳐 나간다고 생각하면 편하다. 알고리즘은 다음과 같다.

1. 초기화

  • 각 데이터 포인트를 개별 클러스터로 간주. 따라서 n개의 클러스터 존재

2. 거리 계산

  • 모든 클러스트 쌍 거리를 계산(ex 유클리드, 맨해튼, 코사인 유사도 등)

3. 클러스터 병합

  • 가까운 클러스터를 병합 병합된 클러스터의 거리를 다시 계산함. 이때 클러스터간의 거리를 다시 계산하는 방법은 4가지가 있다.
    • 단일 연결법(Single Linkage): 두 클러스터 간의 가장 짧은 거리를 기준으로 병합
    • 완전 연결법(Complete Linkage): 두 클러스터 간의 가장 긴 거리를 기준으로 병합
    • 평균 연결법(Average  Linkage): 두 클러스터 간의 평균 거리를 기준으로 병합
    • 중심 연결법(Centroid  Linkage): 두 클러스터 중심 간의 거리를 기준으로 병합

4. 반복

  • 모든 데이터 포인트가 하나의 클러스터로 병합될 때 까지 2-3단계 방법

5. 덴드로그램 생성

  • 병합과정에서 클러스트의 형성을 시각화한 덴드로그램(dendrogram)*을 생성함.
    *덴드로그램은 클러스터의 형성과 계층 구조를 나타내는 트리 형태의 다이어그램

계층적 클러스터링의 방법 시각화

2.2.2.  덴드로그램

계층적 클러스터링은 트리 모델과 같이 자연스러운 시각적 표현이 가능하며 이를 덴드로그램(Dendrogram)이라고 한다. 흔히 마주할 수 있는 덴드로그램의 대표적인 예시는 생물 분류이다. 이렇게하면 각 군집에 어디에 속하는지 그리고 공통점과 차이점을 볼 수 있는 장점이 있다. 

생물 종 분류

 

덴드로그램은 트리와 동일하게 Node, Branch, Root, Leat 의 구성요소로 이루어져 있다. 

덴드로그램 예시

덴드로그램의 장점은 데이터의 계층적 구조를 직관적으로 파악할 수 있으며 클러스터 수를 시각적으로 설정할 수 있다는 장점이 있다. 위의 예시에서 보면 4가지의 수평 점선을 이용해 4가지 군집을 분류한 것을 볼 수 있다. 하지만  데이터가 크면 덴드로그램에 복잡해지며 수평축은 임의로 설정되는 것이라 절대적 의미를 해석하기 어렵다는 단점이 있다. 

2.3. 모델기반 클러스터링

k-평균과 계층적 클러스터링 방법들은 확률모형에 기대지 않는 휴리스틱한 방법이라고 할 수 있다. 반면 모델기반 클러스터링은 데이터가 특정 확률 분포를 따르는 것으로 가정하여 클러스터링을 수행하는 방법이다. 대표적으로 가우시안혼합모델(Gaussian Mixture Models, GMMs)이 있다. 

2.3.1 GMMs 정의

GMMs이라고 불리는 가우시안 혼합 모델은 말 그대로 정규분포를 여러 개 혼합하여 데이터의 복잡한 분포를 근사하기 위한 머신러닝 알고리즘이다.

GMMs은 가우시안 모델의 합이다.

 

GMMs은 다음과 같은 가정을 한다.

  • 데이터는 여러 개의 가우시안 분포로 부터 생성됨.
  • 각 가우시안 분포는 특정 평균($\mu$)와 공분산행렬($\sum$)을 가지며, 이들의 가중치 합으로 전체 데이터 분포가 형성됨

식으로 풀자면 다음과 같다.

$p(\mathbf{x}) = \sum_{k=1}^{K} \pi_k \mathcal{N}(\mathbf{x}; \mu_k, \Sigma_k)$

  • $ p(\mathbf{x})$: 데이터 포인트 $x$의 확률 밀도 함수 
  • $\pi_k$: 가우시안 분포의 혼합 계수. 각 가우시안 분포가 전체 모델에서 차지하는 비율 . 
    • 단, $\sum_{k=1}^{K}{\pi_{k} = 1}$ 및 $ 0 <= \pi_{k} <= 1$
  • $ {N}(\mathbf{x}; \mu_k, \Sigma_k)$: 평균 $\mu_{k}$와 공분산 행렬 $\Sigma_{k}$를 가지는 $k$번째 가우시안 분포. 데이터 포인트 $ \mathbf{x} $가 $k$번째 가우시안 분포로부터 생성될 확률 밀도를 나타냄
    • $\mu_{k}$: $k$번째 가우시안 분포의 평균 벡터
    • $\Sigma_{k}$: $k$번째 가우시안 분포의 공분산 행렬

일반적인 1차원 정규분포인 경우 $N(\mu, \sigma^{2})$처럼 나타내지만 다차원의 경우 위처럼 ($\Sigma$) 공분산 행렬을 이용한다. GMM을 학습 시킨 다는 것은 주어진 데이터 셋 $\chi = {x_{1}, x_{2}, .. x_{N}} $ 에 대해서 데이터의 확률 $p(x)$를 최대화 하는 매개변수 $\theta = {\pi_{1}, .. \pi{K}, \mu_{1}, .. \mu_{K}, \Sigma_{1}, ... \Sigma_{K}}$ 를 추정하는 것과 같다.

2.3.2 GMMs의 학습방법 - 최대 우도 추정

GMMs을 학습하는 방법에는 최대 우도 추정, 최대 사후 확률 추정, 베이즈 추정, 변분 추청, MCMC 방법이 있다. 그중 최대 우도추정(MLE)는 확률 모델의 매개변수를 최적화 하기 위해서 머신러닝에서 가장 일반적으로 이용되는 방법 중 하나이며 로지스틱회귀에서도 적합하기 위하여 사용된다. 

 

$ L(\mathcal{X}; \theta) = \log p(\mathcal{X}; \theta) = \log \prod_{n=1}^{N} p(\mathbf{x}_n; \theta)$

  • $ L(\mathcal{X}; \theta)$: 로그 가능도 함수(Log-likelihood function). 주어진 $mathcal{X}$와 매개변수 $\theta$에 대한 로그 가능도를 나타난다.
  • $ p(\mathcal{X}; \theta)$: 전체 데이터 $\mathcal{X}$가 매개변수 $\theta$ 하에서 관찰될 확률(우도, likelihood)
  • $ p(x_{n} ; \theta)$: 개별 데이터 포인트 $X_{n}$가 매개 변수 $\theta$에서 관찰될 확률(우도, likelihood)

MLE 방법은 위 식을 최대화하도록 모델을 학습시킨다. GMMS에서는 데이터의 분포 $p(x)$를 $K$개의 가우시안분포의 혼합으로 가정하였으로 GMMs 학습을 위해 최대화해야하는 로그-가능도는 최종적으로 다음과 같다. 

$ L(\mathcal{X}; \theta) = \sum_{n=1}^{N} \log \left( \sum_{k=1}^{K} \pi_k \mathcal{N}(\mathbf{x}_n; \mu_k, \Sigma_k) \right)$ 

우리의 목적은 $L(\mathcal{X}, \theta)$를 최대화하는 $\pi_{k}, \mu_{k}, \Sigma_{k}$를 찾는 것이다. $K$개의 가우시안 분포마다 있으므로 매개변수는 총 $3K$가 된다. 결국 $L(\mathcal{X}; \theta)$를 최대화하는 매개변수를 찾는다는 것은 주어진 데이터가 나타내는 분포를 가장 잘 근사하는 모델 매개변수를 찾는 다는 것이다. 하지만 로그함수 내에 가우시안 분포의 합이 존재하여 MLE방법으로는 직접적으로 매개변수를 찾기 어렵다. 따라서 EM 알고리즘이 필요해졌다.

2.3.3. GMMs의 학습방법 2 -  EM 알고리즘

GMMs는 주어진 데이터에 대해서 모델의 파라미터(평균,공분산 행렬, 혼합계수)를 추정하는 과정이다. 일반적으로 기대값-최대화(EM)알고리즘을 사용하며 절차는 다음과 같다. 

  1. 초기화
    • 초기 매개변수 $\theta = (\pi_{k}, \mu_{k}, \Sigma_{k})$를 설정
  2. Expectation 단계: 현재 파라미터 추정치를 바탕으로 각 데이터 포인트가 각 가우시안 분포에 속할 확률(책임도)을 계산
    • $ \gamma(z_{nk}) = \frac{\pi_k \mathcal{N}(x_n \mid \mu_k, \Sigma_k)}{\sum_{j=1}^{K} \pi_j \mathcal{N}(x_n \mid \mu_j, \Sigma_j)} $

책임도는 각 데이터 포인트가 특정 클러스터에 속할 확률을 계산하여 이는 k-평균 클러스터링이 하는 하드 클러스터링이 아닌 소프트 클러스터링을 한다고 말한다.

 

3. Maximization 단계: 책임도를 바탕으로 파라미터를 업데이트

  • 새로운 혼합 계수: $  \pi_k = \frac{1}{N} \sum_{n=1}^{N} \gamma(z_{nk}) $
  • 새로운 평균: $ \mu_k = \frac{\sum_{n=1}^{N} \gamma(z_{nk}) x_n}{\sum_{n=1}^{N} \gamma(z_{nk})}$
  • 새로운 공분산: $ \Sigma_k = \frac{\sum_{n=1}^{N} \gamma(z_{nk}) (x_n - \mu_k)(x_n - \mu_k)^T}{\sum_{n=1}^{N} \gamma(z_{nk})}$ 

자세히보면 혼합 계수(모델의 가중치)는 각 가우시안 분포가 전체 데이터에서 차지하는 비율을 나태난다. 또한 평균은 책임도로 가중된 가중 평균으로 계산되며, 공분산은 각 클러스터에 데이터 포인터의 책임도로 가중된 공분산이다. 

위 과정을 수렴할 때까지 반복한다.  굉장히 복잡해 보이는데 간략하게 요약하자면

  1. $K$개의 가우시안 분포가 혼합되어 있으므로 기존 MLE 방법으로는 모델의 파라미터를 직접 추정하는데 어렵다.
  2. 이를 이용해 기대값- 최대화(E-M) 알고리즘을 사용한다. 
    1. E단계에서는 각 데이터 포인트가 각 가우시안 분포에 속할 확률을 계산하며 이를 책임도라고 한다. 
    2. M단계에서는 책임도를 이용하여 혼합계수, 평균, 공분산을 계산한다.

 

2.3.4. GMMs의 Python 구현

import numpy as np
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture

# 샘플 데이터 생성
np.random.seed(0)
X = np.random.randn(300, 2)

# GMM 모델 피팅
gmm = GaussianMixture(n_components=3, random_state=0)
gmm.fit(X)

# 클러스터 할당 및 중심 계산
labels = gmm.predict(X)
centroids = gmm.means_

# 시각화
plt.scatter(X[:, 0], X[:, 1], c=labels, s=40, cmap='viridis')
plt.scatter(centroids[:, 0], centroids[:, 1], s=100, c='red')
plt.title('GMM Clustering')
plt.show()

 

 

2.4. 클러스터링 평가 지표

2.4.1. Elbow 메소드

elbow메소드는 클러스터 수 k를 변화시키면서 각 k에 대한 비용함수를 계산하며 최적의 k를 선정하는 방법이다. 일반적으로 비용함수는 SSE(sum of Squared Error)를 사용하며 군집 수 가 증가함에 따라(즉 k가 증가함에 따라) SSE가 급격히 감소하다가 완만해지는 팔꿈치 지점을 찾아 최적의 클러스터 k 수를 찾게 된다. 절차는 다음과 같다. 

 

  1. 클러스터 수행
  2. 각 k에 대해서 SSE 계산

$ \text{SSE} = \sum_{i=1}^{n}min_{\mu_{j}} \| x - \mu_i \|^2$

3. k와 SSE를 그래프로 그려서, SSE의 감소가 완만해지는 지점 찾기 

하지만 k값의 정하는 것을 도움을 주는 방법이지 데이터에 따라 Elbow 지점이 명확하지 않을 수 있을 수 있다는 점을 알아두면 좋다. 그밖에도 Calinski-Harabasz Index(군집 내 응집도와 군집 간 분리도 동시 고려) Davis-Bouldin Index(각 클러스터 분산과 클러스터 간의 거리 비율 평가), Dunn Index(클러스터간의 최소 거리와 내 최대 거리 평가) 하는 방법 들이 있다.  

2.4.2. 실루엣 계수

비지도 학습 특성상 답이 없기 떄문에 평가를 하긴 어렵다. 하지만 군집화가 잘되었다는 평가로 다른 군집간의 거리는 멀리, 동일한 군집끼리는 가까이 있다는 아이디어로 지표를 만들어 볼 수 있다. 이를 실루엣 계수(silhouette analysis)로 평가할 수 있다.

$S(i) = \frac{b(i) - a(i)}{max(a(i)),b(i))}$, $단 i 는 데이터$

  • $S(i)$ 가 1에 가까울수록 잘 클러스터링 됨
  • $S(i)$ 가 0에 가까울수록 데이터가 두 클러스터의 경계에 있음
  • $S(i)$ 가 -1에 가까울수록 데이터 포인트가 잘못 클러스터링 됨 

실루엣 계수는 k-평균 클러스터링 뿐 아니라 계층적 클러스터링, DBSCAN, GMM 등 클러스터링 알고리즘에 적용할 수 있다. 

 

3. 출처

 

 

+ Recent posts