Techbrad

R, Python을 활용한 Paired Sample t-test (대응 표본 t 검정) 본문

AI & BigData/Basic

R, Python을 활용한 Paired Sample t-test (대응 표본 t 검정)

brad.min 2020. 12. 15. 22:47
반응형

Paired sample t-test (대응 표본)

대응 표본 t 검정이란 비교할 두 집단이 서로 독립적이어야하는 독립 표본 t 검정과는 다르게 두 집단이 상관 있는 경우 사용하는 검정 방법이다. 예를 들어 운동 초보와 운동 중급자가 같은 단백질 드링크를 마셨을 때 근육 성장률이 같을까? 이러한 조사를 하기 위해서는 대응 표본 t 검정을 이용할 수 있다. 좀 더 구체적으로 말하면 30명의 사람이 단백질 드링크를 먹고 나서 근육 성장률의 평균을 조사했다고 가정하자. 똑같은 30명의 사람이 한달 동안 운동을 꾸준히 한 후 단백질 드링크를 먹었을 때 평균을 구해 비교할 수 있다. .

 

실습

10명의 사격자가 1차, 2차 사격을 했을 때 각 차수의 평균을 비교해보았다.

 

H0(귀무가설): 1차와 2차 사격의 평균은 같다.

H1(대립가설): 1차와 2차 사격의 평균은 다르다.

 

R 활용

# 데이터

f_round = c(0.430,0.266,0.567,0.531,0.707,0.716,0.651,0.589,0.469,0.723)

s_round = c(0.415,0.238,0.390,0.410,0.605,0.609,0.632,0.523,0.411,0.612)



# 정규성 검정 (Shapiro-Wilk normality test)

shapiro.test(f_round)

shapiro.test(s_round)

 

# 정규성 검정 결과

data:  f_round

W = 0.92236, p-value = 0.3771

 

data:  s_round

W = 0.88271, p-value = 0.1402


# 등분산성 검정

var.test(f_round, s_round)

 

# 등분산성 검정

data:  f_round and s_round

F = 1.2511, num df = 9, denom df = 9, p-value = 0.7441

alternative hypothesis: true ratio of variances is not equal to 1

95 percent confidence interval:

 0.3107464 5.0367729

sample estimates:

ratio of variances 

          1.251063

정규성 검정 결과 p-value 모두 0.05 이상이므로 정규성을 띈다. 그리고 등분산성은 p-value가 0.7441이므로 역시 0.05보다 커 두 집단간의 등분산성을 인정합니다.

 

이와 같이 정규성과 등분산성을 검정하고나서 대응표본 t검정을 진행한다.

# t.test 함수 사용

t.test(f_round, s_round, paired = TRUE)


# Paired Sample t-test 결과

data:  f_round and s_round

t = 4.8638, df = 9, p-value = 0.0008911

alternative hypothesis: true difference in means is not equal to 0

95 percent confidence interval:

 0.043006 0.117794

sample estimates:

mean of the differences 

                 0.0804

결과 해석

p-value = 0.0008911 이므로 대립 가설을 채택할 수 있다. 따라서 첫번째와 두번째의 차이는 유의미하며 훈련의 성과가 있다는 것을 알 수 있습니다.

 

Python 활용

from scipy import stats
 
f_round = [0.430,0.266,0.567,0.531,0.707,0.716,0.651,0.589,0.469,0.723]
s_round = [0.415,0.238,0.390,0.410,0.605,0.609,0.632,0.523,0.411,0.612]
 
# 정규성 검정 (Shapiro-Wilk normality test)
f_round = stats.shapiro(f_round)
s_round = stats.shapiro(s_round)
print(f_round)
print(s_round)
 
#정규성 검정 결과
ShapiroResult(statistic=0.9223615527153015, pvalue=0.3770734369754791)
ShapiroResult(statistic=0.8827136754989624, pvalue=0.14017775654792786)


# 등분산성 검정 (levene test)
levene = stats.levene(f_round, s_round)
print(levene)

LeveneResult(statistic=0.00031724210860253736, pvalue=0.9859853433842356)


# 등분산성 검정 (bartlett test)
bartlett = stats.bartlett(f_round, s_round)
print(bartlett)

BartlettResult(statistic=0.062569072556436, pvalue=0.8024805473574832)


# Paired Sample t-test 결과
result = stats.ttest_rel(f_round, s_round)
print(result)

Ttest_relResult(statistic=4.863812745135183, pvalue=0.0008911154578225479)
반응형