✔ 독립변수가 범주형이고, 종속변수가 수치형일 때 두 집단의 평균을 비교하는 검정 방법이다.
✔ T-검정에는 단일표본 T-검정, 대응표본 T-검정(Paired Sample T-Test), 독립표본 T-검정(independent Sample T-Test)이 있다.
✔ 자유도가(n-1)인 t분포를 따르는 두 집단간 평균 차이 검정
✔ 군내 변동이 큰 경우 집단간 평균 차이를 알아보기 어려움 (등분산 가정 관련)
✔ 표본은 정규성을 만족하여야 하며 표본이 정규성을 만족하지 못하는 경우 윌콕슨 순위 검정을 사용
✔ 검정하는 통계량이 귀무가설 하에서 T-분포를 따르는 통계적 가설 검정이다.
✔ 두 집단 간의 평균을 비교하는 모수적 통계 방법으로써 표본이 정규성, 등분산성, 독립성 등을 만족할 경우 적용한다.
✔ 적은 표본으로도 모집단 평균을 추정하려고 정규분포 대신에 사용되는 확률분포이다.
✔ 모분산을 모르는 경우 표본분산으로 대체함
데이터는 기본 제공 데이터 airquality를 사용했습니다.
data(airquality) df <- airquality head(df)
출력
> data(airquality)
> df <- airquality
> head(df)
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6
Temp는 Temperature로 온도 값입니다.
mean(df$Temp)
> mean(df$Temp)
[1] 77.88235
t-검정은 모두 t.test()함수를 사용합니다.
모 평균이 76일 때,
t.test(x = df$Temp, mu = 76)
> t.test(x = df$Temp, mu = 76)
One Sample t-test
data: df$Temp
t = 2.4599, df = 152, p-value = 0.01502
alternative hypothesis: true mean is not equal to 76
95 percent confidence interval:
76.37051 79.39420
sample estimates:
mean of x
77.88235
One Sample 로 단일표본검정을 확인할 수 있고, 모평균이 76일 때 p-value = 0.01502으로 유의 확률이 0.05일 경우, 0.05이하 이므로 귀무가설을 기각하고, 대립가설을 채택합니다.
즉, 둘의 평균차이가 유의미하다고 볼 수 있습니다.
t-test를 실행해봤으니 p-value와 t-value의 값을 출력해보겠습니다.
result = t.test(x = df$Temp, mu = 76) result
result
변수를 만들어서 t-검정 결과를 저장하고
result$p.value result$statistic
이렇게 해당 변수 이름을 넣기만 해도 출력이 가능합니다.
> result$p.value
[1] 0.01501895
> result$statistic
t
2.459879
만약 어떤 변수인지 직접 확인하고 싶으시다면, str이나 names함수를 사용하시면 변수들의 이름을 직접확인 할 수 있습니다.
str(result) names(result)
> str(result)
List of 10
$ statistic : Named num 2.46
..- attr(*, "names")= chr "t"
$ parameter : Named num 152
..- attr(*, "names")= chr "df"
$ p.value : num 0.015
$ conf.int : num [1:2] 76.4 79.4
..- attr(*, "conf.level")= num 0.95
$ estimate : Named num 77.9
..- attr(*, "names")= chr "mean of x"
$ null.value : Named num 76
..- attr(*, "names")= chr "mean"
$ stderr : num 0.765
$ alternative: chr "two.sided"
$ method : chr "One Sample t-test"
$ data.name : chr "df$Temp"
- attr(*, "class")= chr "htest"
> names(result)
[1] "statistic" "parameter" "p.value" "conf.int" "estimate"
[6] "null.value" "stderr" "alternative" "method" "data.name"
str을 List of 10을 보면 아시겠지만, names함수도 사용이가능합니다.
출력도 다른 방법이 있어서 보여드립니다.
print(result[[1]]) print(result[["statistic"]]) print(result[["p.value"]])
> print(result[["p.value"]])
[1] 0.01501895
> print(result[[1]])
t
2.459879
> print(result[["statistic"]])
t
2.459879
> print(result[["p.value"]])
[1] 0.01501895
위가 쓰기에는 아주 간단하지만, 훨씬 깔끔하게 나오는 것 같습니다.
대응표본 t-검정은 간단합니다.
이번에는 iris 데이터로 한번해보겠습니다.
t.test(iris$Sepal.Length, iris$Sepal.Width, paired = TRUE) mean(iris$Sepal.Length) - mean(iris$Sepal.Width)
> t.test(iris$Sepal.Length, iris$Sepal.Width, paired = TRUE)
Paired t-test
data: iris$Sepal.Length and iris$Sepal.Width
t = 34.815, df = 149, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
2.627874 2.944126
sample estimates:
mean of the differences
2.786
> mean(iris$Sepal.Length) - mean(iris$Sepal.Width)
[1] 2.786
대응표본 검정을 사용하면 아까 단일표본과 다르게 위에
Paired t-test라고 나오게 됩니다.
이 대응표본 검정이 쉬운 이유가 2번째 줄 처럼 그냥 두 집단의 평균을 뺀 값과 동일합니다.
물론 두 집단간의 평균 차이가 유의미한지 아닌지의 결과를 얻을 수 있따는 차이점은 있습니다.
이제 독립표본 t-test를 해보겠습니다.
독립표본 t-test를 하기전에는 항상 등분산성 가정을 만족하는지 확인을 해봐야 합니다.
여기서 우리는 해당과정은 생략하고 등분산가정을 만족한다는 조건으로
var.equal = TRUE를 주고 검사를 해보겠습니다.
t.test(iris$Sepal.Length, iris$Sepal.Width, paired = FALSE, val.equal = TRUE)
# 결과
> t.test(iris$Sepal.Length, iris$Sepal.Width, paired = FALSE, val.equal = TRUE)
Welch Two Sample t-test
data: iris$Sepal.Length and iris$Sepal.Width
t = 36.463, df = 225.68, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
2.63544 2.93656
sample estimates:
mean of x mean of y
5.843333 3.057333
여기서도 결과 윗줄에 Welch Two Sample t-test 라고 볼 수 있습니다.
또한, 마지막줄에 두 집단의 평균을 확인할 수 있습니다.