통계학 기초_Effective Sampling, 가설 검정, Student T-test(독립T검정)_One Sample t-test, Two Sample T-test
DataScience/통계-선형대수

통계학 기초_Effective Sampling, 가설 검정, Student T-test(독립T검정)_One Sample t-test, Two Sample T-test

728x90

나는 통계학과지만 AI부트캠프를 통해 전공수업 때 이해 못했던 부분을 이해했던 부분도 있었다.

그리고 까먹었던 개념들을 다시 기억속에서 살려낸다고 힘들었다.

다시 까먹지 않기 위해서 블로그에 오늘 공부한 지식들을 글로 남긴다!!

 

◇ 통계학이란?

불확실한 미래는 다가올 미래에 대한 확률을 계산함으로써 최선의 대응을 할 수 있는 것이고, 불확실한 정보는 그 정보가 어떤 현상에서 나왔을지에 대한 확률을 계산함으로써 최선의 판단을 할 수 있는 것이다. 이러한 확률은 홀로 존재하는 것이 아니라 데이터와 만나서 구체적으로 계산되어야 유용해질 텐데 이에 대한 과학적 방법을 연구하는 학문이 통계학이다.


▶ Effective Sampling(효과적 표본추출)

우리는 가설검정을 하기위해서 전수조사를 해야 하지만 시간적, 금전적 효율성을 따지면 조사를 하기 위한 모집단에서 특정 표본을 추출해서 가설을 검정해야 할 때도 있다. 이러한 Sampling기법에는 여러 가지 방법들이 있다.

방법 1 : Simple random sampling(무작위 표본추출)

모집단에서 Sampling을 무작위로 하는 방법이다.

 

방법 2 : Systematic sampling(계통추출법)

모집단에서 sampling을 할 때 규칙을 가지고 추출하는 방법이다.

ex) 1, 6, 11, 16, ... 번째의 데이터를 선택

 

방법 3 : Stratified random sampling

모집단을 미리 여러 그룹으로 나누고, 그 그룹별로 무작위 추출을 수행하는 방법이다.

ex) 여론 조사를 위해 사람을 나이대 별로 나누고, 해당 그룹 안에서 무작위 추출.

 

방법 4 : Cluster sampling

모집단을 미리 여러 그룹으로 나누고, 이후 특정 그룹을 무작위로 선택하는 방법이다.

 


▶ 가설검정

  • 주어진 상황에 대해서, 하고자 하는 주장이 맞는지 아닌지를 판정하는 과정.
  • 모집단의 실제 값에 대한 sample의 통계치를 사용해서 통계적으로 유의했는지 아닌지 여부를 판정함.

 

- 1단계 : 귀무가설 H0와 대립가설 H1을 설정

광고의 효과에 대한 가설을 예로 들어봅시다.

귀무가설 H0 : 광고 전과 후의 평균 상품 판매량에는 차이가 없을 것이다.

대립가설 H1 : 광고 전과 후의 평균 상품 판매량에는 차이가 있을 것이다.

 

- 2단계 : 유의 수준 a를 정한다.

다음으로 귀무가설을 기각하거나 채택할 유의 수준 (허용 1종 오류)을 설정

보통 5%(a = 0.05) 또는 1% (a = 0.01)로 설정

 

- 3단계 : 표본을 수집하여 검정통계량을 계산하고, 그에 따른 P값(pvalue)을 계산한다.

가설과 유의수준을 설정하였으니 이제 표본을 수집한다.

이제 표본을 수집했으면 검정 통계량을 해야 하는데 그럼 검정 통계량은 무엇일까요?

 

검정통계량이란 수집한 데이터를 이용해서 계산한 "확률 변수"를 말한다. 확률변수란 "특정 확률로 발생하는 각각의 결과를 수치적 값으로 표현하는 변수"를 말한다.

오늘 우리의 강의에서는 독립 t-검정을 실시하였고 독립 t검정에 대한 설명을 하겠다.

 


▶ 독립 T-검정 : Student T-test

- One Sample t-test

1개의 sample 값들의 평균 특정값과 동일한지 비교.

예) 동전이 공정한지 확인하려고 할때 : p(x=H) = 0.5

  • 모집단에 대한 정보와 표본의 데이터를 비교

  • 위 통계치는, 평균을 빼고, 표준편차로 나눠줬는데 이러한 과정을 정규화라고 하며, 이 과정을 하게 되면
  • 주어진 데이터가 평균은 0, 표준편차가 1인 데이터로 scaling이 된다.

 

# n = 1 -> 동전1개 , p = 0.55 -> 동전이 앞면이 나올 확률 , size = 10 -> 반복 횟수
coinflips = np.random.binomial(n = 1, p = 0.55, size = 10)
coinflips

T-test Process

1) 귀무 가설 (Null Hypothesis)를 설정 (fair coin, p = 0.5)

H0:μ=x¯

μ= 모집단의 평균

x¯= 표본의 평균

2) 대안 가설 (Alternative Hypothesis) 를 설정 (not fair coin, p != 0.5)

H1:μx¯

3) 신뢰도를 설정 (Confidence Level) : 모수가 신뢰구간 안에 포함될 확률 (보통 95, 99% 등을 사용)

신뢰도 95%의 의미

= 모수가 신뢰 구간 안에 포함될 확률이 95%

= 귀무가설이 틀렸지만 우연히 성립할 확률이 5%

4) P-value를 확인

P-value는, 주어진 가설에 대해서 "얼마나 근거가 있는지"에 대한 값을

0과 1 사이의 값으로 scale 한

p-value가 낮다는 것은, 귀무가설이 틀렸을 확률이 높다.

예를 들어서 p-value가 0.05다. -> 우리가 뽑은 샘플 데이터로 낼 수 있는 결론이

귀무가설이 (틀렸지만 우연히 맞을 확률) 확률이 0.05다

: 귀무가설은 틀렸다

5) 이후 p-value를 바탕으로 가설에 대해 결론을 내림

np.random.seed(1111)

coinflips = np.random.binomial(n = 1, p = 0.5, size = 1000)

print(np.mean(coinflips)) # 결과 : 0.509

from scipy import stats

# ttest_1samp 함수의 파라미터 1) Sample 데이터, 2) 비교하려는 값

stats.ttest_1samp(coinflips, .5) # 결과 : (statistic=0.5690174909554405, pvalue=0.5694721717152109)

print(stats.ttest_1samp(np.random.binomial(n = 1, p = 0.6, size = 10), .5))
print(stats.ttest_1samp(np.random.binomial(n = 1, p = 0.6, size = 100), .5))
print(stats.ttest_1samp(np.random.binomial(n = 1, p = 0.6, size = 1000), .5))

#결과
Ttest_1sampResult(statistic=1.3093073414159542, pvalue=0.22286835013352013)
Ttest_1sampResult(statistic=1.8207158484808839, pvalue=0.07167088885580167)
Ttest_1sampResult(statistic=5.8501734426276215, pvalue=6.650107077235998e-09)

p-value가 (1-Confidence) 보다 낮은 경우, 귀무가설을 기각하고 대안 가설을 채택함

- Two Sample T-test

2개의 sample 값들의 평균 서로 동일한지 비교.

 

2개의 동전 (500원짜리 vs 100원짜리)을 여러 번 던져서 p(H)의 평균이 유사한 지

1) 귀무가설 : 두 확률은 같다 (차이가 없다).

H0 : x1=x2

 

2) 대안 가설 : 같지 않다

H1 : x1x2

 

3) 신뢰도 : 95%

np.random.seed(111)

coin1 = np.random.binomial(n = 1, p = 0.5, size = 500)
coin2 = np.random.binomial(n = 1, p = 0.5, size = 200)

print(np.mean(coin1))
print(np.mean(coin2))

stats.ttest_ind(coin1, coin2) 

[출력]

0.476 0.5

Ttest_indResult(statistic=-0.5733615498088787, pvalue=0.5665845925197331

유의 수준 0.05보다 p값이 크기때문에 귀무가설 기각 실패

즉, 두 확률은 같다.

np.random.seed(111)

coin1 = np.random.binomial(n = 1, p = 0.6, size = 500)
coin2 = np.random.binomial(n = 1, p = 0.5, size = 200)

print(np.mean(coin1))
print(np.mean(coin2))

stats.ttest_ind(coin1, coin2) 

0.604 0.5

Ttest_indResult(statistic=2.5217925052968604, pvalue=0.011897284906103034)

유의수준 0.05보다 p값이 작기 때문에 귀무가설 기각 성공

즉, 두 확률은 다르다.

 

※ 마치며..

통계학이라는 학문이 어떠한 뿌리를 가지고 있고 어떠한 과정을 거쳐서 앞으로 발전을 하게 될지에 대해 다소 주관적인 감상을 정리해 보았다. 통계학이라는 것이 현실과 유리된 것이 아니고 데이터를 통해서 얻어지는 수많은 현실 문제들을 어떻게 바라보고 어떻게 해결할 수 있을지에 대한 접근법을 제공한다는 측면에서 현대인의 필수 교양이라고 생각한다. 또한 통계학은 홀로 서 있는 학문이 아닌 다른 도메인 학문을 도와주는 도구 학문이므로 도메인 전문가와 통계 전문가의 협업을 통해 발전하는 것이므로 협업이 장려되는 문화에서 더욱 화려하게 꽃을 피울 수 있을 것이다.

이 글의 출처는 김재광 교수님의 블로그에서 퍼온 것입니다.

출처- 김재광(아이오와 주립대학교 통계학과 교수)

728x90