본문 바로가기
Data Visualization/Python Lib

[Scipy] T-검정 개념 및 파이썬 활용 예시 알아보기 (ttest-1samp, ttest_ind, ttest_rel)

by jangThang 2025. 6. 17.
반응형

 평균값 검정에 쓰이는 T 검정의 개념에 대해 알아보고, 이를 파이썬 Scipy.stats 라이브러리를 이용해서 시연해봅니다.

 

[ Contents ]

     

     

     

     

    1. T검정(T-test)

    두 집단(또는 한 집단과 기준값) 간의 평균 차이가 통계적으로 유의한지를 검정하는 통계적 방법

     

     표본을 통해 모집단의 평균을 추정할 때 T 검정을 합니다. 특정 값 또는 특정 집단과의 평균 차이가 어느 정도 되는지를 T 검정을 통해서 가름할 수 있습니다.

     

     

    1) 가설 설정

    귀무가설(H0) : 두 평균의 차이는 없다.
    대립가설(H1) : 두 평균의 차이가 있다.

     

     유의수준 5%에서 p-value 값이 0.05보다 작으면 귀무가설을 기각하여, 평균 차이가 있다고 볼 수 있습니다. 반대로 0.05보다 크면 귀무가설을 채택하여 통계적으로 차이가 없음을 입증할 수 있습니다.

     

     

    2) 검정 통계량(T-통계량)

     T-통계량이 클수록, 표본 평균이 비교 기준에서 더 멀리 떨어져 있다는 걸 의미합니다. 즉 귀무가설 기각 가능성이 높아지죠.

     표준 오차는 s / root(n) 입니다. 표본 표준편차를 루트(표본갯수)로 나눈 값이죠.

     

     

     대학교에서 통계를 배울 때에는 손 아프게 검정통계량을 일일이 계산하곤 했으나, 통계 패키지가 잘 되어 있어 실제론 그럴 필요가 없습니다. 아래에서는 파이썬 scipy.stats를 이용해서 사용해보는 예제를 다뤄봅니다.

     

     

     

    2. 활용 예시

    1) 단일표본 t-검정 (ttest_1samp)

    ttest_1samp(sample_data, popmean)

     

     단일표본 t-검정은 특정 값과 유의하게 평균이 다른지를 검정합니다.

     10대 남자 청소년 키 평균이 '170' 정도 되는지, 몸무게가 '70' 정도 되는지 등 특정 값과 평균을 비교할 때 사용합니다.

     

     

    from scipy.stats import ttest_1samp
    import numpy as np
    
    # 예: 샘플 직원 근속연수
    sample_years = np.array([4.5, 5.2, 6.1, 4.8, 5.0, 5.3, 6.0])
    popmean = 5.0
    
    t_stat, p_val = ttest_1samp(sample_years, popmean)
    print(f"t={t_stat:.3f}, p={p_val:.3f}")

     위 예시는 한 회사의 직원 평균 근속연수가 5년이 맞는지를 t검정한 결과입니다.

     p-value가 0.272 정도로 유의수준 0.05보다 상당히 크며, 평균 5년에 통계적으로 근접한다는 걸 알 수 있습니다.

     

     

    2)  독립표본 t-검정 (ttest_ind)

    ttest_ind(sample1, sample2, equal_var=True)

     

     독립표본 t-검정은 서로 다른 두 독립된 집단 간 평균 차이를 검정합니다. 예를 들어 성별이나 나이, 지역 등에 따른 독립 집단 간의 평균 차이를 검정할 때 쓰일 수 있죠.

     파라미터는 비교할 두 데이터 집단과 등분산 여부가 들어갑니다. 두 집단의 등분산 여부는 levene 등분산 검정을 통해 확인할 수 있으며, 해당 검정이 선행되야 합니다.

     

    2025.06.17 - [Data Visualization/Python Lib] - [Scipy] 등분산 검정 Levene Test, 파이썬 통계 패키지 이용해서 검정하는 방법

     

    [Scipy] 등분산 검정 Levene Test, 파이썬 통계 패키지 이용해서 검정하는 방법

    두 집단의 분산이 같은지 검정하는 걸 등분산 검정이라고 합니다. 대표적인 등분산 검정인 Levene test를 알아보고, 이를 파이썬 패키지를 이용해서 검정해보겠습니다. [ Contents ] 1. 등분산 검정 두

    star7sss.tistory.com

     하지만 데이터가 클 경우에는 중심극한정리에 의해 정규성과 등분산성이 가정되므로, 보통은 equal_var=True로 검정합니다.

     

     

    from scipy.stats import ttest_ind
    
    # 예: 남녀 수학 점수 비교
    male_scores = [88, 92, 85, 91, 87]
    female_scores = [78, 82, 84, 79, 81]
    
    t_stat, p_val = ttest_ind(male_scores, female_scores, equal_var=True)
    print(f"t={t_stat:.3f}, p={p_val:.3f}")

     위 예시는 남녀 수학 평균 점수 비교입니다. 데이터가 적긴 하지만, 눈대중으로 봐도 남자 점수가 좀 더 높죠.

     그래서 p-value도 0.002 수준으로 '평균이 같다'는 귀무가설을 기각하며, 평균 차이가 크다는 걸 통계적으로 알아볼 수 있습니다.

     

    반응형

     

    3. 대응표본 t-검정 (ttest_rel)

    ttest_rel(before, after)

     

     대응표본은 같은 대상에 대해 두 번 측정된 값을 말하며, 그 둘의 평균 차이를 t-검정할 수 있습니다.

     예시로는 다이어트 전후 체중, 학습 전후 시험 점수 평균을 비교할 수 있죠.

     

    from scipy.stats import ttest_rel
    
    # 예: 교육 전후 점수
    before = [70, 75, 80, 72, 78]
    after = [75, 78, 85, 77, 80]
    
    t_stat, p_val = ttest_rel(before, after)
    print(f"t={t_stat:.3f}, p={p_val:.3f}")

     

     동일한 대상을 시차 혹은 어떠한 사건 전후로 측정한 평균 비교를 할 때 쓰이며, 위 검정에서는 유의수준 0.05에서 귀무가설을 기각하므로 유의미한 평균 차이가 있다고 볼 수 있습니다.

     T통계량이 -이므로, 교육 후에 점수가 올랐다고 볼 수 있겠네요.

     

     이상, 여기까지 단일표본, 독립표본, 대응표본의 T검정과 예시를 알아봤습니다.

     

    반응형

    댓글