-
[Python] p-value 의미와 사용 방법Python/Python 실습 2024. 10. 9. 14:58
귀무가설 정의
통계학에서 가설 검정 (가설 합당성 검증) 할 때 사용한다. 관찰된 데이터가 귀무 가설 (Null hypothesis) 하에서 나타날 확률을 의미한다. 여기서 귀무가설이란, 영가설이라고도 하며, 처음부터 버릴 것을 예상하는 가설이다. 대립가설이란, 귀무가설에 대립되는 가설이다.
- 예제: 30대 남자의 평균 몸무게는 20대 남자의 평균 몸무게보다 높을 것이다.
- 귀무가설: 30대 남자의 평균 몸무게는 20대 남자의 평균 몸무게보다 같거나 낮다.
- 대립가설: 30대 남자의 평균 몸무게는 20대 남자의 평균 몸무게보다 높다.
p-value 정의
p-value는 "유의 확률"이며, 쉽게 말해서 의미가 있을 확률이다. 그리고 귀무 가설의 기각 (= 버림)를 판단할 때, 활용된다. 만약 p-value가 미리 설정한 유의 수준 (예: 0.05)보다 낮을 경우, 귀무 가설은 기각되고 대립가설이 채택된다.
- p-value가 높다: 귀무 가설이 기각되기 어렵다. 그렇다고 귀무가설이 채택되는 것은 아니다. 판단할수 없다는 뜻이다.
- p-value가 낮다: 귀무 가설이 기각된다. 대립 가설이 채택된다.
하지만, 반대의 경우에 귀무 가설이 채택되는 것은 아니다.
예제 코드
아래 코드는 group1과 group2의 동질성을 평가하는 코드이다.
- 예제: 두 그룹의 평균은 다를 것이다.
- 귀무가설: 두 그룹의 평균은 같다.
- 대립가설: 두 그룹의 평균은 다르다.
import numpy as np from scipy import stats # 두 그룹의 샘플 데이터 생성 group1 = np.random.normal(50, 10, 100) # 평균 50, 표준편차 10인 100개의 샘플 group2 = np.random.normal(52, 10, 100) # 평균 52, 표준편차 10인 100개의 샘플 # 두 그룹의 평균 차이에 대한 t-검증 수행 t_stat, p_value = stats.ttest_ind(group1, group2) # 결과 출력 print(f"t-statistic: {t_stat}") print(f"p-value: {p_value}") alpha = 0.05 #유의 수준 설정 (보통 0.05) if p_value < alpha: print("귀무가설을 기각합니다. 두 그룹의 평균은 유의미하게 다릅니다.") else: print("귀무가설을 기각할 수 없습니다. 두 그룹의 평균은 유의미하게 다르지 않습니다.")numpy: 수치 데이터를 다루는데 유용한 라이브러리로, 배열 연산, 난수 생성등을 지원한다.
scipy.stats: 다양한 통계함수와 분포를 제공하는 모듈이다. 해당 코드에서는 t-검정을 위해 stats.ttest_ind 함수를 사용한다.
stats.ttest_ind: 두 그룹간 동질성을 평가한다.
t_stat: t-검정의 t-통계량이다. 두 그룹간 차이가 클수록 t-값이 커진다.
p_value: 두 그룹간 차이가 클수록 p_value값이 작아진다.

Python p_value 예시 코드 
출력 결과 정리
가설을 증명하기 위하여, 반대 가설인 귀무 가설에 대한 유의 확률을 도출하는 방법을 사용한다. 즉 귀무가설이 실제로 기각됨으로써, 원래 증명하고자 하는 가설이 증명되는 것이다. 통상적으로 p_value (유의 확률) 즉 귀무가설이 성립할 확률이 0.05 (5%) 이하일 경우, 귀무가설을 기각하여 대립 가설을 채택할 수 있다.
'Python > Python 실습' 카테고리의 다른 글
[Python] Feature 순위 매기기 (ANOVA F-검정) (2) 2025.08.17 [Python] Decision Tree 구성하기 (3) 2025.08.08 [Python] 파이썬 설치하기, VSCODE 가상 환경 구축 (1) 2025.07.26