R을 사용하여 가설검정하기 - T 테스트

728x90
반응형

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])

qqline의 데이터셋 정규분포 확인식

이 그래프 안의 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그룹간의 평균키는 차이가 없다.

728x90
반응형