[내일배움캠프] 통계학 기초 (6)

셔닝🧸·2025년 7월 3일
0
post-thumbnail

오늘의 학습
1. t검정
2. 다중검정
3. 카이제곱검정


  1. t검정
    ☝🏻 통계학 기초 (5)에서 나온 가설검정의 대표적인 검정!

➖ 두 집단 간의 평균 차이가 통계적으로 유의미한지 확인
➖ 독립표본 t검정 / 대응표본 t검정

  • 독립표본 t검정: 두 독립된 그룹의 평균 비교
    Ex. 두 클래스의 시험 성적 비교
  • 대응표본 t검정: 동일 그룹 사전/사후 평균 비교
    Ex. 다이어트 전후 체중 비교

[파이썬 실습]

# 학생 점수 데이터
scores_method1 = np.random.normal(70,10,30)
scores_method2 = np.random.normal(75,10,30)

# 독립표본 t검정
t_stat, p_val = stats.ttest_ind(scores_method1, scores_method2)
print(f"T-Statistic:{t_stat},P-value;{p_val}")

  1. 다중검정

➖ 여러 가설 동시 검정하지만 오류 발생 가능 O
➖ 각 검정마다 유의수준 조정할 필요 O
➡️ 조정 안 할 경우 1종 오류 발생 활률 증가


[1종 오류와 2종 오류]

📍 제 1종 오류
귀무가설이 참인데 기각하는 오류 = 아무 영향이 없는데 영향이 있다고 하는 것!
➖ 위양성
➖ 유의수준(a)을 경계로 귀무가설 기각하므로 유의수준만큼 오류 발생
➖ 제 1종 오류가 발생하지 않을 확률

하나의 검정n개의 검정
1-a(1-a)**n

즉, n개의 검정에서 하나 이상의 제 1종 오류가 발생할 확률 (전체 제 1종 오류율)
: 1 - (1-a)**n
⭐️ n이 커질수록 오류가 발생할 확률 빠르게 증가 ⬆️
= 개별검증보다 다중검정의 오류율이 높음
➡️ 유의수준 설정으로 오류 제어 가능

📍 제 2종 오류
귀무가설이 거짓인데 기각하지 않는 오류 = 영향이 있는데 없다고 하는 것!
➖ 위음성
➖ 제 2종 오류가 발생하지 않을 확률: 1-p (검정력)
⭐️ 제 2종 오휴가 일어날 확률은 p(베타)로 정의
➡️ 통제 방법

  • 표본크기 n 커질수록 ⬆️ p 감소 ⬇️
    즉, 질 좋은 데이터 수집을 많이 할수록 좋음
  • a와 p는 상충관계라 너무 낮은 a를 가지면 p가 더 높아짐...딜레마...

➡️ 오류 보정 방법: 본페로니 보정

[파이썬 실습]

import numpy as np
import scipy.stats as stats

# 세 그룹의 데이터 생성
np.random.seed(42)
group_A = np.random.normal(10,2,30)
group_B = np.randpm.normal(12,2,30)
group_C = np.random.noraml(11,2,30)

# 세 그룹 간 평균 차이에 대한 t검정 수행
p_values = []
p_values.append(stats.ttest_ind(group_A, group_B).pvalue)
p_values.append(stats.ttest_ind(group_A, group_C).pvalue)
p_values.append(stats.ttest_ind(group_B, group_C).pvalue)

⭐️ 여기까지만 진행하고 끝내면 제 1종 오류 발생 가능

# 본페로니 보정 적용 필수!!
alpha = 0.05 # 유의수준 a 설정
adjusted_alpha = alpha/len(p_values) # 오류 줄이기 위해서 유의수준 더 낮은 값으로 변환

# 결과 출력
print(f"본페로니 보정된 유의 수준: {adjusted_alpha:.4f}")
for i, p in enumerate(p_values):
	if p < adjusted_alpha:
    	print(f"검정 {i+1}: 유의미한 차이 발견 (p={p:.4f})")
    else:
    	print(f"검정 {i+1}: 유의미한 차이 없음 (p={p:.4f})")

  1. 카이제곱검정

➖ 적합도 검정 : 범주형 데이터의 표본 분포가 모집단 분포와 일치하는지 검정

  • p값이 높으면 데이터가 귀무 가설에 맞음
  • p값이 낮으면 데이터가 귀무 가설에 맞지 않음

➖ 독립성 검정 : 두 범주형 변수 간의 독립성 검정

  • p값이 높으며 두 변수 간 관계가 연관성 X = 독립성 O
  • p값이 낮으면 두 변수 간 관계가 연관성 O = 독립성 X

[파이썬 실습]

# 적합도 검정
observed = [20,30,25,25]
expected = [25,25,25,25]
chi2_stat, p_value = stats.chisquare(observed, f_exp=expected)
print(f"적합도 검정 카이제곱 통계량: {chi2_stat}, p-값:{p_value}")

📍 scipy.stats.chisquare
➖ 카이제곱 적합도 검정 수행 -> 관찰된 빈도 분포가 기대된 빈도 분포와 일치하는지 평가
➖ 단일 표본에 대해 관찰된 빈도가 특정 이론적 분포와 일치하는지 확인하는 데 상요
➖ chi2 : 카이제곱 통계량
➖ p : p-값


# 독립성 검정
observed = np.array([10,10,20],[20,20,40])
chi2_stat, p_value, dof, expected = stats.chi2_contingency(observed)
print(f"독립성 검정 카이제곱 통계량: {chi2_stat},p-값:{p_value}")

📍 scipy.stats.chi2_contingency
➖ 카이제곱 검정 수행 -> 두 개 이상의 범주형 변수 간 독립성 검정
➖ 관측 빈도 담고 있는 교차표를 입력으로 받아 카이제곱 통게량, p-값, 자유도, 기대 빈도 반환
➖ chi2 : 카이제곱 통계량
➖ dof : 자유도 (행의 수 -1)*(열의 수-1)
➖ expected : 기대 빈도 
profile
어떻게든 하겠숴여...❕

0개의 댓글