데이터 분석가:Applied Data Analytics

데이터 기반 의사결정을 위한 확률 및 분포 4-1]

데이터분석 2025. 3. 5. 12:59

모수 검정(Parametric Test)

모수 검정(Parametric Test)은 모집단이 특정한 확률 분포(주로 정규 분포)를 따른다고 가정하고 수행하는 통계적 검정 방법이다. 이러한 검정은 모집단의 평균, 분산 등과 같은 모수(parameter) 를 추정하고 비교하는 데 초점을 맞춘다.


1. 모수 검정의 특징

  1. 확률 분포 가정
    • 모집단이 특정한 분포(주로 정규 분포)를 따른다고 가정한다.
  2. 데이터 크기
    • 일반적으로 표본 크기가 크거나(보통 30개 이상), 모집단이 정규성을 만족해야 한다.
  3. 모수 사용
    • 모집단의 평균(μ), 분산(σ²) 등의 모수를 추정하고 비교한다.
  4. 강력한 검정력
    • 주어진 가정이 충족될 경우, 비모수 검정보다 더 강력한 검정력을 가진다.

2. 대표적인 모수 검정 종류

검정 종류  /  사용 목적  / 예시

t-검정 (t-test) 두 집단의 평균 비교 독립표본 t-검정, 대응표본 t-검정
분산 분석 (ANOVA, Analysis of Variance) 세 개 이상의 그룹 평균 비교 일원 분산 분석(One-way ANOVA), 이원 분산 분석(Two-way ANOVA)
회귀 분석 (Regression Analysis) 변수 간 관계 분석 선형 회귀 분석, 다중 회귀 분석
z-검정 (z-test) 모집단의 평균 비교 (표본 수가 클 때) 단일표본 z-검정, 두 집단 z-검정

독립표본 t-검정 vs 대응표본 t-검정 비교

비교  항목  /  독립표본 t-검정  /  대응표본 t-검정

비교 대상 서로 독립적인 두 집단 같은 집단의 전후 비교
예제 A/B반 성적 비교, 남녀 키 비교 다이어트 전후 체중 비교
표본 수 두 개의 독립된 표본 필요 같은 표본에서 두 번 측정
오차 감소 없음 개인별 차이를 통제하여 분석 오차 감소
통계적 검정 t=X1ˉ−X2ˉ표준오차t = \frac{\bar{X_1} - \bar{X_2}}{\text{표준오차}} t=DˉsDnt = \frac{\bar{D}}{\frac{s_D}{\sqrt{n}}}

결론

두 집단 평균 비교 시 독립표본 t-검정과 대응표본 t-검정이 맞다.
독립표본 t-검정: 서로 독립된 두 집단(예: A/B 테스트, 남녀 비교)
대응표본 t-검정: 같은 집단에서 전/후 비교(예: 다이어트 전후 비교)


3. 모수 검정을 사용할 때 주의할 점

  1. 정규성 검토 필요
    • 모집단이 정규 분포를 따른다는 가정을 충족해야 한다.
    • Shapiro-Wilk Test, Kolmogorov-Smirnov Test 등을 이용하여 정규성을 검토할 수 있다.
  2. 등분산성(Variance Homogeneity) 확인
    • 두 집단 이상의 분산이 동일하다는 가정이 필요하다.
    • Levene’s Test, Bartlett’s Test 등을 이용하여 검토 가능하다.
  3. 표본 크기 고려
    • 표본 크기가 작을 경우, 정규성 가정이 위배될 가능성이 있다.
    • 이럴 경우 비모수 검정(Non-parametric test)을 고려해야 한다.

4. 모수 검정 vs 비모수 검정

구분 모수 검정 (Parametric Test) 비모수 검정 (Non-parametric Test)

가정 정규 분포 가정 필요 정규 분포 가정 없음
데이터 유형 연속형 데이터 (Interval, Ratio) 순위 데이터, 범주형 데이터 가능 (Ordinal, Nominal)
검정력 높은 검정력 (가정 충족 시) 상대적으로 낮음
예시 t-검정, ANOVA, 회귀 분석 Wilcoxon 검정, Mann-Whitney U 검정, Kruskal-Wallis 검정

5. 언제 모수 검정을 사용할까?

  • 데이터가 정규 분포를 따르는지 확인한 후, 정규성이 만족되면 모수 검정을 사용한다.
  • 표본 수가 충분히 클 경우(보통 30개 이상), 중심극한정리에 의해 정규성을 가정할 수 있으므로 모수 검정을 고려할 수 있다.
  • 모집단의 평균, 분산 등의 모수를 비교하는 것이 목표라면 모수 검정을 사용하는 것이 적절하다.

6. 실제 적용 예제 (Python 코드)

python
복사편집
import scipy.stats as stats

# 두 집단의 샘플 데이터
group1 = [23, 25, 28, 21, 22, 27, 24, 26, 29, 30]
group2 = [31, 33, 30, 35, 32, 34, 29, 28, 36, 37]

# 독립표본 t-검정 (두 집단 평균 비교)
t_stat, p_value = stats.ttest_ind(group1, group2)

print(f"t-통계량: {t_stat:.3f}, p-값: {p_value:.3f}")

# p-value < 0.05 이면 유의미한 차이가 있다고 판단


7. 정리

  1. 모수 검정은 모집단이 특정 분포(주로 정규 분포)를 따른다고 가정하는 검정 방법이다.
  2. 대표적인 모수 검정에는 t-검정, ANOVA, 회귀 분석, z-검정 등이 있다.
  3. 정규성 및 등분산성 가정이 충족되는지 확인한 후 사용해야 한다.
  4. 표본 크기가 작거나 정규성 가정을 만족하지 못할 경우 비모수 검정을 고려해야 한다.


비모수 검정(Non-Parametric Test)

비모수 검정(Non-Parametric Test)은 모집단이 특정한 확률 분포(예: 정규 분포)를 따른다고 가정하지 않고 수행하는 통계적 검정 방법이다. 즉, 데이터의 분포에 대한 가정이 없거나 최소한의 가정만을 필요로 한다.


1. 비모수 검정의 특징

  1. 분포에 대한 가정 없음
    • 모집단이 정규 분포를 따를 필요가 없음.
    • 데이터가 왜곡되었거나, 이상치가 많을 때 유용함.
  2. 순위(rank) 기반 검정
    • 대부분의 비모수 검정은 데이터의 크기 순서를 기반으로 하여 분석을 수행.
    • 즉, 개별 수치보다 데이터 간 순위 차이를 활용함.
  3. 적용 범위가 넓음
    • 연속형뿐만 아니라 서열형(ordinal) 데이터에도 적용 가능.
    • 표본 크기가 작을 때도 사용할 수 있음.
  4. 검정력(Statistical Power)이 낮음
    • 모수 검정보다 일반적으로 검정력이 낮아, 차이를 검출하는 능력이 떨어질 수 있음.

2. 대표적인 비모수 검정 종류

검정 종류 사용 목적 대응되는 모수 검정

Mann-Whitney U 검정 두 독립 집단의 중앙값 비교 독립표본 t-검정
Wilcoxon 부호 순위 검정 두 대응 표본의 중앙값 비교 대응표본 t-검정
Kruskal-Wallis 검정 세 개 이상의 독립 집단 비교 일원분산분석(ANOVA)
Friedman 검정 세 개 이상의 반복 측정된 데이터 비교 반복측정 분산분석(Repeated Measures ANOVA)
카이제곱 검정 (Chi-Square Test) 범주형 데이터의 독립성/적합도 검정 없음 (비모수 검정)
Kolmogorov-Smirnov 검정 한 집단의 분포가 특정 분포(정규 분포 등)와 일치하는지 검정 정규성 검정

3. 언제 비모수 검정을 사용할까?

  • 데이터가 정규 분포를 따르지 않을 때
    • 예: 모집단이 치우친 분포를 가지거나 이상치가 많을 경우.
  • 데이터의 크기가 작을 때 (n < 30)
    • 작은 표본에서는 정규성을 만족하지 않을 가능성이 높음.
  • 순위 데이터(Ordinal Data)를 사용할 때
    • 예: "매우 좋음, 좋음, 보통, 나쁨, 매우 나쁨"과 같은 서열 척도 데이터.
  • 이상치(Outlier)의 영향을 줄이고 싶을 때
    • 평균보다는 중앙값을 비교하는 것이 더 적절할 경우.

4. 대표적인 비모수 검정 방법과 예제 (Python 코드 포함)

① Mann-Whitney U 검정 (독립된 두 집단 비교)

  • 독립된 두 집단의 중앙값 차이를 비교.
  • 독립표본 t-검정(t-test)와 대응됨.
python
복사편집
import scipy.stats as stats

# 두 집단의 샘플 데이터 (정규성을 따르지 않는 경우)
group1 = [23, 25, 28, 21, 22, 27, 24, 26, 29, 30]
group2 = [31, 33, 30, 35, 32, 34, 29, 28, 36, 37]

# Mann-Whitney U 검정 수행
u_stat, p_value = stats.mannwhitneyu(group1, group2, alternative='two-sided')

print(f"U-통계량: {u_stat}, p-값: {p_value}")

  • p-value < 0.05이면 두 집단의 중앙값 차이가 유의미하다고 해석.

② Wilcoxon 부호 순위 검정 (대응 표본 비교)

  • 같은 집단에서 측정 전후 비교(예: 전후 테스트 점수 비교).
  • 대응표본 t-검정과 유사.
python
복사편집
# Wilcoxon 부호 순위 검정
pre_test = [88, 75, 92, 85, 79]
post_test = [90, 78, 95, 83, 80]

stat, p_value = stats.wilcoxon(pre_test, post_test)

print(f"Wilcoxon 검정 통계량: {stat}, p-값: {p_value}")

  • p-value < 0.05이면 두 시점의 차이가 유의미하다고 해석.

③ Kruskal-Wallis 검정 (세 개 이상의 독립 집단 비교)

  • 독립적인 세 집단 이상의 중앙값 차이를 검정.
  • 일원분산분석(ANOVA)과 유사.
python
복사편집
# 세 개의 그룹 데이터
group1 = [23, 25, 28, 21, 22, 27]
group2 = [31, 33, 30, 35, 32, 34]
group3 = [41, 45, 42, 43, 46, 40]

# Kruskal-Wallis 검정
stat, p_value = stats.kruskal(group1, group2, group3)

print(f"Kruskal-Wallis 검정 통계량: {stat}, p-값: {p_value}")

  • p-value < 0.05이면 적어도 한 그룹의 중앙값이 다름.

④ 카이제곱 검정 (범주형 데이터 분석)

  • 두 범주형 변수 간 독립성을 검정.
python
복사편집
import numpy as np

# 관측된 데이터 (행렬 형태)
observed = np.array([[10, 20], [30, 40]])

# 카이제곱 검정 실행
chi2, p_value, dof, expected = stats.chi2_contingency(observed)

print(f"카이제곱 통계량: {chi2}, p-값: {p_value}")

  • p-value < 0.05이면 두 변수 간 연관성이 있다고 해석.

5. 모수 검정 vs 비모수 검정 비교

기준 모수 검정 (Parametric Test) 비모수 검정 (Non-Parametric Test)

가정 정규 분포 가정 필요 분포 가정 없음
데이터 유형 연속형 (Interval, Ratio) 순위형(Ordinal), 범주형(Nominal) 데이터도 가능
검정력 더 높음 (정규성 가정 충족 시) 낮음 (모수 검정보다 덜 민감)
이상치에 대한 민감도 이상치에 민감 이상치에 덜 민감
적용 예 t-검정, ANOVA, 회귀 분석 Mann-Whitney U, Kruskal-Wallis, Wilcoxon 검정

6. 정리

  1. 비모수 검정은 데이터가 특정 분포(정규 분포)를 따른다고 가정하지 않는 검정 방법이다.
  2. 순위 기반 검정을 사용하므로 이상치 영향을 덜 받으며, 표본 크기가 작아도 사용할 수 있다.
  3. 대표적인 비모수 검정으로 Mann-Whitney U, Wilcoxon, Kruskal-Wallis, 카이제곱 검정 등이 있다.
  4. 정규성을 만족하지 않는다면 모수 검정보다 비모수 검정을 고려하는 것이 좋다.

 


검정 통계량(Test Statistic) 개념 정리

검정 통계량(Test Statistic)은 가설 검정을 수행할 때 표본 데이터로부터 계산된 값으로, 귀무가설(𝐻₀)과 대립가설(𝐻₁) 중 어느 것이 더 적절한지를 판단하는 기준이 되는 값이다.

이 값은 표본 데이터의 특성을 반영하며, 특정 확률 분포(정규 분포, t-분포, 카이제곱 분포 등)를 따른다.


1. 검정 통계량의 특징

  1. 가설 검정에서 중심적인 역할을 수행
    • 귀무가설이 참이라는 가정 하에서, 표본 데이터가 얼마나 극단적인지를 측정하는 값이다.
  2. 특정한 분포를 따름
    • 어떤 검정을 수행하느냐에 따라 t-분포, z-분포, 카이제곱 분포, F-분포 등을 따르게 된다.
  3. p-값 계산의 기초가 됨
    • 검정 통계량을 통해 p-value를 계산하고, 이를 기준으로 가설 기각 여부를 결정한다.
  4. 표본 크기 및 변동성에 따라 값이 변함
    • 표본의 크기가 크거나 변동성이 낮을수록 검정 통계량의 신뢰성이 높아진다.

2. 주요 검정 통계량 종류 및 공식

검정 방법에 따라 다양한 검정 통계량이 존재하며, 대표적인 검정 통계량은 다음과 같다.

① z-통계량 (Z-score, 표준 정규 분포)

  • 모집단의 분산(σ²)을 알고 있을 때, 모집단 평균 μ와 표본 평균 𝑋̄를 비교하는 데 사용.
  • 일반적으로 표본 크기가 30개 이상일 때 사용.Z=nσXˉ−μZ=Xˉ−μσnZ = \frac{\bar{X} - \mu}{\frac{\sigma}{\sqrt{n}}}
    • Xˉ\bar{X}Xˉ : 표본 평균
    • μ\muμ : 모집단 평균
    • σ\sigmaσ : 모집단 표준편차
    • nnn : 표본 크기
    예제 (Python)
  • import scipy.stats as stats # z-검정 실행 (예: 표본 평균이 100, 모집단 평균이 95, 모집단 표준편차가 10, 표본 크기 30)
    z_score = (100 - 95) / (10 / (30 ** 0.5)) p_value = 1 - stats.norm.cdf(z_score) print(f"Z-통계량: {z_score:.3f}, p-값: {p_value:.3f}")
  • 공식:

② t-통계량 (t-score, t-분포)

  • 모집단의 분산(σ²)을 모를 때, 표본의 표준편차(s)로 대체하여 사용.
  • 표본 크기가 작을 때(n<30n < 30n<30) 주로 사용.t=nsXˉ−μt=Xˉ−μsnt = \frac{\bar{X} - \mu}{\frac{s}{\sqrt{n}}}
    • sss : 표본 표준편차
    예제 (Python)
  • import numpy as np
    from scipy import stats sample = [88, 92, 85, 95, 91] t_stat, p_value = stats.ttest_1samp(sample, 90) # 모집단 평균 90과 비교
    print(f"t-통계량: {t_stat:.3f}, p-값: {p_value:.3f}")
  • 공식:

③ 카이제곱(χ²) 통계량 (Chi-Square)

  • 범주형 데이터에서 기대값과 실제 관찰값의 차이를 비교할 때 사용.
  • 독립성 검정, 적합도 검정 등에 사용됨.χ2=∑E(O−E)2χ2=∑(O−E)2E\chi^2 = \sum \frac{(O - E)^2}{E}
    • OOO : 관측값(Observed Value)
    • EEE : 기대값(Expected Value)
    예제 (Python)
  • import numpy as np observed = np.array([[50, 30], [20, 40]]) # 관측된 데이터chi2,p_value, dof,
    expected = stats.chi2_contingency(observed)
    print(f"Chi-Square 통계량: {chi2:.3f}, p-값: {p_value:.3f}")
  • 공식:

④ F-통계량 (F-statistic, F-분포)

  • 세 개 이상의 그룹 간 평균 비교 (ANOVA 검정) 시 사용.
  • 분산 분석(ANOVA)에서 두 개 이상의 집단의 평균이 동일한지 여부를 판단.F=그룹 내 분산(Within Group Variance)그룹 간 분산(Between Group Variance)F=그룹 간 분산(Between Group Variance)그룹 내 분산(Within Group Variance)F = \frac{\text{그룹 간 분산(Between Group Variance)}}{\text{그룹 내 분산(Within Group Variance)}}
    python
    복사편집
    group1 = [23, 25, 28, 21, 22]
    group2 = [31, 33, 30, 35, 32]
    group3 = [41, 45, 42, 43, 46]
    
    f_stat, p_value = stats.f_oneway(group1, group2, group3)
    
    print(f"F-통계량: {f_stat:.3f}, p-값: {p_value:.3f}")
    
    
  • 예제 (Python)
  • 공식:

3. 검정 통계량과 p-값의 관계

  • 검정 통계량이 클수록 귀무가설을 기각할 가능성이 높아짐.
  • p-값(p-value) 은 검정 통계량을 기반으로 계산되며, p-값이 0.05(α)보다 작으면 귀무가설을 기각함.

검정 통계량 의미

작음 귀무가설 채택 가능성이 높음
귀무가설 기각 가능성이 높음

4. 요약 정리

검정 통계량 적용 상황 대응되는 검정

Z-통계량 (Z-score) 모집단 분산(σ²)을 알고 있을 때, 표본 평균 비교 Z-검정
T-통계량 (T-score) 모집단 분산을 모를 때, 소표본 비교 T-검정 (t-test)
χ² (Chi-Square) 범주형 데이터 분석, 독립성 검정 카이제곱 검정
F-통계량 (F-statistic) 세 개 이상의 그룹 평균 비교 ANOVA 검정

5. 결론

  1. 검정 통계량(Test Statistic)은 표본에서 계산된 값으로, 가설 검정에서 중요한 역할을 한다.
  2. 검정 통계량은 특정 확률 분포(Z-분포, t-분포, χ²-분포, F-분포 등)를 따르며, 가설 검정의 기준이 된다.
  3. p-값과 함께 사용하여 귀무가설을 기각할지 여부를 결정한다.
  4. 검정 방법에 따라 적절한 검정 통계량을 선택해야 한다.

신뢰구간(Confidence Interval, CI) 개념 정리

1. 신뢰구간(Confidence Interval, CI)이란?

  • 모집단의 평균(𝜇)이나 비율(𝑝) 등의 모수를 추정할 때, 표본을 이용하여 계산한 값이 일정 확률(신뢰수준) 내에서 포함될 것으로 예상되는 범위를 의미한다.
  • 예를 들어, "95% 신뢰구간이 (45, 55)"라는 것은 모집단의 평균이 45에서 55 사이에 있을 확률이 95%라는 의미이다.

2. 신뢰구간의 특징

  1. 신뢰수준(Confidence Level, CL)에 따라 범위가 달라짐
    • 일반적으로 90%, 95%, 99%를 많이 사용하며, 신뢰수준이 높을수록 신뢰구간도 넓어진다.
    • 예: 95% 신뢰구간 > 90% 신뢰구간
  2. 표본의 크기(n)가 클수록 신뢰구간이 좁아짐
    • 표본이 많아질수록 모집단을 더 정확히 추정할 수 있기 때문.
  3. 표준편차(𝜎)가 클수록 신뢰구간이 넓어짐
    • 데이터가 많이 분산되어 있을수록 불확실성이 증가하기 때문.

3. 신뢰구간 계산 공식

신뢰구간은 일반적으로 다음 공식으로 계산된다.

① 모집단의 표준편차(𝜎)를 아는 경우 (Z-분포 사용)

Xˉ±Zα/2×σn\bar{X} \pm Z_{\alpha/2} \times \frac{\sigma}{\sqrt{n}}

Xˉ±Zα/2×n

σ

  • Xˉ\bar{X}Xˉ : 표본 평균
  • Zα/2Z_{\alpha/2}Zα/2 : Z-분포의 신뢰수준에 해당하는 값 (예: 95% 신뢰구간 → Z=1.96)
  • σ\sigmaσ : 모집단의 표준편차
  • nnn : 표본 크기

② 모집단의 표준편차(𝜎)를 모르는 경우 (T-분포 사용)

Xˉ±tα/2,df×sn\bar{X} \pm t_{\alpha/2, df} \times \frac{s}{\sqrt{n}}

Xˉ±tα/2,df×n

s

  • tα/2,dft_{\alpha/2, df}tα/2,df : 자유도(df = n-1)를 고려한 t-값
  • sss : 표본 표준편차

③ 비율(𝑝)에 대한 신뢰구간 (예: 여론조사)

p^±Zα/2×p^(1−p^)n\hat{p} \pm Z_{\alpha/2} \times \sqrt{\frac{\hat{p} (1-\hat{p})}{n}}

p^±Zα/2×np^(1−p^)

  • p^\hat{p}p^ : 표본 비율
  • nnn : 표본 크기

4. 신뢰구간 예제 (Python 코드)

① 평균 신뢰구간 (모집단 표준편차 모를 때, t-분포 사용)

python
복사편집
import numpy as np
import scipy.stats as stats

# 샘플 데이터
data = [23, 25, 28, 21, 22, 27, 24, 26, 29, 30]
n = len(data)  # 표본 크기
mean = np.mean(data)  # 표본 평균
std_err = stats.sem(data)  # 표준 오차

# 95% 신뢰구간 계산 (t-분포 사용)
confidence = 0.95
t_value = stats.t.ppf((1 + confidence) / 2, df=n-1)
margin_of_error = t_value * std_err
ci_lower = mean - margin_of_error
ci_upper = mean + margin_of_error

print(f"95% 신뢰구간: ({ci_lower:.2f}, {ci_upper:.2f})")

② 비율에 대한 신뢰구간 (예: 여론조사)

python
복사편집
# 가정: 표본 중 60%가 특정 후보를 지지하고, 표본 크기는 1000명
p_hat = 0.6  # 표본 비율
n = 1000  # 표본 크기
confidence = 0.95  # 95% 신뢰구간

# Z 값 설정 (95% 신뢰구간 → Z=1.96)
z_value = stats.norm.ppf((1 + confidence) / 2)

# 표준 오차 계산
std_error = np.sqrt((p_hat * (1 - p_hat)) / n)

# 신뢰구간 계산
ci_lower = p_hat - z_value * std_error
ci_upper = p_hat + z_value * std_error

print(f"95% 신뢰구간: ({ci_lower:.3f}, {ci_upper:.3f})")


5. 신뢰구간과 유의수준(α)의 관계

  • 신뢰구간과 유의수준(α)는 상호 보완적인 개념이다.
  • 신뢰수준(Confidence Level, CL) = 1 - 유의수준(α)예: 95% 신뢰구간이면 유의수준 α = 0.05 (즉, 5%의 확률로 틀릴 가능성이 있음)

신뢰수준 유의수준(α) Z-값

90% 0.10 1.645
95% 0.05 1.960
99% 0.01 2.576

6. 신뢰구간 해석

  1. "95% 신뢰구간이 (45, 55)"란?
    • "모집단 평균이 45에서 55 사이에 있을 확률이 95%다."
    • "같은 방법으로 여러 번 표본을 추출하면, 95%의 경우 신뢰구간이 모집단 평균을 포함할 것이다."
  2. 신뢰수준이 높을수록 신뢰구간은 넓어진다.
    • 90% 신뢰구간 < 95% 신뢰구간 < 99% 신뢰구간
    • 신뢰성을 높이면 불확실성을 줄이기 위해 범위를 넓혀야 하기 때문.
  3. 표본 크기가 커질수록 신뢰구간은 좁아진다.
    • 큰 표본을 사용할수록 모집단에 대한 추정이 더 정확해지므로, 신뢰구간이 좁아진다.

7. 신뢰구간 vs 가설검정

구분 신뢰구간 (CI) 가설검정 (Hypothesis Testing)

목적 모집단 모수(평균, 비율 등)의 범위 추정 특정한 가설(𝐻₀)을 검정
결과 특정 범위 (예: 45~55) p-값 (예: p = 0.03)
해석 "평균이 이 범위 내에 있을 것이다" "귀무가설을 기각/채택할 것이다"
  • 신뢰구간에 기각값이 포함되지 않으면 귀무가설을 기각할 수 있음예: 평균이 100인지 검정하는데 95% 신뢰구간이 (90, 98)라면, 100을 포함하지 않으므로 유의미한 차이가 있다고 판단.

8. 요약

  1. 신뢰구간(Confidence Interval, CI)은 모집단의 모수를 추정하는 데 사용되는 범위이다.
  2. 주어진 신뢰수준(예: 95%)에서, 해당 범위가 모집단 값을 포함할 확률을 의미한다.
  3. 표본 크기가 커지면 신뢰구간이 좁아지고, 신뢰수준이 높아지면 신뢰구간이 넓어진다.
  4. Z-분포, t-분포, 카이제곱 분포 등을 이용해 계산할 수 있으며, 평균과 비율에 대한 신뢰구간을 구할 수 있다.
  5. 가설검정과 신뢰구간은 밀접한 관계가 있으며, 신뢰구간을 통해 가설검정의 결과를 유추할 수 있다.

귀무가설(Null Hypothesis, H0H_0H0) & 대립가설(Alternative Hypothesis, H1H_1H1)


1. 가설검정이란?

  • 가설검정(Hypothesis Testing)표본 데이터를 이용하여 모집단에 대한 가설을 검증하는 통계적 방법이다.
  • 검정할 가설은 두 가지로 나뉜다:
    1. 귀무가설(Null Hypothesis, H0H_0H0)
      • "차이가 없다" 또는 "효과가 없다"는 기본 가설
      • 예: "새로운 약이 기존 약과 효과 차이가 없다."
    2. 대립가설(Alternative Hypothesis, H1H_1H1)
      • 귀무가설이 틀렸을 가능성을 의미하는 가설
      • 예: "새로운 약이 기존 약보다 효과가 있다."

2. 귀무가설(H0H_0H0)

  • "차이가 없다" 또는 "특별한 효과가 없다"는 기본 가정
  • 보통 평균이 같다, 변화가 없다, 연관성이 없다는 형태로 표현됨
  • 예시:
    • "두 집단의 평균이 같다" → H0:μ1=μ2
    • H0:μ1=μ2H_0: \mu_1 = \mu_2
    • "새로운 마케팅 전략이 매출에 영향을 미치지 않는다" → H0:변화 없음
    • H0:변화 없음H_0: \text{변화 없음}

3. 대립가설(H1H_1H1)

  • 귀무가설이 틀렸다고 주장하는 가설
  • "차이가 있다", "효과가 있다", "변화가 있다"는 식으로 표현됨
  • 예시:
    • "두 집단의 평균이 다르다" → H1:μ1=μ2
    • H1:μ1≠μ2H_1: \mu_1 \neq \mu_2
    • "새로운 마케팅 전략이 매출을 증가시킨다" → H1:매출 증가
    • H1:매출 증가H_1: \text{매출 증가}

4. 가설검정의 예시

① 평균 비교 예시 (A/B 테스트) : 리소스가 많이 든다.

  • 가정: 신제품의 평균 만족도(μ)가 기존 제품과 동일한지 검정

가설 설명

귀무가설 H0H_0H0​ 신제품과 기존 제품의 평균 만족도 차이가 없음 → H0:μ신제품=μ기존 제품H_0: \mu_{\text{신제품}} = \mu_{\text{기존 제품}}H0​:μ신제품​=μ기존 제품​
대립가설 H1H_1H1​ 신제품의 평균 만족도가 기존 제품보다 다름 → H1:μ신제품≠μ기존 제품H_1: \mu_{\text{신제품}} \neq \mu_{\text{기존 제품}}H1​:μ신제품​=μ기존 제품​

② 신약 효과 검정 예시

가설 설명

귀무가설 H0H_0H0​ 신약과 기존 약의 효과 차이가 없음 → H0:μ신약=μ기존 약H_0: \mu_{\text{신약}} = \mu_{\text{기존 약}}H0​:μ신약​=μ기존 약​
대립가설 H1H_1H1​ 신약의 효과가 기존 약보다 큼 → H1:μ신약>μ기존 약H_1: \mu_{\text{신약}} > \mu_{\text{기존 약}}H1​:μ신약​>μ기존 약​

5. 양측검정 vs 단측검정

가설검정은 검정 방향에 따라 양측검정단측검정으로 나뉜다.

구분 귀무가설 H0H_0H0​ 대립가설 H1H_1H1​ 예시

양측검정 μ1=μ2\mu_1 = \mu_2μ1​=μ2​ μ1≠μ2\mu_1 \neq \mu_2μ1​=μ2​ 신약 효과가 기존 약보다 크거나 작을 수 있음
단측검정 (우측) μ1=μ2\mu_1 = \mu_2μ1​=μ2​ μ1>μ2\mu_1 > \mu_2μ1​>μ2​ 신약 효과가 기존 약보다 클 것이라고 예상
단측검정 (좌측) μ1=μ2\mu_1 = \mu_2μ1​=μ2​ μ1<μ2\mu_1 < \mu_2μ1​<μ2​ 신약 효과가 기존 약보다 작을 것이라고 예상
SMALL

양측검정 (Two-tailed Test)

  • 차이가 있는지만 검정 (방향 없음)
  • 예: "새로운 교육 방식이 기존 교육보다 다를까?" (H1:=)
  • H1:≠H_1: \neq

단측검정 (One-tailed Test)

  • 특정 방향으로 차이가 있는지를 검정
  • 예: "새로운 교육 방식이 기존 교육보다 더 효과적일까?" (H1:>)
  • H1:>H_1: >

6. 가설검정 과정

  1. 귀무가설 (H0H_0H0)과 대립가설 (H1H_1H1) 설정
  2. 유의수준 (α\alphaα, 보통 0.05) 설정
  3. 검정통계량 (z-값, t-값 등) 계산
  4. p-값과 유의수준 비교
    • p<0.05p < 0.05p<0.05 → 귀무가설 기각 (통계적으로 유의미함)
    • p≥0.05p \geq 0.05p≥0.05 → 귀무가설 채택 (유의미한 차이 없음)

7. Python 예제 (t-검정을 이용한 평균 비교)

python
복사편집
import numpy as np
import scipy.stats as stats

# 두 그룹 데이터
group1 = [88, 75, 92, 85, 79]
group2 = [90, 78, 95, 83, 80]

# 독립표본 t-검정
t_stat, p_value = stats.ttest_ind(group1, group2)

print(f"t-통계량: {t_stat:.3f}, p-값: {p_value:.3f}")

# 결과 해석
if p_value < 0.05:
    print("귀무가설 기각: 두 그룹의 평균 차이가 유의미함")
else:
    print("귀무가설 채택: 두 그룹의 평균 차이가 유의미하지 않음")


8. 귀무가설 기각과 오류

오류 유형 설명

제1종 오류(Type I Error, α) 실제로는 참인 귀무가설(H0H_0H0​)을 잘못 기각함
제2종 오류(Type II Error, β) 실제로는 거짓인 귀무가설(H0H_0H0​)을 기각하지 못함
  • 유의수준(α): 제1종 오류를 허용하는 확률 (보통 0.05)
  • 검정력(1 - β): 제2종 오류를 피할 확률 (높을수록 좋음)

9. 요약 정리

  1. 귀무가설 (H0H_0H0): "차이가 없다" 또는 "효과가 없다"는 기본 가설.
  2. 대립가설 (H1H_1H1): "차이가 있다" 또는 "효과가 있다"는 가설.
  3. 양측검정: 방향이 없는 차이를 검정 (H1:=)
  4. H1:≠H_1: \neq
  5. 단측검정: 특정 방향의 차이를 검정 (H1:> 또는 H1:<)H1:<H_1: <
  6. H1:>H_1: >
  7. p-값이 0.05 미만이면 귀무가설 기각, 0.05 이상이면 채택
  8. 제1종 오류(α): 잘못된 기각, 제2종 오류(β): 잘못된 채택

가설을 어떻게 세웠는지 예측 엔진은 어떤걸 썼는지? 
전처리 잘해야되고, 가설, 예측, 인사이트, 코드는 노션보다는 결과값이 있는 깃허브에 정리추천

표본크기는 동일해야 비교가됨.
P-value (0.05 회사마다 다르다)했을때 해석

 


t-검정 (t-test) 개념 정리


1. t-검정이란?

  • 두 집단의 평균을 비교하여 차이가 통계적으로 유의미한지 검정하는 방법.
  • 모집단의 표준편차(𝜎)를 모를 때 사용.
  • 표본 크기가 30개 미만일 때 주로 사용되며, 정규성을 가정.

2. t-검정의 종류

유형비교 대상귀무가설 (H0H_0)예시

단일표본 t-검정 표본 평균 vs 모집단 평균 μ=μ0\mu = \mu_0 학생들의 평균 점수가 80점과 같은가?
독립표본 t-검정 두 독립 집단의 평균 비교 μ1=μ2\mu_1 = \mu_2 A반과 B반의 평균 점수가 같은가?
대응표본 t-검정 같은 집단의 전/후 변화 비교 μ전=μ후\mu_{\text{전}} = \mu_{\text{후}} 다이어트 전후 체중 비교

3. t-검정 공식

① 단일표본 t-검정 (One Sample t-test)t=Xˉ−μ0snt = \frac{\bar{X} - \mu_0}{\frac{s}{\sqrt{n}}}

  • Xˉ\bar{X} : 표본 평균
  • μ0\mu_0 : 모집단 평균
  • ss : 표본 표준편차
  • nn : 표본 크기

② 독립표본 t-검정 (Independent t-test)t=X1ˉ−X2ˉsp2(1n1+1n2)t = \frac{\bar{X_1} - \bar{X_2}}{\sqrt{s_p^2 \left( \frac{1}{n_1} + \frac{1}{n_2} \right)}}

  • sp2s_p^2 (공통 표준편차)

sp2=(n1−1)s12+(n2−1)s22n1+n2−2s_p^2 = \frac{(n_1 - 1)s_1^2 + (n_2 - 1)s_2^2}{n_1 + n_2 - 2}③ 대응표본 t-검정 (Paired t-test)t=DˉsDnt = \frac{\bar{D}}{\frac{s_D}{\sqrt{n}}}

  • Dˉ\bar{D} : 두 측정값의 차이 평균
  • sDs_D : 차이의 표준편차
  • nn : 표본 크기

4. t-검정의 가정

  1. 정규성(Normality): 표본이 정규분포를 따라야 함 (표본이 작을 경우 중요).
  2. 독립성(Independence): 독립표본 t-검정에서는 두 집단이 서로 독립적이어야 함.
  3. 등분산성(Homoscedasticity): 독립표본 t-검정에서는 두 집단의 분산이 같아야 함 (Levene’s Test로 확인 가능).

5. Python 코드 예제

① 단일표본 t-검정

import numpy as np
import scipy.stats as stats

# 데이터 (학생 성적)
data = [78, 82, 85, 80, 79, 88, 91, 76, 84, 83]

# 단일표본 t-검정 (모집단 평균 80점과 비교)
t_stat, p_value = stats.ttest_1samp(data, 80)

print(f"t-통계량: {t_stat:.3f}, p-값: {p_value:.3f}")

# 해석
if p_value < 0.05:
    print("귀무가설 기각: 평균이 80과 다름")
else:
    print("귀무가설 채택: 평균이 80과 유의미한 차이 없음")

② 독립표본 t-검정

A반과 B반 학생 점수 데이터
group1 = [88, 75, 92, 85, 79]
group2 = [90, 78, 95, 83, 80]

# 독립표본 t-검정 (equal_var=False: 등분산 가정 안함)
t_stat, p_value = stats.ttest_ind(group1, group2, equal_var=False)

print(f"t-통계량: {t_stat:.3f}, p-값: {p_value:.3f}")

# 해석
if p_value < 0.05:
    print("귀무가설 기각: 두 그룹 평균 차이가 유의미함")
else:
    print("귀무가설 채택: 두 그룹 평균 차이가 없음")

③ 대응표본 t-검정 (전후 비교)

# 다이어트 전후 체중 데이터
before = [70, 72, 68, 75, 73]
after  = [68, 69, 66, 73, 70]

# 대응표본 t-검정
t_stat, p_value = stats.ttest_rel(before, after)

print(f"t-통계량: {t_stat:.3f}, p-값: {p_value:.3f}")

# 해석
if p_value < 0.05:
    print("귀무가설 기각: 다이어트 전후 체중 차이가 유의미함")
else:
    print("귀무가설 채택: 다이어트 효과가 유의미하지 않음")

6. p-값 해석

  • p < 0.05 → 귀무가설 기각 (통계적으로 유의미한 차이가 있음)
  • p ≥ 0.05 → 귀무가설 채택 (유의미한 차이 없음)

7. t-검정 vs Z-검정 비교

구분  /                                                     t-검정   /                                                           Z-검정

표본 크기 n<30n < 30 n≥30n \geq 30
모집단 표준편차(𝜎) 모를 때 알 때
사용 분포 t-분포 정규분포(Z-분포)
적용 예 소규모 실험, A/B 테스트 대규모 여론조사

8. 요약

  1. t-검정은 모집단의 표준편차를 모를 때, 표본을 이용해 평균 비교를 수행하는 방법.
  2. 세 가지 유형이 있음
    • 단일표본 t-검정: 모집단 평균과 비교
    • 독립표본 t-검정: 두 개의 독립적인 그룹 비교
    • 대응표본 t-검정: 같은 집단의 전후 비교
  3. t-값과 p-값을 이용하여 귀무가설 기각 여부를 판단 (p < 0.05이면 기각)
  4. 정규성, 독립성, 등분산성 가정이 중요하며, 필요하면 사전 검토 수행.

분산분석(ANOVA, Analysis of Variance) 개념 정리


1. 분산분석(ANOVA)이란?

  • 세 개 이상의 그룹 간 평균 차이를 비교하는 통계 기법
  • t-검정은 두 그룹의 평균 비교에 사용되지만, ANOVA는 3개 이상 그룹의 평균 비교에 사용됨.
  • 종속변수(연속형)와 독립변수(범주형) 간의 관계를 분석할 때 사용.

2. 분산분석의 원리

  • 그룹 간 평균 차이를 검정하는 방법으로, 그룹 간 분산(Between-group variance)과 그룹 내 분산(Within-group variance)의 비율을 비교하여 유의미한 차이가 있는지 판단.
  • 검정통계량으로 F-통계량을 사용하며, p-값을 보고 귀무가설을 기각할지 결정.

ANOVA의 기본 가정

  1. 정규성(Normality): 각 그룹의 데이터가 정규분포를 따라야 함.
  2. 등분산성(Homogeneity of Variance): 모든 그룹의 분산이 같아야 함 (Levene's Test로 확인 가능).
  3. 독립성(Independence): 각 그룹의 샘플이 서로 독립적이어야 함.

3. 분산분석의 종류

종류 설명 예제

일원분산분석 (One-way ANOVA) 한 개의 독립변수(집단)에 따른 평균 차이 분석 다이어트 방법(A, B, C)에 따른 체중 감소량 비교
이원분산분석 (Two-way ANOVA) 두 개의 독립변수(요인)에 따른 평균 차이 분석 운동 종류(요가, 헬스)와 식단(고단백, 저탄수)에 따른 체중 감소 비교
반복측정 분산분석 (Repeated Measures ANOVA) 같은 집단에서 여러 번 측정된 값의 평균 비교 같은 사람의 다이어트 전후 3시점(1개월, 2개월, 3개월) 체중 비교

4. 분산분석(ANOVA) 공식

① 분산분석 기본 개념

  • 총제곱합(TSS, Total Sum of Squares): 전체 데이터의 변동성

TSS=∑i=1n(Xi−Xˉ)2TSS = \sum_{i=1}^{n} (X_i - \bar{X})^2

TSS=i=1∑n(Xi−Xˉ)2

  • 그룹 간 제곱합(SSB, Sum of Squares Between Groups): 그룹 간 평균 차이

SSB=∑j=1knj(Xˉj−Xˉ)2SSB = \sum_{j=1}^{k} n_j (\bar{X}_j - \bar{X})^2

SSB=j=1∑knj(Xˉj−Xˉ)2

  • 그룹 내 제곱합(SSW, Sum of Squares Within Groups): 그룹 내부의 변동성

SSW=∑j=1k∑i=1nj(Xij−Xˉj)2SSW = \sum_{j=1}^{k} \sum_{i=1}^{n_j} (X_{ij} - \bar{X}_j)^2

SSW=j=1∑ki=1∑nj(Xij−Xˉj)2

  • F-통계량(F-statistic) 공식

F=그룹 간 분산 (MSB)그룹 내 분산 (MSW)F = \frac{\text{그룹 간 분산 (MSB)}}{\text{그룹 내 분산 (MSW)}}

F=그룹 내 분산 (MSW)그룹 간 분산 (MSB)

  • MSB (Mean Square Between) = SSB / (k-1)
  • MSW (Mean Square Within) = SSW / (N-k)
  • k = 그룹 수, N = 전체 샘플 수

5. Python 예제 (One-way ANOVA)

python
복사편집
import numpy as np
import scipy.stats as stats

# 세 그룹의 데이터 (체중 감소량)
group_A = [2.5, 3.0, 2.8, 3.5, 3.2]
group_B = [3.8, 3.9, 4.0, 4.1, 3.7]
group_C = [5.0, 5.2, 4.8, 5.1, 5.3]

# 일원분산분석 수행
f_stat, p_value = stats.f_oneway(group_A, group_B, group_C)

print(f"F-통계량: {f_stat:.3f}, p-값: {p_value:.3f}")

# 결과 해석
if p_value < 0.05:
    print("귀무가설 기각: 세 그룹 간 평균 차이가 유의미함")
else:
    print("귀무가설 채택: 세 그룹 간 평균 차이가 없음")


6. 이원분산분석(Two-way ANOVA)

  • 두 개의 독립변수가 있는 경우 사용.
  • 예: 운동 종류(요가, 헬스)와 식단(고단백, 저탄수화물)에 따른 체중 감소 차이 분석
python
복사편집
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols

# 데이터 생성
df = pd.DataFrame({
    '운동': ['요가', '요가', '요가', '헬스', '헬스', '헬스'],
    '식단': ['고단백', '고단백', '저탄수', '고단백', '저탄수', '저탄수'],
    '체중감소': [2.5, 3.0, 3.2, 4.0, 3.8, 4.5]
})

# 이원분산분석 수행
model = ols('체중감소 ~ C(운동) + C(식단) + C(운동):C(식단)', data=df).fit()
anova_table = sm.stats.anova_lm(model, typ=2)

print(anova_table)


7. 분산분석 결과 해석

  • F-통계량이 클수록 그룹 간 차이가 크다는 의미.
  • p-값이 0.05 미만이면 귀무가설 기각 → 그룹 간 평균 차이가 있음.
  • p-값이 0.05 이상이면 귀무가설 채택 → 그룹 간 평균 차이가 없음.

8. 분산분석과 t-검정 비교

구분 t-검정 분산분석(ANOVA)

비교 대상 2개의 그룹 평균 비교 3개 이상의 그룹 평균 비교
통계량 t-통계량 F-통계량
p-값 해석 p < 0.05 → 차이 있음 p < 0.05 → 그룹 간 차이 있음
등분산 가정 필요 (독립표본 t-검정) 필요

9. 사후분석(Post-hoc Test)

  • ANOVA에서 p-값이 유의미할 경우, 어떤 그룹이 차이를 보이는지 추가 분석 필요.
  • Tukey HSD (Honest Significant Difference) 검정이 대표적.
python
복사편집
from statsmodels.stats.multicomp import pairwise_tukeyhsd

# Tukey 사후분석
posthoc = pairwise_tukeyhsd(
    endog=np.concatenate([group_A, group_B, group_C]),  # 데이터 합치기
    groups=['A']*5 + ['B']*5 + ['C']*5,  # 그룹명
    alpha=0.05)

print(posthoc)


10. 요약

  1. ANOVA(분산분석)는 세 개 이상의 그룹 평균 비교에 사용됨.
  2. 일원분산분석(One-way ANOVA): 한 개의 독립변수에 대한 평균 비교.
  3. 이원분산분석(Two-way ANOVA): 두 개의 독립변수에 대한 평균 비교.
  4. F-통계량을 사용하며, p-값이 0.05 미만이면 그룹 간 차이가 유의미함.
  5. 차이가 있을 경우 Tukey HSD 등의 사후분석을 수행해야 함.
  6. 등분산성, 정규성 등의 가정을 만족해야 신뢰할 수 있음.

카이제곱 검정(Chi-Square Test) 개념 정리


1. 카이제곱 검정(Chi-Square Test)이란?

  • 범주형(명목형, 범주형) 데이터 간의 관계를 검정하는 통계 방법.
  • 데이터가 특정한 기대값과 유의미한 차이가 있는지 확인하는 데 사용됨.
  • 대표적으로 독립성 검정적합도 검정이 있음.

2. 카이제곱 검정의 종류

검정 유형 목적 예제

적합도 검정 (Goodness of Fit Test) 샘플 분포가 기대 분포와 일치하는지 확인 한 도시의 인구 분포가 예상 비율과 같은가?
독립성 검정 (Test for Independence) 두 범주형 변수 간 연관성이 있는지 검정 흡연 여부와 폐암 발생 간의 관계가 있는가?
동질성 검정 (Test for Homogeneity) 서로 다른 모집단에서 동일한 분포를 따르는지 검정 지역별 선호 브랜드가 동일한가?

3. 카이제곱 검정 공식

① 카이제곱(χ²) 통계량 계산 공식

χ2=∑(O−E)2E\chi^2 = \sum \frac{(O - E)^2}{E}

χ2=∑E(O−E)2

  • OOO : 관측값(Observed Value)
  • EEE : 기대값(Expected Value)

해석

  • χ² 값이 클수록 실제 데이터와 기대값 간 차이가 크다는 의미 → 귀무가설 기각 가능성 증가
  • p-값이 0.05 미만이면 귀무가설 기각 (즉, 유의미한 차이 존재)

4. 카이제곱 검정 예제 (Python 코드 포함)

① 적합도 검정(Goodness of Fit)

  • 한 도시의 인구 분포가 예상 비율과 일치하는지 검정.
python
복사편집
import numpy as np
import scipy.stats as stats

# 관측값(Observed)
observed = np.array([50, 30, 20])  # 실제 조사된 인구 분포

# 기대값(Expected, 예: 예상 비율이 [40%, 35%, 25%] 일 때)
expected = np.array([40, 35, 25]) * sum(observed) / 100  # 전체 인구 수 기준으로 변환

# 카이제곱 적합도 검정 수행
chi2_stat, p_value = stats.chisquare(observed, expected)

print(f"Chi-Square 통계량: {chi2_stat:.3f}, p-값: {p_value:.3f}")

if p_value < 0.05:
    print("귀무가설 기각: 인구 분포가 예상과 다름")
else:
    print("귀무가설 채택: 인구 분포가 예상과 유사")


② 독립성 검정(Test for Independence)

  • 흡연 여부와 폐암 발생 간 관계 검정 (2x2 교차표 사용)
python
복사편집
import numpy as np
import scipy.stats as stats

# 2x2 교차표 (흡연 여부 vs 폐암 발생)
#                폐암 발생  |  폐암 없음
#  ---------------------------------
#  흡연자         30       |   70
#  비흡연자       10       |   90

observed = np.array([[30, 70], [10, 90]])

# 카이제곱 독립성 검정 수행
chi2_stat, p_value, dof, expected = stats.chi2_contingency(observed)

print(f"Chi-Square 통계량: {chi2_stat:.3f}, p-값: {p_value:.3f}")

if p_value < 0.05:
    print("귀무가설 기각: 흡연 여부와 폐암 발생 간 유의미한 관계 있음")
else:
    print("귀무가설 채택: 흡연 여부와 폐암 발생 간 관계 없음")


5. 귀무가설과 대립가설 설정

① 적합도 검정

가설 설명

귀무가설 (H0H_0H0​) 샘플 데이터가 기대 분포와 일치함
대립가설 (H1H_1H1​) 샘플 데이터가 기대 분포와 다름

② 독립성 검정

가설 설명

귀무가설 (H0H_0H0​) 두 범주형 변수 간 연관성이 없음 (독립적)
대립가설 (H1H_1H1​) 두 범주형 변수 간 연관성이 있음 (상관 관계 존재)

6. 카이제곱 검정의 가정

  1. 샘플 크기가 충분히 커야 함
    • 모든 기대 빈도(E)가 5 이상이어야 함 (5 미만이면 Fisher’s Exact Test 사용).
  2. 데이터는 독립적이어야 함
    • 같은 사람이 여러 번 포함되면 안 됨.

7. 카이제곱 검정 vs t-검정 vs ANOVA

비교 항목 카이제곱 검정 t-검정 ANOVA

사용 데이터 유형 범주형(명목형) 연속형(수치형) 연속형(수치형)
비교 대상 두 변수 간 관계 두 그룹 평균 비교 세 개 이상 그룹 평균 비교
검정통계량 χ² t F
귀무가설 기각 의미 변수 간 연관 있음 평균 차이 있음 평균 차이 있음

8. 카이제곱 검정 결과 해석

  • p-값 < 0.05 → 귀무가설 기각 → 그룹 간 차이가 유의미함 → 변수가 서로 관련 있음.
  • p-값 ≥ 0.05 → 귀무가설 채택 → 유의미한 차이 없음 → 변수가 독립적.

9. 정리

  1. 카이제곱 검정(χ² test)은 범주형 변수 간의 관계를 검정하는 방법.
  2. 적합도 검정(Goodness of Fit): 샘플 분포가 예상과 같은지 확인.
  3. 독립성 검정(Test for Independence): 두 범주형 변수가 연관성이 있는지 확인.
  4. 귀무가설 기각 시, 변수 간 유의미한 차이가 있다고 판단.
  5. Fisher’s Exact Test: 기대 빈도가 5 미만일 경우 사용.
  6. t-검정과 ANOVA는 연속형 데이터, 카이제곱 검정은 범주형 데이터에 사용됨.

인과추론 보다는 A/B테스트를 잘하면 될때가 많다. (분석시간이 없다면)
구매 는 t 테스트
전환율, 리텐션은 카이제곱검정으로


기대빈도(Expected Frequency) vs 관측빈도(Observed Frequency) 개념 정리


1. 기대빈도(Expected Frequency)란?

  • 기대빈도는 귀무가설(H0H_0H0)이 참이라고 가정할 때, 우리가 기대하는 데이터의 빈도를 의미.
  • 실제 데이터가 아닌, 수학적 모델(확률 이론)에 기반하여 계산된 값.
  • 카이제곱 검정(Chi-Square Test)에서 기대빈도를 사용하여 관측된 데이터와 비교함.

기대빈도 공식 (독립성 검정 시):

Eij=행 합×열 합전체 합E_{ij} = \frac{\text{행 합} \times \text{열 합}}{\text{전체 합}}

Eij=전체 합행 합×열 합

  • EijE_{ij}Eij : 기대빈도 (해당 셀에서 예상되는 빈도)
  • 행 합: 해당 행의 총합
  • 열 합: 해당 열의 총합
  • 전체 합: 전체 데이터의 총합

2. 관측빈도(Observed Frequency)란?

  • 관측빈도는 실제 조사나 실험을 통해 수집된 데이터의 빈도.
  • 기대빈도와 비교하여, 데이터가 귀무가설을 따르는지 여부를 판단.

3. 기대빈도 vs 관측빈도 비교

구분 의미 계산 방식 예시

기대빈도 귀무가설이 참일 때 기대되는 빈도 행 합×열 합전체 합\frac{\text{행 합} \times \text{열 합}}{\text{전체 합}}전체 합행 합×열 합​ 특정 브랜드를 선택할 확률이 50%라면, 100명 중 50명이 선택할 것으로 예상
관측빈도 실제 조사된 데이터의 빈도 실험 또는 조사 데이터 실제로는 100명 중 60명이 선택한 경우

4. 기대빈도와 관측빈도를 이용한 카이제곱 검정

예제: 고객의 브랜드 선호도

  • 한 상점에서 고객들이 A, B, C 브랜드를 선호하는 비율이 동일(1:1:1)하다고 가정(귀무가설).
  • 실제 조사 데이터를 통해 기대빈도와 관측빈도를 비교하여 유의미한 차이가 있는지 검정.

브랜드 A B C 총합

관측빈도 (Observed, OOO) 50 30 20 100
기대빈도 (Expected, EEE) 33.3 33.3 33.3 100

카이제곱 검정 통계량 계산:

χ2=∑(O−E)2E\chi^2 = \sum \frac{(O - E)^2}{E}

χ2=∑E(O−E)2

=(50−33.3)233.3+(30−33.3)233.3+(20−33.3)233.3= \frac{(50-33.3)^2}{33.3} + \frac{(30-33.3)^2}{33.3} + \frac{(20-33.3)^2}{33.3}

=33.3(50−33.3)2+33.3(30−33.3)2+33.3(20−33.3)2

Python 코드로 계산

python
복사편집
import numpy as np
import scipy.stats as stats

# 관측빈도
observed = np.array([50, 30, 20])

# 기대빈도 (균등한 분포 가정)
expected = np.array([33.3, 33.3, 33.3])

# 카이제곱 검정 수행
chi2_stat, p_value = stats.chisquare(observed, expected)

print(f"Chi-Square 통계량: {chi2_stat:.3f}, p-값: {p_value:.3f}")

if p_value < 0.05:
    print("귀무가설 기각: 브랜드 선호도가 동일하지 않음")
else:
    print("귀무가설 채택: 브랜드 선호도가 동일함")


5. 기대빈도 vs 관측빈도를 활용한 독립성 검정 예제

예제: 흡연 여부와 질병 발생 간의 관계

질병 여부 질병 발생 질병 없음 총합

흡연자 (O) 30 70 100
비흡연자 (O) 10 90 100
총합 40 160 200

기대빈도 계산

  • 질병 발생 기대빈도(흡연자) = 200(100×40)=20
  • (100×40)200=20\frac{(100 \times 40)}{200} = 20
  • 질병 발생 기대빈도(비흡연자) = 200(100×40)=20
  • (100×40)200=20\frac{(100 \times 40)}{200} = 20

질병 여부 질병 발생 (E) 질병 없음 (E) 총합

흡연자 (E) 20 80 100
비흡연자 (E) 20 80 100

카이제곱 검정 통계량 계산

χ2=∑(O−E)2E\chi^2 = \sum \frac{(O - E)^2}{E}

χ2=∑E(O−E)2

Python 코드로 독립성 검정 수행

python
복사편집
# 2x2 교차표 (흡연 여부 vs 질병 발생)
observed = np.array([[30, 70], [10, 90]])

# 카이제곱 독립성 검정 수행
chi2_stat, p_value, dof, expected = stats.chi2_contingency(observed)

print(f"Chi-Square 통계량: {chi2_stat:.3f}, p-값: {p_value:.3f}")

if p_value < 0.05:
    print("귀무가설 기각: 흡연 여부와 질병 발생 간 유의미한 관계 있음")
else:
    print("귀무가설 채택: 흡연 여부와 질병 발생 간 관계 없음")


6. 기대빈도와 관측빈도를 비교하는 이유

  1. 데이터가 귀무가설을 따르는지 확인
    • 관측된 빈도가 기대빈도와 유사하면 귀무가설 채택.
    • 차이가 크면 귀무가설 기각.
  2. 변수 간 연관성 분석 가능
    • 두 범주형 변수(예: 흡연 여부와 질병)가 독립적인지 확인.
  3. 카이제곱 검정에서 핵심적인 역할 수행
    • χ2=∑(O−E)2E\chi^2 = \sum \frac{(O - E)^2}{E}χ2=∑E(O−E)2를 통해 검정 통계량 계산.

7. 정리

  1. 기대빈도(Expected Frequency): 귀무가설이 참일 경우 예상되는 데이터 빈도.
  2. 관측빈도(Observed Frequency): 실제 조사나 실험을 통해 얻은 빈도.
  3. 카이제곱 검정(Chi-Square Test): 기대빈도와 관측빈도의 차이를 분석하여 가설 검정 수행.
  4. p-값 < 0.05이면 귀무가설 기각 → 기대빈도와 실제 데이터가 유의미한 차이가 있음.
  5. 독립성 검정(Test for Independence): 두 범주형 변수 간 연관성 검정.
  6. 적합도 검정(Goodness of Fit): 관측 데이터가 특정 분포를 따르는지 검정.


  7. 데이터로 가치를 만드는 Steven, Follow on LinkedIn