ADP/통계분석

[통계분석] t-검정 (독립표본 t-검정)

rtw0202 2024. 10. 10. 18:40
728x90

t-검정이란?

어느 특정 집단의 평균을 추정하거나 차이를 검정할 때 사용

독립변수 X : 범주형 변수 (성별, 종교, 부서)

종속변수 y : 연속형 변수

 

독립표본 t-검정

두 개의 독립된 모집단의 평균을 비교할 때 사용

 

1. 가설수립

귀무가설 : 두 모평균 간에는 차이가 없다.

대립가설 : 두 모평균 간에는 차이가 있다.

 

2. 유의수준 설정 (0.05)

 

3. 정규성 검정

귀무가설 : 데이터는 정규성을 만족한다.

대립가설 : 데이터는 정규성을 만족하지 않는다.

from scipy.stats as stats

stats.shapiro(df['열 이름'])

=> p-value가 유의수준(0.05)보다 작으면 '데이터는 정규성을 만족하지 않는다'라는 대립가설 채택

=> p-value가 유의수준(0.05)보다 크면 '데이터는 정규성을 만족한다'라는 귀무가설 채택

 

4. 등분산성 검정

귀무가설 : 데이터는 등분산성을 만족한다.

대립가설 : 데이터는 등분산성을 만족하지 않는다.

from scipy.stats as stats

stats.levene(X1, X2)

=> p-value가 유의수준(0.05)보다 작으면 '데이터는 등분산성을 만족하지 않는다'라는 대립가설 채택

=> p-value가 유의수준(0.05)보다 크면 '데이터는 등분산성을 만족한다'라는 귀무가설 채택

 

5. 검정통계량 값 및 유의확률(p-value) 계산

1. 데이터가 주어진 경우

1-1. 데이터가 정규성과 등분산성을 만족하는 경우

stats.ttest_ind(df[X1, df[X2], equal_var=True)

1-2. 데이터가 정규성만 만족하고 등분산성은 만족하지 않는 경우

stats.ttest_ind(df[X1], df[X2], equal_var=False)

1-3. 데이터가 정규성을 만족하지 않는 경우

stats.mannwhitneyu(df[X1], df[X2], alternative=‘검정 방법’)

alternative(‘greater’) # ‘X1의 평균이 X2의 평균보다 크다’라는 대립가설을 검정 (오른쪽 단측검정)
alternative(‘less’) # ‘X1의 평균이 X2의 평균보다 작다’라는 대립가설을 검정 (왼쪽 단측검정)
alternative(‘two-sided’) # ‘두 모평균 간에는 차이가 있다’라는 대립가설을 검정 (양측검정)

=> p-value가 유의수준(0.05)보다 작으면 ‘두 모평균 간에는 차이가 있다’라는 대립가설 채택

=> p-value가 유의수준(0.05)보다 크면 ‘두 모평균 간에는 차이가 없다’라는 귀무가설 채택


2. 데이터가 주어지지 않은 경우

2-1. 검정통계량 t 계산

$$t = \frac{\bar{X}_1 - \bar{X}_2}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}$$

$$\bar{X}_1 = \text{첫 번째 집단의 평균}$$
$$\bar{X}_2 = \text{두 번째 집단의 평균}$$
$$s_1 = \text{첫 번째 집단의 표준편차} $$
$$s_2 = \text{두 번째 집단의 표준편차}$$
$$n_1 = \text{첫 번째 집단의 표본 크기}$$
$$n_2 = \text{두 번째 집단의 표본 크기}$$

공통 표준편차

$$S_p = \sqrt{\frac{(n_A - 1) \times S_A^2 + (n_B - 1) \times S_B^2}{n_A + n_B - 2}}$$

$$S_A : 집단 A의 표준편차$$

$$S_B : 집단 B의 표준편차$$

$$n_A : 집단 A의 표본 크기$$

$$n_B : 집단 B의 표본 크기$$ 

표준오차

$$SE = S_p \times \sqrt{\frac{1}{n_A} + \frac{1}{n_B}}$$

$$S_p : 공통 표준편차$$

자유도

$$ df = n_A + n_B - 2$$


2-2. p-value 계산

p_value = 1-stats.t.cdf(t_stat, df) # ‘X1의 평균이 X2의 평균보다 크다’라는 대립가설을 검정(단측검정)
p_value = stats.t.cdf(t_stat, df) # ‘X1의 평균이 X2의 평균보다 작다’라는 대립가설을 검정 (단측검정)
p_value = 2 * (1-stats.t.cdf(t_stat, df)) # ‘두 모평균 간에는 차이가 있다’라는 대립가설을 검정 (양측검정)

=> p-value가 유의수준(0.05)보다 작으면 ‘두 모평균 간에는 차이가 있다’라는 대립가설 채택

=> p-value가 유의수준(0.05)보다 크면 ‘두 모평균 간에는 차이가 없다’라는 귀무가설 채택

728x90