데이터분석/통계

서로다른 모집단이 두개일때 가설검정(독립표본 t검정)

씩씩한 IT블로그 2022. 8. 27. 15:39
반응형

검정 종류

다음과 같은 가설검정들 중 모집단의 개수가 두개인 단일표본 t검정에 대해 알아본다

 

독립 표본 t검정

1. 정의 : 두 집단 간의 평균치의 차이를 비교하는 통계 검정 방법

2. 기본 가정사항 : 독립성, 정규성, 등분산성

3. 예시

  3.1 A반의 학생 30명의 평균성적은 70, 표준편차는 15, B반 학생의 평균성적은 75, 표준편차는 13일때 두 반의 성적차이가 있는가?

      귀무가설 : A반의 학생의 평균성적과 B반의 학생의 평균성적은 차이가 없다.

      대립가설 : A반의 학생의 평균성적과 B반의 학생의 평균성적은 차이가 있다.

  3.2 20대여자의 휴대폰 사용량은 3시간 표준편차는 25분, 20대남자의 휴대폰사용량은 2시간 45분, 표준편차는 32분일때 남녀별 휴대폰 사용량은 차이가 있는가?

      귀무가설 : 성별 평균 휴대폰 사용량은 차이가 없다.

      대립가설 : 성별 평균 휴대폰 사용량은 차이가 있다.

  3.3 진짜 약을 처방한 A집단의 콜레스테롤 수치 평균은 230 표준편차는 13, 위약을 처방한 B집단의 콜레스테롤 수치 평균은 260, 표준편차는 11일때, 약의 효과가 있다고 할 수 있는가?

      귀무가설 : 콜레스테롤 수치의 차이가 없다. 따라서 약의 효과가 없다.

      대립가설 : 콜레스테롤 수치의 차이가 있다. 따라서 약의 효과가 있다.

4. 분석과정

  4.1 두 집단이 독립인지 확인

  4.2 정규성 검정(샤피로 윌키 테스트) => 정규성을 만족하지 않으면 (만 휘트니 검정)

  4.3 등분산 검정 (levene검정) => 등분산을 만족하지 않으면(웰치 t-test)

  4.4 독립성, 정규성, 등분산을 모두 만족하면 (독립표본 T검정)

 

정규성검정 (샤피로 윌키 테스트)

1. 가설검정

귀무가설 : 정규성을 충족한다.

대립가설 : 정규성을 충족하지 않는다.

2. 코드

# 정규성 검정
from scipy.stats import shapiro

# 데이터 준비
data = np.random.random(100)*100

# 정규성 검정
shapiro(data)

pvalue가 5.98이므로 귀무가설을 기각하지 않는다 => 정규성을 충족한다.

 

정규성을 만족하지 않을 때(맨 휘트니 테스트)

1. 가설검정

귀무가설 : 두 집단에 차이가 없다

대립가설 : 두 집단에 차이가 있다

2. 코드

from scipy.stats import mannwhitneyu

data1 = np.random.random(100)*100
data2 = np.random.random(100)*100

mannwhitneyu(data1, data2)

 

등분산검정 (levene 검정)

1. 가설검정

귀무가설 : 두 집단에 분산이 같다.

대립가설 : 두 집단에 분산이 같지 않다.

2. 코드

from scipy.stats import levene

data1 = np.random.random(100)*100
data2 = np.random.random(100)*100

mannwhitneyu(data1, data2)

 

등분산이 아닐때(웰치 t테스트)

1. 가설검정

귀무가설 : 두 집단의 평균이 차이가 없다.

대립가설 : 두 집단의 평균이 차이가 있다.

2. 코드

from scipy.stats import ttest_ind

data1 = np.random.random(100)*100
data2 = np.random.random(100)*100

ttest_ind(data1, data2, equal_var = False)

 

독립성, 정규성, 등분산성을 모두 만족할 때(독립표본 t검정)

1. 가설검정

귀무가설 : 두 집단의 평균이 차이가 없다.

대립가설 : 두 집단의 평균이 차이가 있다.

2. 코드

from scipy.stats import ttest_ind

data1 = np.random.random(100)*100
data2 = np.random.random(100)*100

ttest_ind(data1, data2,equal_var = True)

반응형