-
빅데이터 분석기사 2) 중심 극한 정리와 t 검정 (t-test)데이터 사이언스(DS)와 통계 2024. 7. 27. 21:12
모집단의 평균을 모르는 상황에서, 샘플링한 표본만으로 모집단의 평균을 추정해야할때
t 분포 (또는 z 분포)를 활용할 수 있다.
그렇다면, t 분포는 무엇이고 어떤 식으로 활용할 수 있을까?
예를 들어, 아래와 같은 '평균 추정' 업무를 수행한다고 가정해보자.
예제) 공장에서 생산한 10000개의 PCB 기판중 임의로 15개를 샘플링하여, 측정한 기판의 두께(mm)는 다음과 같다. [117, 110, 109, 119, 117, 109, 103, 95, 123, 111, 125, 106, 92, 93, 105] 공장에서 생산하는 기판 두께의 평균이 110이라고 볼수 있는가?
모평균에 대한 추정은 중심극한 정리를 통해 t 분포 (또는 z분포)를 활용할 수 있다.
여기서 중심극한 정리란, 모집단의 분포가 정규분포를 따르지 않더라도
모집단에서 추출한 표본의 크기 n이 무한히 커지게 되면,
표본 평균의 분포가 정규 분포를 따른다는 것이다.
직관적으로 생각해보자.
아래 그림과 같이 모집단에서 n개씩 '표본'을 샘플링하여,
그 표본의 평균들이 모인 집단을 '표본 평균 집단'이라 하자.
샘플링을 무수히 많이 시행할 경우, ( n → ∞)
표본 평균 집단의 '평균'은 '모집단의 평균'과 같아질 것이다. ( 표본 평균들의 평균 → μ (모평균) )
또한 표본 평균의 '분산'은 '모집단 분산 / n'이 될 것이다. ( 표본 평균들의 분산 → V / n (모분산 / n) )
여기서 핵심은 표본의 크기 n이 커질수록,
표본 평균 Ẋ의 분포가 N( μ , V / n )인 정규분포에 가까워진다는 것이다.
만일 모집단의 분산을 알고 있다면, 아래 z분포를 활용하여 모평균을 추정할수 있고
모집단의 분산을 모른다면, 아래 t분포를 활용하여 모평균을 추정할 수 있다.
t 분포는 z분포에서 '모분산'을 '표본 분산'으로 대체한 것이다.
다만, '모분산'을 임의로 '표본 분산'으로 대체했기때문에 '자유도(degree of freedom)'에 1을 빼주어야 한다.
자유도란, 자유로운 변수의 개수를 말한다.
식으로는
- 자유도 = 표본의 개수 - 제약조건의 개수
로 표현할 수 있겠다.
여기서 제약조건이란, 모르면서 아는 척한 것이나 특정 조건에 의해 독립 변수가 감소되는 것을 말한다.
위의 경우, 모분산을 모르면서 임의로 표본 분산으로 가정했기때문에 1개 변수에 대해 아는척한 것이므로
자유도는 n-1이 되겠다.
t 분포는 샘플의 크기에 의해 형상이 결정되는 특징을 갖는다.
아래 그림처럼 정규분포와 유사한 좌우 대칭인 벨 모양을 갖는다.
그리고 n의 값(샘플의 크기)이 작아질수록, 분포 형상이 평평해지고 정규 분포와 멀어지게 된다.
반대로 n의 값이 커질수록 점점 정규분포와 유사해지게 된다.
통상적으로 n 값이 일정 크기 이상(약 30개)이 되면, 유사 정규 분포로 보고 검정을 수행한다.
이를 t 검정 (또는 z 검정)이라 한다.
검정을 수행하는 방식은 정규성 검정과 같다.
p-value를 활용한 검정 방식은 정규성 검정에서 자세히 다뤘으니, 해당 링크로 갈음하고자 한다.
('정규성 검정 글' 링크)
이제 위 예제에 대해 모평균 값을 추정해보자.
모집단의 분산을 모르는 상황이므로, t검정으로 수행하자.
### 아래 자료를 통해 평균이 110이라고 볼수 있는가? ### - 귀무가설 : 평균은 110이다. import pandas as pd import numpy as np from scipy import stats data = np.array([117, 110, 109, 119, 117, 109, 103, 95, 123, 111, 125, 106, 92, 93, 105]) ## 정규성 확인 norm = stats.shapiro(data) ## 자유도 설정 및 t 통계량 구하기 ## (t검정 수행 모듈에서 구해주므로, 따로 해줄필요는 없으나 그냥 구해보기) freedom = len(data) - 1 t_stats = (data.mean() - 110) / (np.std(data) / (freedom**0.5) ) ## t검정 수행 result = stats.ttest_1samp(data, popmean = 110, alternative = 'two-sided') result >> TtestResult(statistic=-0.40085990783587394, pvalue=0.694574212357371, df=14))
여기서, alternative는 가설이 '양측 가설'인지 '단측 가설'인지 선택하는 파라미터이다.
'two-sided'는 양측 가설을 말한다.
평균 값이 110이냐 아니냐를 묻는 검정에서는,
평균값이 110보다 훨씬 작은 상황과 평균값이 110보다 훨씬 큰 상황 '양측 가설'을 모두 고려해줘야 한다.
따라서 아래 그림처럼 p-value 값을 '양측' 빨간 면적 합친 값으로 고려한다.
만일, 모평균이 110보다 큰지 알고 싶은거라면
아래 그림과 같이 '단측' 면적만 p-value 값으로 고려하면 된다.
다시 예제로 돌아와서 p-value 값이 0.69가 나왔다.
이제 유의수준을 5%로 설정하고, 판단을 내려보자.
p-value 값은 0.69로 0.05보다 크다.
즉, 귀무가설(=평균은 110이다)을 기각할 정도로 p-value값이 작지 않다.
따라서 귀무가설을 기각하지 않는다.
다시말해서 '평균 값이 110이다'가 틀렸다고 볼 수 없다. (귀무가설이 아니라고 볼 수 없다와 동일한 문장)
귀무가설이 아니라고 볼 수 없으므로, 귀무가설이 맞다.
=> ∴ 위 data를 통해 모평균이 110이라고 판단한다.
이 밖에도
t 분포를 통해 수행할수 있는 검정은
1표본 t 검정, 2표본 t검정, 동일표본 t검정 등이 있다.
위의 예시는 1표본 t 검정이며, 그 외의 검정 예시는 다음 글에서 작성하도록 하겠다.
728x90'데이터 사이언스(DS)와 통계' 카테고리의 다른 글
빅데이터 분석기사 5) F 분포와 F 검정(F-test) 그리고 등분산성 검정 (0) 2024.07.28 빅데이터 분석기사 4) 카이제곱 분포와 검정(chi-squared test) (0) 2024.07.27 빅데이터 분석기사 3) t 검정(t-test)과 수행 예시 (0) 2024.07.27 빅데이터 분석기사 1) 정규성 검정(Normality Test)과 p-value (0) 2024.07.26