목표
- 각각의 유의성 검정 방법들에 대해 이해
- 신뢰구간과 가설검정의 관계 이해
- 제 1종 오류와 2종 오류에 대해 이해
3.1 A/B 검정
- 핵심: 두 그룹(A, B) 비교
- A와 B중 어느 것이 더 효과적인지 평가하기 위해 사용되는 검정 방법
- 사용자들을 두 그룹으로 나누고, 각 그룹에 다른 버전을 제공을 한 후에 반응을 비교
- 일반적으로 전환율, 클릭률, 구매수, 방문 기간, 방문한 페이지 수, 특정 페이지 방문 여부, 매출 등의 지표를 비교
- 목적: 두 그룹 간의 변화가 우연이 아니라 통계적으로 유의미한지를 확인
- 실습: 온라인 쇼핑몰에서 두 가지 디자인에 대한 랜딩 페이지를 테스트하여 어떤 디자인이 더 높은 구매 전환율을 가져오는지 평가
- 일반적으로 p-값이 0.05 이하이면 두 그룹이 다르다고 봄(귀무 가설 기각)
- stats.ttest_ind: 독립표본 t-검정을 수행해 두 개의 독립된 집단 간 평균의 차이가 유의미한지 평가
- 두 집단의 데이터 배열을 받아 t-통계량과 p-값을 반환
- t-통계량: 두 집단 간 평균 차이의 크기와 방향
- p-값: 귀무 가설이 참일 때, 현재 데이터보다 극단적인 결과가 나올 확률
- 이 값이 유의수준보다 작으면 귀무 가설 기각하고 유의수준보다 크면 귀무 가설 채택
import numpy as np
import scipy.stats as stats
# 가정된 전환율 데이터
group_a = np.random.binomial(1, 0.30, 100) # 30%
group_b = np.random.binomial(1, 0.45, 100) # 45%
# t-test 이용해 비교
t_stat, p_val = stats.ttest_ind(group_a, group_b)
print(f"T-Statistic: {t_stat}, P-value: {P-val}")
3.2 가설검정
- 핵심: 데이터가 특정 가설을 지지하는지 검정
- 표본 데이터를 통해 모집단의 가설을 검증하는 과정
- 귀무가설(H0)과 대립가설(H1)을 설정하고, 귀무가설을 기각할지 결정
- 두가지 전략
- 확증적 자료분석: 미리 가설들을 세운 다음 가설을 검증해가는 분석
- 탐색적 자료분석(EDA): 가설을 먼저 정하지 않고 데이터 탐색해보면서 가설 후보들을 찾고 데이터의 특징을 찾는 것
- 단계
- 귀무가설과 대립가설 설정
- 유의수준 결정
- 검정통계량 계산
- p-값과 유의수준 비교
- 결론 도출
- 통계적 유의성과 p값
- 통계적 유의성
- 결과가 우연히 발생한 것이 아닌 어떤 효과가 실제로 존재함을 나타내는 지표
- p-값
- 귀무가설이 참일 때, 관찰된 결과 이상으로 극단적인 결과 나올 확률
- 일반적으로 p-값이 유의수준 이하이면 귀무가설을 기각
- 유의수준으로 많이 사용하는 값은 0.05
- 통계적 유의성
- 신뢰구간과 가설검정
- 신뢰구간과 가설검정은 결국 둘다 모수를 이용하지만 접근 방식이 다름
- 신뢰구간은 모집단의 평균이 특정 범위 내에 있을 것이라는 확률
- 가설검정은 모수가 특정 값과 다른지 테스트
- 신뢰구간과 가설검정은 결국 둘다 모수를 이용하지만 접근 방식이 다름
실습
- 새로운 약물이 기존 약물보다 효과가 있는지 검정
- 귀무가설: 새로운 약물은 기존 약물과 큰 차이가 없다는 것
- 대립가설: 새로운 약물이 기존 약물과 대비해 효과가 있는 것
# 기존 약물(A)와 새로운 약물(B) 효과 데이터
A = np.random.normal(50, 10, 100)
B = np.random.normal(55, 10, 100)
# 평균 효과
mean_A = np.mean(A)
mean_B = np.mean(B)
# t-검정 수행
t_stat, p-value = stats.ttest_ind(A, B)
print(t_stat, '\n', p-value)
3.3 t검정
- 핵심: 두 집단 간의 평균 차이가 통계적으로 유의미한지 확인하는 검정 방법
- 독립표본 t검정
- 두개의 독립된 그룹의 평균을 비교 ➡️ 지금까지 해온 것
- 대응표본 t검정
- 동일한 그룹의 사전/사후 평균을 비교
- 독립표본 t검정
독립표본 t검정 실습
# 학샘 점수 데이터
score_method1 = np.random.normal(70, 10, 30)
score_method2 = np.random.normal(75, 10, 30)
# 독립표본 t-검정
t_stat, p-value = stats.ttest_ind(score_method1, score_method2)
print(t_stat, '\n', p-value)
3.4 다중검정
- 여러 가설을 동시에 검정할때 발생하는 문제
- 각 검정마다 유의수준을 조정하지 않으면 1종 오류 발생 확률이 증가
- (귀무가설이 참인데 기각하는 오류)
- 보정 방법: 본페로니 보정, 튜키 보정, 던넷 보정, 윌리엄스 보정 등
실습: 여러 약물의 효과를 동시에 검정
- 본페로니 보정 사용: 일반적인 0.05보다 더 낮게 유의수준을 줄임
# 세 그룹의 데이터
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_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)
for i, p in enumerate(p_values):
if p < adjusted_alpha:
print("유의미한 차이 발견 p = ", p)
else:
print("유의미한 차이 없음 p = ", p)
3.5 카이제곱검정
- 범주형 데이터에 사용
- 적합도 검정
- 독립성 검정
- 적합도 검정: stats.chisquare
- 관찰된 분포와 기대된 분포가 일치하는지 검정
- p값이 높으면 데이터가 귀무 가설에 잘 맞음 ➡️ 관찰된 데이터와 귀무 가설이 적합
- p값이 낮으면 데이터가 귀무 가설에 잘 맞지 않음 ➡️ 관찰된 데이터와 귀무 가설이 부적합
- 관찰된 분포와 기대된 분포가 일치하는지 검정
- 독립성 검정: stats.chi2_contingency
- 두 범주형 변수 간의 독립성을 검정
- p값이 높으면 두 변수 간의 관계가 연관성이 있음 ➡️ 독립성이 있음
- p값이 높으면 두 변수 간의 관계가 연관성이 없음 ➡️ 독립성이 없음
- 두 범주형 변수 간의 독립성을 검정
실습
- 적합도 검정: 주사위의 각 면이 동일한 확률로 나오는지 검정
- 독립성 검정: 성별과 직업 만족도 간의 독립성 검정
# 적합도 검정
observed = [20, 30, 25, 25] # 관측 데이터
expected = [25, 25, 25, 25] # 예상 데이터
chi2_stat, p_value = stats.chisquare(observed, f_exp=expected)
print(chi2_stat, '\n', p_value)
# 독립성 검정(나이와 흡연 여부)
observed = np.array([[30, 10], [20, 40]])
chi2_stat, p_value, dof, expected = stats.chi2_contingency(observed)
print(chi2_stat, '\n', p_value)
3.6 제 1종 오류와 제 2종 오류
- 제 1종 오류: 귀무 가설이 참인데 기각하는 오류 ➡️ 위양성
- 잘못된 긍정을 의미 ➡️ 아무런 영향이 없는데 영향이 있다고 하는 것
- 알파를 경계로 귀무가설을 기각하기 때문에 제 1종 오류가 알파만큼 발생
- 따라서 유의수준(알파)을 정함으로써 제 1종 오류 제어 가능
- 다중 검정시 제 1종 오류가 증가하는 이유:
- 하나의 검정에서 제 1종 오류가 발생하지 않을 확률은 1-알파
- m개의 독립된 검정에서 제 1종 오류가 전혀 발생하지 않을 확률은 (1-알파)^m
- 따라서, m개의 검정에서 하나 이상의 제 1종 오류가 발생학 확률은 1 - (1-알파)^m
- 이 값은 m이 커질수록 빠르게 증가, 예를 들어 알파=0.05, m=10인 경우 1-(1-0.05)^10은 대략 0.401
- 즉, 10개의 가설을 동시에 검정할 때 하나 이상의 가설에서 제 1종 오류가 발생학 확률이 약 40프로이므로 개별검증에서 발생하는 오류율(5%)보다 높다.
- 제 2종 오류: 귀무 가설이 거짓인데 기각하지 않는 오류 ➡️ 위음성
- 잘못된 부정을 의미 ➡️ 영향이 있는데 영향이 없다고 하는것
- 제 2종 오류가 일어날 확률을 베타로 정의하며 일어나지 않을 확률은 검정렬(1-베타)로 정의
- 하지만 베타를 직접 통제할 수는 없음
- 그나마 방법
- 표본크기인 n이 커질 수록 베타가 작아짐
- 알파와 베타는 상충관계에 있어서 너무 낮은 알파를 가지게 되면 베타는 더욱 높아짐
- 그나마 방법
예시
- 제 1종 오류: 새로운 약물이 효과가 없는데 있다고 결론
- 제 2종 오류: 새로운 약물이 효과가 있는데 없다고 결론
'EDA & 데이터 분석 > 통계' 카테고리의 다른 글
통계학 6주차[가설검정의 주의점] (0) | 2025.01.20 |
---|---|
통계학 5주차[상관관계] (0) | 2025.01.17 |
통계학 4주차[회귀] (0) | 2025.01.17 |
통계학 기초 2주차[분포의 종류] (0) | 2025.01.16 |
통계학 기초 1주차 (0) | 2025.01.16 |