주요 개념
- 귀무가설(Null Hypothesis)
- 대립가설(Alternative Hypothesis)
귀무가설(H0)은 영 가설이라고도 한다. 통계학에서 처음부터 버릴 것이라 생각하고 설정하는 가설이다.
반대로 대립가설(H1)은 귀무가설이 기각되었을 때 자동으로 참이 되는 가설을 뜻한다.
기본적으로는 참으로 추정하고 이를 기각하기 위해서 증거가 필요하다.
예를 들어 "재실자수 증가는 이산화탄소 수치의 증가에 영향을 끼치지 않는다."라는 귀무가설이 있다고 하자.
H0 = 귀무가설,
μ1 = 이산화탄소 수치,
μ2 = 재실자 수 이면
H0 : μ1∝1/μ2 이다.
그렇다면 이 상황에선 "재실자수 증가는 이산화탄소 수치에 영향을 끼친다."가 대립가설이 되고 이는 연구자가 연구를 통해 입증되기를 기대하는 예상이나 주장하는 내용으로 설정한다.
이러한 귀무가설의 설정은 통계적 유의성을 도출해 낼 수 있는 단계이다.
이러한 가설을 형성하고 얻어진 데이터에서 확률적 검정을 해봄으로써 귀무가설이 예측하는 것이 맞는지 아닌지를 알아볼 수 있다.
또한 만약 이것이 참이라면 여기서 얻어진 확률은 결과의 유의 수준(significance level)으로 부른다. 유의 수준은 통계적인 가설검정에서 사용되는 기준값이다. 일반적으로 유의 수준은 \( \alpha \)로 표시하고 95%의 신뢰도를 기준으로 한다면 (1−0.95)인 0.05 값이 유의 수준 값이 된다.
p-값(p-value, probability value) 또는 유의확률은 귀무가설이 맞다고 가정할 때 얻은 결과보다 극단적인 결과가 실제로 관측될 확률이다. 실험의 유의 확률은 실험의 표본 공간에서 정의되는 확률변수로서, 0~1 사이의 값을 가진다. p-값(p-value)은 귀무가설(null hypothesis)이 맞다는 전제 하에, 표본에서 실제로 관측된 통계치와 같거나 더 극단적인 통계치가 관측될 확률이다. 여기서 말하는 확률은 빈도 주의(frequentist) 확률이다.
예를 들어 일반적으로 평균이 100이라는 가설 속에서 우리는 많은 값들이 100 주변에 많은 값들이 위치할 것이라 생각하게 된다. 반대로 현재 데이터의 평균이 100에서 멀어질수록 모분포의 평균이 100이 아닐지도 모른다는 생각을 하게 될 수도 있다. 즉, p-value는 만약 모분포의 평균이 100이라는 귀무가설이 있다면 x개의 데이터를 샘플링할 때 이 평균의 분포에서 내가 현재 확인하려는 값인 90보다 큰 값이 나올 수 있는 확률이다.
이러한 p-value는 인간의 사고와 유사하다. 성적이 좋지 못한 학생이 열심히 공부해서 시험에 100점을 맞아도 사람들은 우연이라 생각할 가능성이 높다. 반대로 내가 타는 택시마다 가벼운 접촉사고가 나서 하루에 3번이나 사고가 났다고 생각해 보자. 이는 거의 일어나기 힘든 확률이라 운이 매우 없는 경우이다. 이러한 생각을 수치화시킨 것을 유의 수준 \( \alpha \)이라 볼 수 있다.
이때, p-value의 값이 유의 수준인 0.05보다 작으면 귀무가설이 모집단의 표본으로 보기 어렵기에 대립 가설을 더욱 지지하게 된다. 따라서 해당 귀무가설을 기각한다. 쉽게 말해 p-value가 0.05보다 작다면 해당 사건이 우연히 발생할 확률(귀무가설)이 5%보다 작다는 뜻이므로 우연히 일어날 가능성이 거의 없다는 의미이다.
아래와 같이 가설 유형에 따라 p-value를 구하는 구간은 달라진다.
- 왼 꼬리 검정(단측 검정) p-value = P[Z>z0]P[Z>z0]
- 오른 꼬리 검정(단측 검정) p-value = P[Z<z0]P[Z<z0]
- 양쪽 꼬리 검정(양측 검정) p-value = min(P[Z>z0],P[Z<z0])×2min(P[Z>z0],P[Z<z0])×2
일각에선 유의 확률(p-value)을 0.05의 관례에서 0.005로 바꾸고자 하는 개선안의 실시에 대해 논의한 바가 있기에 이를 참고하는 것이 좋을 듯하다. 이러한 재정의에 따른 교정의 효과는 기존의 0.05~0.005의 P값을 '제안적 증거'(suggestive evidence)로 표현하고 0.005 이하의 P값에서 '유의미'(significant)하다는 표현을 사용할 것으로 권고하고 있다. 어쨋든 본인이 주장하는 가설의 p-value가 0.05보다 크면 다른 말로 회유하여 부풀리기보다 기각하는 것을 추천한다. 아래는 p-value의 수치가 0.05보다 클 때 말할 수 있는 온갖 술수를 표기해 둔 페이지인데 재미있으니 한번 살펴보길 추천한다.
a little significant (p<0.1)
a margin at the edge of significance (p=0.0608)
a marginal trend (p=0.09)
a marginal trend toward significance (p=0.052)
출처: https://mchankins.wordpress.com/2013/04/21/still-not-significant-2/
이러한 가설검정(hypothesis test)의 절차에서 유의 수준 값과 유의 확률(p-value) 값을 비교하여 통계적 유의성을 검정하게 된다. 통계적 가설 검정을 수행하기 위해선 표본 통계량이 필요한데 이를 검정 통계량(test statistics)이라 부른다. 검정 통계량은 확률 분포에 따라 나뉘는데, 쉽게 말하자면 표본의 결과가 귀무가설로부터 얼마나 떨어져 있는지에 대한 개념이다. 귀무가설에 대한 가설 검정방법은 Z-test, t-test, F-test, Chi-square test가 있다.
하지만 항상 새로운 데이터의 유입이 존재할 수 있고 이로 인해 언제든지 견해가 바뀔 수도 있기 때문에 불변의 진리는 아닐 수 있다.
추가적으로 회귀분석에서 p-value는 기울기가 0일 확률을 의미한다.
아래는 카이 제곱 검정을 이용해 p-value를 도출하는 python 소스 코드이다.
from scipy import stats
data1 = [408, 432, 438, 495, 530] # 관측치
data2 = [300, 320, 340, 380, 450] # 기대치
result1 = stats.chisquare(data1, data2)
print("statistic =", round(result1[0], 3), "p-value =", round(result1[1], 3))
data3 = [40, 43, 43, 49, 53] # 관측치
data4 = [40, 40, 40, 40, 40] # 기대치
result2 = stats.chisquare(data3, data4)
print("statistic =", round(result2[0], 3), "p-value =", round(result2[1], 3))
참고 자료
아래 블로그에서 각 검정방법을 파이썬으로 직접 구현하는 예제를 참조할 수 있다.
https://datascienceschool.net/02%20mathematics/09.05%20%EC%82%AC%EC%9D%B4%ED%8C%8C%EC%9D%B4%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%9C%20%EA%B2%80%EC%A0%95.html
아래 링크는 공부를 좀 더 해보고 싶을 때 사용하면 유용하게 사용할 수 있다.
https://ko.khanacademy.org/math/statistics-probability/significance-tests-one-sample
소스 코드