R을 사용하여 가설검정하기 - T 테스트
1. 가설 세우기
예시데이터를 불러온다.
library(dplyr)
library(ggplot2)
r <-read.csv('Data/htest01.csv', header = T)
#결과물
group height
1 A 170
2 A 177
3 A 163
4 B 168
5 B 190
6 B 185
이 데이터를 group별로 쪼갠다.
#반으로 쪼개기
#1:2의 의미는 1부터 2행까지 추출
a <- r[r$group=='A',1:2]
b <- r[r$group=='B',1:2]
이 데이터를 기준으로 a그룹의 평균키가 b의 평균키와 차이가 없다는 것을 귀무가설로 정하고 b그룹의 평균키가 a그룹의 평균키보다 크다는 것을 대립가설로 정한다.
평균키를 아래의 코드로 구한다.
#평균을 구하는데 [,2]의 의미는 2행의 전체데이터 가져오기
mean(a[,2])
mean(b[,2])
#a 평균키
[1] 170
#b 평균키
[1] 181
2. 정규성 검사
데이터가 적으므로 정규성검사를 해야한다.
다행히 복잡한 공식을 넣는 것 대신 R코드로 해결한다.
#정규성 검사
shapiro.test(a[,2])
#결과물
Shapiro-Wilk normality test
data: a[, 2]
W = 1, p-value = 1
p-value가 1이 나왔다. 즉 0.05이상이므로 귀무가설을 채택한다.
귀무가설이 채택되었으므로 데이터 셋이 정규분포를 따른다는 것을 알 수 있다. 만약 대립가설이 채택되었다면 데이터셋이 정규분포를 따르지 않는 것이라고 확인할 수 있다.
정규성 검사를 시행할 때 shapiro.test말고 다른 코드로 시행 가능하다.
이 코드 같은 경우는 pvalue를 보여주는 것이 아니라 그래프로 보여준다.
#정규성 검사
qqnorm(a[,2])
qqline(a[,2])
이 그래프 안의 3개의 점은 각각의 데이터프레임의 값을 말하고 이 3개의 점이 그어진 일직선과 가까우면 정규분포를 따른다고 볼 수 있다.
약간의 차이가 있지만 전체적인 그림은 정규분포를 따르므로 이 A그룹은 정규분포를 따른다고 가정할 수 있다.
b 그룹의 정규성검사를 시행해보면
#정규성 검사
shapiro.test(b[,2])
#결과물
shapiro-Wilk normality test
data: b[, 2]
W = 0.90977, p-value = 0.4173
pvalue가 0.4173이 나왔으므로 b 그룹역시 정규성을 따른다. 따라서 귀무가설을 채택한다.
- 정규성이 맞으면 결과로 나온 평균값이 맞으므로
3. 분산 동질성 검사
여기서 가설로 세운 평균키값이 다른 것은 본질적으로 분산이 다르다는 말이므로 분산 동질성 검사를 시행한다.
#분산 동질성 검사
var.test(a[,2], b[,2])
#결과값
data: a[, 2] and b[, 2]
F = 0.36842, num df = 2, denom df = 2, p-value = 0.5385
결과값이 pvalue가 0.05보다 큼으로 두 집단이 분산이 동일하다는 것을 확인했다.
따라서 귀무가설을 채택한다.
4. T 테스트
분산이 동일하다는 것을 확인했으므로 합동분산을 시행한다.
#t test 시행
#alternative는 대립가설 기준으로 B그룹보다 A그룹의 평균키가 작다는 뜻 만약 크다면 greater를 입력
#var.equal = 분산이 동일하다는 의미 만약 아니라면 False를 대입
t.test(a[,2], b[,2], alternative = 'less', var.equal = T)
#결과값
data: a[, 2] and b[, 2]
t = -1.4123, df = 4, p-value = 0.1154
pvalue값이 0.05 이상이므로 귀무가설을 채택한다.
5. 결과
따라서 모든 검정에 따라 귀무가설을 채택한다
- a와 b그룹간의 평균키는 차이가 없다.