[R] T-Test 가설검정

[R] T-Test 가설검정

t-테스트(t-test, 또는 ‘t-검증’)은 모집단의 분산이나 표준편차를 알지 못할 때, 표본으로부터 추정된 분산이나 표준편차를 이용하여 두 모집단의 평균에 통계적으로 유의한 차이가 있는지 알아볼 때 사용하는 통계 분석 기법 입니다.

R에는 t검정을 위한 함수가 내장되어 있기 때문에 특별한 패키지 설치 없이 수행할 수 있습니다.

#01. One-Sample T-test(단일 표본 t-검정)

  • 하나의 모집단 평균이 이전보다 커졌는지/작아졌는지/달라졌는지를 통계적으로 알아보기 위해 사용한다.
  • 하나의 양적 자료가 사용된다.

학생들의 평균키 검증

💡 전체 학생들 중 20명의 학생들을 추려 키를 측정해서 전체 학생들의 평균 키가 175cm인지 아닌지 알아보고 싶다.

가설설정

가설 내용 의미
귀무가설 학생들의 평균키가 175와 차이가 없다. 학생들의 평균 키가 175cm가 맞다.
대립가설 귀무가설을 부정 학생들의 평균키가 175보다 크다/작다/다르다.

T테스트의 의미

이름 현상 해석
귀무가설이 참인 경우 관측된 p-value가 0.05 이상인 경우 학생들의 평균키는 175cm와 차이가 없다.
그러므로 평균키는 175다.
대립가설을 기각한다.
귀무가설이 거짓인 경우 관측된 p-value가 0.05보다 작은 경우 학생들의 평균 키는 175cm와 차이가 있다.
그러므로 평균은 175가 아니다.
(alternative값에 따라 크다, 작다로 판별될 수 있음)
대립가설을 채택한다.

구문 설명

t.test(데이터,
       alternative = c("two.sided", "less", "greater"),
       mu = 0,
       conf.level = 0.95)
파라미터 설명
alternative 양쪽이 차이가 없다.(two.sided), 작다(less), 크다(greater)
mu 귀무가설이 참일 때의 모평균
conf.level 신뢰수준 (95% 기본값)

t테스트 수행

학생 20명에 대한 키를 리스트 구성 (랜덤배치)

height = c(164, 163, 173, 165, 180, 173, 175, 167, 176, 166, 181, 163, 173,170, 172, 171, 178, 168, 170, 166)

학생 20명의 평균키가 175와 차이가 없다”라는 귀무가설에 대한 t-test

t.test(height, alternative="two.sided", mu=175)

💻 출력결과

One Sample t-test

data:  height
t = -3.5042, df = 19, p-value = 0.002373
alternative hypothesis: true mean is not equal to 175
95 percent confidence interval:
 168.1316 173.2684
sample estimates:
mean of x
    170.7

💻 출력결과 해석

💡 유의확률(p-value) 0.002373이므로 유의수준 0.05(95percent)에서 귀무가설을 기각한다. 즉, 학생들의 평균키는 175가 아니다.

#02. Independent two sample T-test(독립 표본 t-검정)

  • 서로 다른 두개의 그룹 간 평균의 차이가 유의미한지 여부를 판단.
  • 두 개의 독립적 데이터로 이루어진다.
  • 두개의 표본이 “독립”적 이기 위해서는 아래 조건을 만족해야 한다.
    • 두개의 표본이 서로 관계 없는 모집단에서 추출 되었을 것
    • 표본 간에는 아무런 관계가 없을 것
  • p-value가 0.05보다 작은 경우 귀무가설을 기각하고 대립가설 채택

두 집단간의 키가 같은지 분석

💡 집단 1과 집단 2에서 각각 20명의 학생들을 추려, 각 집단의 키가 같은지, 다른지 알아보고 싶다.

가설설정

가설 내용 의미
귀무가설 두 집단의 평균 키는 차이가 없다. 그러므로 두 집단의 평균은 같다.
대립가설 귀무가설의 부정 두 집단의 평균은 같지 않다.

구문설명

단일 표본 t-검정구문에서 데이터를 두 개로 구분짓고 모집단의 평균을 의미하는 mu대신 두 집단의 분산 동일성 여부가 같은지 다른지에 대한 옵션인 var.equal 파라미터를 지정한다.

t.test(데이터1, 데이터2,
       alternative = c("two.sided", "less", "greater"),
       var.equal = FALSE,
       conf.level = 0.95)
파라미터 설명
alternative 양쪽이 차이가 없다.(two.sided), 데이터1이 더 작다(less), 데이터1이 더 크다(greater)
mu 귀무가설이 참일 때의 모평균
conf.level 신뢰수준 (95% 기본값)

독립 표본 T 테스트 수행

두 집단의 키 샘플링하기

# 랜덤값을 사용하고 있기 때문에 실행시마다 결과가 다를 수 있다.
group1Heights <- sample(157:178, 20)
group2Heights <- sample(162:182, 20)
print(group1Heights)
print(group2Heights)

💻 출력결과

 [1] 164 173 176 160 161 174 168 175 172 167 162 177 178 157 171 158 170 166 163 165
 [1] 174 169 166 173 178 164 176 167 180 171 182 179 170 177 172 181 163 175 162 165

Case 1 - 두 집단의 평균키가 차이가 없다.

t.test(group1Heights, group2Heights,
        alternative = "two.sided",
        var.equal = FALSE,
        conf.level = 0.95)

💻 출력결과

Welch Two Sample t-test

data:  group1Heights and group2Heights
t = -2.5327, df = 37.91, p-value = 0.01558
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -9.086765 -1.013235
sample estimates:
mean of x mean of y
   167.30    172.35

💻 출력결과 해석

💡 p-value가 0.01558이므로 (0.05보다 작으므로) 귀무가설을 기각하고 대립가설을 채택<br> 두 집단의 평균키는 같지 않다.

Case 2 - group1Heights는 group2Heights보다 작지 않다.

t.test(group1Heights, group2Heights,
        alternative = "less",
        var.equal = FALSE,
        conf.level = 0.95)

💻 출력결과

Welch Two Sample t-test

data:  group1Heights and group2Heights
t = -2.5327, df = 37.91, p-value = 0.00779
alternative hypothesis: true difference in means is less than 0
95 percent confidence interval:
  -Inf -1.688167
sample estimates:
mean of x mean of y
   167.30    172.35

💻 출력결과 해석

💡 p-value가 0.00779이므로 (0.05보다 작으므로) 귀무가설(두 집단의 평균에 차이가 없음/평균이 같음)을 기각하고 대립가설을 채택

#03. Paired T-test(대응 표본 t-검정)

표본의 각 사례마다 대응하는 2개의 관측치가 있다.

다이어트 보조제의 효과 분석

💡 어느 제약회사가 개발 중인 약은 3개월 동안 이 약을 먹으며 고지한 생활규칙을 지키면 2kg 이상의 효과를 볼 수 있다고 자신하고 있을 때, 다이어트 보조제를 복용한 사람들 중 20명을 추려 복용 전/후의 체중 차이가 유의미한지 알아보고 싶다.

가설설정

가설 내용 해석
귀무가설 복용 전/후의 체중 차이가 없다. 그러므로 이 약은 다이어트에 효과가 없다.
대립가설 귀무 가설을 부정 이 약은 다이어트에 효과가 있다.

구문설명

단일 표본 t-검정구문에서 데이터를 두 개로 구분짓고 모집단의 평균을 의미하는 mu대신 두 집단의 분산 동일성 여부가 같은지 다른지에 대한 옵션인 var.equal 파라미터를 지정한다.

t.test(데이터1, 데이터2,
       mu=2,
       alternative = c("two.sided", "less", "greater"),
       conf.level = 0.95,
       paired=TRUE)
파라미터 설명
alternative 양쪽이 차이가 없다.(two.sided), 데이터1이 더 작다(less), 데이터1이 더 크다(greater)
mu=0 데이터1이 데이터2보다 mu값 만큼 더 alternative 하다.
conf.level 신뢰수준 (95% 기본값)
paired=TRUE 대응 표본 T테스트 수행

대응 표본 t테스트 수행

보조제 복용전 몸무게 데이터 샘플링

beforeWeight <- sample(60:90, 20)
print(beforeWeight)

💻 출력결과

[1] 84 89 60 69 87 88 90 65 80 83 67 74 64 76 79 73 72 61 71 62

보조제 복용 후의 몸무게 랜덤 계산

afterWeight <- beforeWeight

x <- sample(2:3, 20, replace=T)

for (i in seq(0:19)) {
    afterWeight[i] <- afterWeight[i] - x[i]
}

print(afterWeight)

💻 출력결과

[1] 82 86 57 66 85 85 87 62 77 81 65 72 62 74 77 71 70 58 68 59

대응 표본 t-검정 확인

# before가 after보다 mu=2 만큼 greater 하다.
t.test(beforeWeight, afterWeight, mu=2, alternative="greater", paired=TRUE)

💻 출력결과

Paired t-test

data:  beforeWeight and afterWeight
t = 4.3589, df = 19, p-value = 0.0001689
alternative hypothesis: true difference in means is greater than 2
95 percent confidence interval:
 2.301655      Inf
 sample estimates:
mean of the differences
                    2.5

💻 출력결과 해석

💡 p-value가 0.0004366이므로 (0.05보다 작으므로) 귀무가설(두 집단의 평균에 차이가 없음/평균이 같음)을 기각하고 대립가설을 채택.
그러므로 이 약을 먹기 전이 먹은 후 보다 2kg정도 몸무게가 더 많이 나간다.
즉, 이 약은 다이어트에 효과가 있다

#04. One-Sample T-test(단일 표본 t-검정) 예제

1) chickwts 데이터 셋 예제

데이터 확인하기

head(chickwts)

💻 출력결과

img

T-test 수행

t.test(chickwts$weight)

💻 출력결과

img

💻 출력결과 해석

  • 전체 관측치 수는 71개이다. (df + 1)
  • 99% 신뢰구간을 구하기 위해서는 “conf.level=0.99”라는 옵션을 사용할 수 있다.
  • 닭 무게의 점 추정량은 261.3이며, 95% 신뢰구간은 242.8에서 279.8이다.
  • 닭 무게에 대한 p-value는 p-value<2.2e-16이므로 귀무가설이 기각된다.

2) Wage 데이터셋 예제

패키지 가져오기

REPO_URL <- "https://cran.seoul.go.kr/"
if (!require("ISLR")) { install.packages("ISLR", repos=REPO_URL) }
library(ISLR)

t-test 수행

모집단의 평균을 100으로 지정하여 t-test 수행

t.test(Wage$wage, mu=100)

💻 출력결과

img

💻 출력결과 해석

  • 한 집단의 평균에 대한 t-test(one-sample t-test)이다.
  • 양측검정 결과를 보여주고 있다.
  • t-test의 자유도(df)는 2999이다.
  • 평균에 대한 95% 신뢰구간은 귀무가설에서 설정한 평균의 참값을 포함한다.
호쌤(이광호)'s Picture

About 호쌤(이광호)

메가스터디IT아카데미에서 Java, Spring, Python, Frontend 등을 강의하는 IT 전문 강사이자 프리렌서 개발자 입니다.
https://www.youtube.com/@hossam-codingclub

Seoul, Korea http://www.hossam.kr