Statistics Hypothesis Testing
Student's T-Test에는 3개의 가정이 있다.
[정규성]
정규성을 만족해야하는데 이는 표본의 크기와 관련이 있다.
표본의 크기가 일반적으로 30개 이상인 경우 중심극한정리에 의해서 검정 없이도 정규성을 가정할 수 있다.
10개에서 30개인 경우는 Shapiro-Wilk test 등의 방법으로 정규성을 검증을 한다.
10개 미만인 경우 정규성을 띄지 않는 것으로 판단하고 비모수적 방법을 사용한다.
[독립성]
독립성을 만족해야한다.
동일한 대상에 대해서 전후를 비교하는 것은 독립성을 만족하지 못한다.
독립성을 만족하지 못하는 경우, 대응표본 T-검정이나 윌콕슨부호순위검정(Wilcoxon signed rank test)를 사용해야한다.
[등분산성]
등분산성을 만족해야한다.
2 sample t-test의 경우, 두 분포가 정규성을 따르고 등분산을 가질 때 쓰이고 분산이 다른 경우에 자유도를 수정해서 근사적 방법으로 독립표본 T-test를 실시한다.
1 sample t-test
아래와 같은 단측검정(one-side hypothesis testing)을 시행하고자 한다.
예를 들어, 모든 차량의 고속도로 연비가 평균적으로 15로 알려져 있을 때, 그런데 나는 15보다 클 것이라고 주장하고자 한다.
예)
H0(귀무가설) : 고속도로 연비가 평균적으로 15이다.
H1(대립가설) : 고속도로 연비가 평균적으로 15보단 클 것이다.
#R
t.test(mpg$hwy, mu = 15, alternative = 'greater')
#python
from scipy import stats
stats.ttest_1samp(sample, mu)
p-value가 0.05보다 작기 때문에 귀무가설을 기각하여, 고속도로 연비는 평균적으로 15보다 크다는 가설을 채택하게 된다.
2 sample t-test
이변량 연속형 자료에 사용되는 통계 추정절차이다. 2개의 독립표본의 평균이 서로 다른지 알아볼 수 있다.
- 물론 두 군이 서로 독립이고, 각각 정규성을 만족할 때 사용이 가능하다. 정규성을 만족하지 못한 경우에는 맨-휘트니 검정(Mann-Whitney Test)을 진행한다.
- 등분산 여부에 따라서 둘로 나뉘기 때문에 2 sample t-test의 경우 등분산 검정을 먼저 해야한다.
- levene.test() 함수를 사용해서 검정을 하고 귀무가설은 등분산이다.
예)
H0 : Toyota의 고속도로 연비의 평균은 ford의 고속도로 연비와 같다.
H1 : Toyota의 고속도로 연비의 평균은 ford의 고속도로 연비보다 크다.
#toyota
a <- mpg %>%
filter(manufacturer=="toyota")
#ford
b <- mpg %>%
filter(manufacturer=="ford")
#10 rows
a <- a[c(0:10),]
b <- b[c(0:10),]
#var.equal test
levene.test(a$hwy, b$hwy)
#is it right Toyota's mean greater than 'ford'?
t.test(a$hwy, b$hwy,alternative = "greater", var.equal = T)
#python
from scipy import stats
stats.ttest_ind(sampleA, sampleB, equal_var=True)
levene.test를 해보면 0.05보다 큰 값으로 나왔기 때문에 대립가설을 채택할 수 없기 때문에 등분산을 만족하여 t.test에서 var.equal=T로 두었다.
Paired t-test
한 표본을 기준으로 실험 전후를 비교하는 대응표본 t-test이다.
예를 들어, 수면약 투입 전과 후가 평균적으로 수면 시간의 차이가 있는지 없는지 알아보는 것이다.
대응 표본의 경우 '정규성'만 만족해도 사용이 가능하다.
예)
H0 : 수면제 투여 전과 후의 수면 시간에 차이가 없을 것이다.
H1 : 수면제 투여 전과 후의 수면 시간에 차이가 있을 것이다.
#prob = weights
before <- sample(4:8, size=20,replace=T, prob=c(1,1,2,3,5))
after <- sample(5:9, size=20,replace=T, prob=c(1,1,1,3,5))
data <- data.frame(a,b)
#paired t-test
t.test(before,after,alternative="two.sided",paired=TRUE)
p-value가 유의수준(0.05)보다 낮기 때문에 귀무가설을 기각하여 '수면제 투여 전과 후의 수면 시간에 차이가 평균적으로 있다'고 할 수 있다.