➡️ 오류의 종류
- 가설 검정은 추출된 표본으로부터 모수에 대한 가설이 적합한지 판단하므로 잘못된 결론을 내리게 될 가능성이 항상 존재함
- 이때 검정값과 실제값 다른 2종류의 오류 발생
➡️ 1종 오류
- 귀무가설이 참인데 기각하는오류
- ex) 신약 개발 → 귀무가설 참(효과없다) → 기각해버림 (= 효과 없는건데 있다고 함) 잘못된 긍정
- 유의수준(α)을 경계로 귀무가설을 기각 → 제1종 오류가 α만큼 발생
- 따라서 `유의수준(α)을 낮추면 제 1종 오류 제어 가능`
- but 너무 낮추면 2종오류가 발생할 가능성이 높아지므로 주의 (α 와 β는 상충 관계)
- 2종오류보다 1종 오류에 더 주의 함( 왜? 효과가 없는데 있다고 하니까 국민의 위해가 우려되는 상황이므로.!)
➡️ 2종 오류
- 귀무가설이 거짓인데 채택
- 잘못된 부정
- ex. 신약 개발 → 귀무가설 거짓(효과 있음) → 기각안함 (=효과 있는건데 없다고 함)
- 오류가 일어날 확률을 β → 직접 통제 불가 → 표본의 크기를 키워 β 제어
➡️ 다중 검정시 1종 오류가 증가하는 이유
- 직관적으로 이해 : 다중검정값은 개별검증값의 곱이므로 개별검증 보다 오류가 증가할수 밖에 없음
- 오류가 전혀 발생하지 않을 확률 1-α , m개의 검정이면 (1-α)의 m승이 됨.
- 오류가 발생할 확률은 1- (1-α)^m → m이 2이상이므로 m+α^(m-1) 은 1보다 클수밖에 없음
➡️ 오류 보정 법
- 본페로니 보정, 튜키 보정, 던넷 보정, 윌리엄스 보정 등이 있
- 가장 대표적인 본페로니 보정
- 유의수준을 가설검정 갯수로 나누어 더 엄격하게 유의수준을 낮춤
- 계산식 : 유의 수준 ( α ) / len(p_values)
- 코드 구현(파이썬 )
더보기
- ttest_ind 메소드에서 pvalue 만 사용하려면, .pvalue 메소드 활용
import numpy as np
import scipy.stats as stats
# 세 그룹의 데이터 생성
np.random.seed(42)
group_A = np.random.normal(10, 2, 30)
group_B = np.random.normal(12, 2, 30)
group_C = np.random.normal(11, 2, 30)
#세 그룹 간 평균 차이에 대한 T검정 (빈 리스트에 p값 추가)
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)
# 본페로니 보정 적용
alpha = 0.05
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})")
'통계,검정,머신러닝' 카테고리의 다른 글
머신러닝 | 이상치/ 결측치/ 범주형 데이터 인코딩/ 수치형 데이터 스케일링(+sklearn 모듈) (0) | 2025.01.15 |
---|---|
가설 검정 | 카이 제곱 검정 (+ scipy.stats 모듈 ) (0) | 2025.01.14 |
머신러닝 | 로지스틱 회귀 분석/분류 분석 (+sklearn 파이썬 실습) (1) | 2025.01.14 |
머신러닝 | 머신러닝 기초와 선형 회귀 분석 (+sklearn 파이썬 실습) (0) | 2025.01.13 |
통계 기초 | 상관계수 (피어슨/스피어만/켄달 타우/상호정보 상관계수 / scipy & sklearn 모듈) (0) | 2025.01.10 |