본문 바로가기
데이터분석과 AI/빅데이터 분석기사

[빅데이터분석기사 실기][작업형3] t검정(대응표본, 독립표본, 단일표본)

by 우공80 2023. 5. 18.
728x90

T-검정

간단 요약

- 대응표본 가설검정은 시점 차이 등에 따라 쌍을 이루는 관찰이 있을 때 사용한다.

- 독립표본 가설검정은 두 독립 집단의 측정치를 비교할 때 사용한다.

- 단일표본 가설검정은 알려지거나 가정한 평균과 단일 집단의 평균을 비교할 때 사용한다.

 

- 세 가지 가설 검정은 모수 검정으로서 데이터가 정규분포를 따른다고 가정한다.

 

t-검정에 대해서는 아래 자료를 참고: 

https://mindscale.kr/course/basic-stat-python/15/

 

대응표본 가설 검정

대응표본 가설 검정은 동일한 집단의 관측값이 서로 다른 조건 또는 서로 다른 시점에 따라 차이가 있는 경우, 관측치의 평균 사이에 유의한 차이가 있는지 확인합니다. 
예를 들어 개인 그룹이 있고 치료 전후에 혈압을 측정한다고 가정하면, 치료가 혈압에 유의미한 영향을 미쳤는지 여부를 평가하기 위해 치료 전과 치료 후 측정한 혈압의 평균을 비교하기 위해 대응표본 t-검정을 사용합니다.

치료 전과 치료 후가 쌍을 이루기 때문에 대응표본, 혹은 쌍체표본 가설검정이라고 합니다.

import scipy.stats as stats

# 혈압약을 먹기 전과 후의 혈압
before = [135, 150, 148, 165, 170]
after = [130, 140, 160, 155, 175]

# 대응표본 검정 수행 - 혈압약을 먹기 전이 먹은 후보다 크면 대립가설이 참이된다.(아래 두 코드는 같은 결과)
t_statistic, p_value = stats.ttest_rel(before, after,alternative='greater')
# t_statistic, p_value = stats.ttest_rel(after, before,alternative='less')

# 결과 출력(유의수준 0.05)
print("T-Statistic:", t_statistic)
print("P-Value:", p_value)
print("검정결과:",'귀무가설 기각' if p_value <= 0.05 else '귀무가설 채택')

 

독립 표본 가설 검정

독립 표본 가설 검정은 두 독립 그룹의 평균을 비교하려는 경우에 사용됩니다. 
예를 들어, 다른 교수법(그룹 A와 그룹 B)을 받은 학생들의 시험 점수를 비교하는 경우, 두 그룹의 평균 점수 사이에 통계적으로 유의미한 차이가 있는지 확인하는 데 사용되어, 이는 한 교육 방법이 다른 교육 방법보다 더 효과적인지 나타냅니다.

 

독립 표본 가설 검정은 표본이 등분산성을 만족하는 경우에는 ttest_ind의 equal_var=True 옵션을 주고(독립표본 t-test), 등분산성을 만족하지 않는 경우에는 equal_var=False 옵션을 줍니다.(Welch's t-test)

 

아래는 Group A와 Group B 간에, 그리고, Group C와 Group D 간의 독립 표본 검정입니다.

import scipy.stats as stats
import numpy as np
# Group A 와 Group B, Group C와 Group D에 대한 샘플 데이터 생성
group_a=[]
group_b=[]
group_c=[]
group_d=[]
for i in np.arange(0,100,1):
    group_a.append(np.random.random()*100)
    group_b.append(np.random.random()*100)
    
    group_c.append(np.random.random()*100)
    group_d.append(np.random.random()*150)

# 등분산성 검정 수행
print('Group A, B간의 등분산성:',stats.levene(group_a,group_b))
print('Group C, D간의 등분산성:',stats.levene(group_c,group_d))

Output: 

Group A, B간의 등분산성: LeveneResult(statistic=0.13030251703814894, pvalue=0.7185034293035508)
Group C, D간의 등분산성: LeveneResult(statistic=15.853025820319205, pvalue=9.6084168923797e-05)

levene 검정 결과 Group A와 Group B는 p_value > 0.05 이므로 등분산성을 가지며,
Group C와 Group D는 p_value < 0.05로 등분산성을 갖지 않습니다.

이에 따라 Group A, B의 독립표본 검정을 수행할 때, equal_var=True로 옵션을 주었고, 

Group C, D에 대해서는 equal_var=False로 옵션을 주었습니다. 

# Group A, B에 대한 독립표본 검정 수행 
t_statistic, p_value = stats.ttest_ind(group_a, group_b,alternative='two-sided',equal_var=True)
# 결과 출력(유의수준 0.05)
print("※ Group A, B 에 대한 독립표본 검정")
print("T-Statistic:", t_statistic)
print("P-Value:", p_value)
print("검정결과:",'귀무가설 기각'if p_value <= 0.05 else '귀무가설 채택')

# Group C, D에 대한 독립표본 검정 수행 
t_statistic, p_value = stats.ttest_ind(group_c, group_d,alternative='two-sided',equal_var=False)
# 결과 출력(유의수준 0.05)
print("※ Group C, D 대한 독립표본 검정")
print("T-Statistic:", t_statistic)
print("P-Value:", p_value)
print("검정결과:",'귀무가설 기각' if p_value <= 0.05 else '귀무가설 채택')

Output:

※ Group A, B 에 대한 독립표본 검정
T-Statistic: 0.36098897672584146
P-Value: 0.7184925490407656
검정결과: 귀무가설 채택

※ Group C, D 대한 독립표본 검정
T-Statistic: -3.243441666089834
P-Value: 0.0014131353552950209
검정결과: 귀무가설 기각

결과는 Group A, B에 대해서는 p_value>0.5 로서 귀무가설이 채택되어 각 집단의 평균은 동일하다고 할 수 있습니다. Group C, D에 대해서는 p_value < 0.5 로서 귀무가설이 기각되고, 각 집단의 평균은 동일하지 않다고 할 수 있습니다.


단일 표본 가설 검정

단일 표본 가설 검정은 단일 그룹 또는 표본이 있고 그 평균을 알려지거나 가정된 값과 비교하려는 경우에 사용됩니다. 표본 평균이 가설 평균과 유의하게 다른지 확인하는 데 관심이 있습니다.
예를 들어, 병원에 있는 신생아의 평균 체중이 전국 평균인 3.5kg과 다른지 조사한다고 가정합니다. 단일 표본 t-검정은 병원에 있는 아기의 평균 체중이 가정된 평균인 3.5kg과 유의하게 다른지 검정하는 데 사용됩니다.

import scipy.stats as stats

# Sample data
sample = [3.2, 3.6, 4.1, 4.3, 4.5, 3.8, 3.4]

# Hypothesized mean
hypothesized_mean = 3.5

# 단일표본 검정
t_statistic, p_value = stats.ttest_1samp(sample, hypothesized_mean)

# 검정 결과(유의수준 0.05)
print("T-Statistic:", t_statistic)
print("P-Value:", p_value)
print("검정결과:",'귀무가설 기각' if p_value <= 0.05 else '귀무가설 채택')

※ 단일 표본 가설 검정( ttest-1 samp)은 관측치가 정규성을 만족하는 모수 검정에 사용합니다. 정규성을 만족하지 않는 경우 비모수 검정으로서 wilcoxon 검정을 사용합니다.

alternative 옵션에 대한 선택:

대립가설을 어떻게 세우느냐에 따라 옵션을 다르게 설정할 수 있습니다.

1. two-sided: 기본값, 두 집단 a, b에 유의미한 차이가 있는지 여부

2. greater: a가 b보다 크면 대립가설이 참

3. less: a가 b보다 작으면 대립가설이 참

대응표본 검정 코드에 주석으로 달아놓은 것처럼, greater와 less는 a, b의 입력이 반대가 되면 결과가 달라집니다. 

 

※ 추가 내용(2023.6.23) : ttest의 입력값은 list나 series로 넣어야 합니다. 1열 DataFrame을 넣는 경우 리스트가 반환되는 경우를 확인했습니다. 같은 결과이지만, 시험에서는 어떤 영향이 있을지 모르니, list나 series로 변환하세요.

 

※ 위 내용은 "빅데이터 분석기사 실기 준비를 위한 캐글 놀이터"  및 "데이터마님 scipy tutorial"을 따라가며 공부한 내용입니다.

https://www.kaggle.com/datasets/agileteam/bigdatacertificationkr

 

Big Data Certification KR

빅데이터 분석기사 실기 (Python, R tutorial code)

www.kaggle.com

https://www.datamanim.com/dataset/97_scipy/scipy.html#t-one-sample

728x90

댓글