[python] t-test κ²€μ • -1-

GROOTYΒ·2023λ…„ 5μ›” 9일
0

πŸ“–T-κ²€μ •μ΄λž€?

T- 검정은 λͺ¨μ§‘λ‹¨μ˜ λΆ„μ‚°μ΄λ‚˜ ν‘œμ€€νŽΈμ°¨λ₯Ό μ•Œμ§€ λͺ»ν•  λ•Œ, ν‘œλ³ΈμœΌλ‘œλΆ€ν„° μΆ”μ •λœ λΆ„μ‚°μ΄λ‚˜ ν‘œμ€€νŽΈμ°¨λ₯Ό μ΄μš©ν•˜μ—¬ 두 λͺ¨μ§‘λ‹¨μ˜ ν‰κ· μ˜ 차이λ₯Ό μ•Œμ•„λ³΄λŠ” κ²€μ • 방법이닀.
μ§‘λ‹¨μ˜ μˆ˜λŠ” μ΅œλŒ€ 2κ°œκΉŒμ§€ 비ꡐ κ°€λŠ₯ν•˜λ©° 3개 이상인 경우 뢄산뢄석(ANOVA)λ₯Ό μ‚¬μš©ν•œλ‹€.

πŸ“Œμ§‘λ‹¨ κ°„ 차이뢄석: 평균 λ˜λŠ” λΉ„μœ¨ 차이λ₯Ό 뢄석

λͺ¨μ§‘λ‹¨μ—μ„œ μΆ”μΆœν•œ ν‘œλ³Έμ •λ³΄λ₯Ό μ΄μš©ν•˜μ—¬ λͺ¨μ§‘λ‹¨μ˜ λ‹€μ–‘ν•œ νŠΉμ„±μ„ κ³Όν•™μ μœΌλ‘œ μΆ”λ‘ ν•  수 μžˆλ‹€.

  • λ…λ¦½λ³€μˆ˜ : λ²”μ£Όν˜•, μ’…μ†λ³€μˆ˜ : μ—°μ†ν˜•
  • t뢄포 μ‚¬μš© : ν‘œλ³Έν‰κ· μ„ μ΄μš©ν•˜μ—¬ μ •κ·œλΆ„ν¬μ˜ 평균을 해석할 λ•Œ 많이 μ‚¬μš©.
  • 두 개 μ΄ν•˜μ˜ 집단 비ꡐλ₯Ό μœ„ν•œ 평균과 ν‘œμ€€νŽΈμ°¨μ˜ λΉ„μœ¨μ˜ 차이λ₯Ό κ΅¬ν•˜κ³  κ·Έ 차이가 μš°μ—°μ΄λƒ μ•„λ‹ˆλƒλ₯Ό νŒλ‹¨ν•˜λŠ” κ²€μ • 방법
  • 단일 λͺ¨μ§‘λ‹¨μ˜ 평균에 λŒ€ν•œ κ°€μ„€κ²€μ •(one samples t-test)
    one samples t-test λŠ” μ •κ·œλΆ„ν¬μ— λŒ€ν•΄ κΈ°λŒ“κ°’μ„ μ‘°μ‚¬ν•˜λŠ” 검정방법

β“μ‹€μŠ΅ 예제 1 (one samples t-test)

단일 λͺ¨μ§‘λ‹¨μ˜ 평균에 λŒ€ν•œ κ°€μ„€κ²€μ • (one samples t-test)

μ–΄λŠ 남성 μ§‘λ‹¨μ˜ 평균 ν‚€ κ²€μ •
ν•˜λ‚˜μ˜ 집단에 λŒ€ν•œ ν‘œλ³Έ 평균이 예츑된 평균과 같은지 μ—¬λΆ€λ₯Ό 확인

  • πŸ“Œκ·€λ¬΄(H0) : μ§‘λ‹¨μ˜ 평균 ν‚€κ°€ 177이닀.
    H0 : ν‘œλ³Έμ˜ 평균 = λͺ¨μ§‘단평균(ΞΌ), ν‘œλ³Έμ˜ 평균 - λͺ¨μ§‘λ‹¨μ˜ 평균 = 0
  • πŸ“ŒλŒ€λ¦½(H1) : μ§‘λ‹¨μ˜ 평균 ν‚€κ°€ 177이 μ•„λ‹ˆλ‹€.
    H1 : ν‘œλ³Έμ˜ 평균 β‰  λͺ¨μ§‘단평균(ΞΌ), (ν‘œλ³Έμ˜ 평균 - λͺ¨μ§‘λ‹¨μ˜ 평균 > 0) λ˜λŠ” (ν‘œλ³Έμ˜ 평균 - λͺ¨μ§‘λ‹¨μ˜ 평균 < 0)
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

# ν•˜λ‚˜μ˜ 집단에 λŒ€ν•œ ν‚€ ν‘œλ³Έ
one_sample = [167.0, 162.9, 169.2, 176.7, 187.5]
print(np.mean(one_sample))
>> 172.66

'''
# stats.ttest_1samp() : ν•˜λ‚˜μ˜ 점수 그룹의 평균에 λŒ€ν•œ T-검정을 κ³„μ‚°ν•©λ‹ˆλ‹€.
- popmean : κΈ°λŒ“κ°’
'''
result = stats.ttest_1samp(one_sample, popmean=177)
print('statistic:%.3f, pvalue:%.3f' %result)
>> statistic:-1.001, pvalue:0.373

πŸ“μ‹€μŠ΅ 예제 κ²°λ‘ 

해석 : pvalue:0.373 > 0.05 μ΄λ―€λ‘œ 귀무 채택
μ§‘λ‹¨μ˜ 평균 ν‚€κ°€ 177이닀.

λ§Œμ•½ p-value κ°€ 0.05 보닀 μ»Έλ‹€λ©΄ 귀무가섀 κΈ°κ°ν•˜κ³  λŒ€λ¦½κ°€μ„€μ„ μ±„νƒν•œλ‹€.

πŸ“Œλ‘ 집단 κ°„ 차이뢄석 : 평균 λ˜λŠ” λΉ„μœ¨ 차이λ₯Ό 뢄석

λ…λ¦½ν‘œλ³Έ t κ²€μ •(independent two sample t-test)

  • μ„ ν–‰ 쑰건 : 두 집단은 μ •κ·œλΆ„ν¬λ₯Ό 따라야 ν•œλ‹€. 두 μ§‘λ‹¨μ˜ 뢄산이 λ™μΌν•˜λ‹€λŠ” 가정이 ν•„μš”

β“μ‹€μŠ΅μ˜ˆμ œ 2 (independent two sample t-test)

μ„œλ‘œ 독립인 두 μ§‘λ‹¨μ˜ 평균 차이 κ²€μ •(independent samples t-test)

  • λ‚¨λ…€μ˜ 성적, A반과 B반의 ν‚€, 경기도와 μΆ©μ²­λ„μ˜ μ†Œλ“ λ”°μœ„μ˜ μ„œλ‘œ 독립인 두 μ§‘λ‹¨μ—μ„œ 얻은 ν‘œλ³Έμ„ λ…λ¦½ν‘œλ³Έ(two sample)이라고 ν•œλ‹€.
  • μ‹€μŠ΅) 남녀 두 집단 κ°„ 파이썬 μ‹œν—˜μ˜ 평균 차이 κ²€μ •
import numpy as np
import pandas as pd
from scipy import stats

male = [75, 85, 100, 72.5, 86.5]
female = [63.2, 76, 52, 100, 70]
print(np.mean(male), np.mean(female))   
>> 83.8 72.24 # 두 집단 평균, 평균 μ°¨μ΄λŠ” 11.56

❓남녀 두 집단 κ°„ 파이썬 μ‹œν—˜μ˜ ν‰κ· μ˜ 차이가 μ•½ 11점 정도 λ‚˜λŠ”λ° μš°μ—°νžˆ λ°œμƒν•  ν™•λ₯ μ€ μ–Όλ§ˆμΈκ°€??
λ§Œμ•½μ— μš°μ—°νžˆ λ°œμƒν–ˆλ‹€λ©΄ 평균은 같은 것이고, μš°μ—°νžˆ μ•„λ‹ˆλ©΄ λ‹€λ₯Έ 것이닀.

  • 귀무 : 남녀 두 집단 κ°„ 파이썬 μ‹œν—˜μ˜ ν‰κ· μ˜ 차이가 μ—†λ‹€.
  • λŒ€λ¦½ : 남녀 두 집단 κ°„ 파이썬 μ‹œν—˜μ˜ ν‰κ· μ˜ 차이가 μžˆλ‹€.
'''
scipy.stats.ttest_ind(a, b, axis=0, equal_var=True, nan_policy='propagate', \
               permutations=None, random_state=None, alternative='two-sided', trim=0)
                        
>이것은 2개의 독립적인 ν‘œλ³Έμ΄ λ™μΌν•œ 평균(μ˜ˆμƒ) 값을 κ°–λŠ”λ‹€λŠ” 귀무 가섀에 λŒ€ν•œ κ²€μ •μž…λ‹ˆλ‹€. 
이 ν…ŒμŠ€νŠΈλŠ” 기본적으둜 λͺ¨μ§‘λ‹¨μ˜ 뢄산이 λ™μΌν•˜λ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.
νŒŒλΌλ―Έν„° a와 b의 경우 배열은 μΆ• (기본적으둜 첫 번째) 에 ν•΄λ‹Ήν•˜λŠ” 차원을 μ œμ™Έν•˜κ³  
λͺ¨μ–‘이 동일해야 ν•©λ‹ˆλ‹€.(λ°°μ—΄κ³Ό 같은 λͺ¨μ–‘μ΄μ—¬μ•Όν•œλ‹€.

* equal_var = (True or False)
True(κΈ°λ³Έκ°’)인 경우 λͺ¨μ§‘단 뢄산이 λ™μΌν•˜λ‹€κ³  κ°€μ •ν•˜λŠ” ν‘œμ€€ 독립 2ν‘œλ³Έ 검정을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. 
False인 경우 λͺ¨μ§‘단 뢄산이 λ™μΌν•˜λ‹€κ³  κ°€μ •ν•˜μ§€ μ•ŠλŠ” Welch의 t-검정을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.
'''
# two_sample = stats.ttest_ind(male, female)
two_sample = stats.ttest_ind(male, female, equal_var=True)   
# equl_var=True : 등뢄산성이 κ°™λ‹€κ³  κ°€μ •

print(two_sample)
>> Ttest_indResult(statistic=1.233193127514512, pvalue=0.2525076844853278) 
# statisticκ°€ t-value 이닀.

κ²°λ‘  : p-value(0.2525) > Ξ±(0.05) μ΄λ―€λ‘œ 귀무 채택
남녀 두 집단 κ°„ 파이썬 μ‹œν—˜μ˜ ν‰κ· μ˜ 차이가 μ—†λ‹€. λ‹€μ‹œ 말해 μš°μ—°νžˆ λ°œμƒν•œ 자료라고 ν•  수 μžˆλ‹€.

profile
개발 μ‹œμž‘

0개의 λŒ“κΈ€