-
R 프로그래밍 10 - T-TEST(독립표본 t-test)데이터분석/R 2021. 12. 26. 01:52반응형
https://kbkb456.tistory.com/90
저번 시간까지 데이터를 가공하고 요약하는 법에 대해서 배웠습니다.
오늘은 T-TEST에 대해서 알아보도록 합시다.
필요한 라이브러리 불러오기
library(lawstat) library(dplyr)
T-TEST?
두 집단간 평균을 비교하는 대표적인 방법입니다.
t-test는 분석을 위해서 여러 가지 가정을 하게 됩니다.
T-TEST의 기본가정
1. 두 집단의 분포가 정규분포이다.(정규성)
2. 두 집단의 분포는 같은 분산을 가지고 있다(등분 산성)
3. 실험은 서로 독립적으로 이루어졌을 것이다.(독립성)
위의 그림에서 sample A와 sample b가 똑같이 정규분포를 가지고 같은 분포의 모양(분산)인 것을 알 수 있습니다. 이렇게 같을 때 x축에서 서로 평균값을 비교한다고 보시면 됩니다.
즉, 서로 같은 모양의 정규분포를 따를 때 서로의 평균을 비교하겠다는 것입니다.
(물론 정규성을 따르지 않아도 비모수적인 방법이나 분산이 같지 않은 경우, 서로 같은 샘플을 활용했을 시에도 분석방법은 다 있습니다.)
제가 아래와 같은 실험을 설계해서 분석을 한다고 가정해봅시다.
시험을 친다고 했을 때 청심환을 먹고 시험을 친 시험군과 아닌 시험군의 점수를 비교하고 싶다고 해봅시다.
실험 설계
그룹 처리 A군(비교군) 청심환을 먹고 시험을 보는 10명의 학생 B군(대조군) 청심환을 안먹고 시험을 보는 10명의 학생 측정 대상 비교해야할 것 시험 점수 비교해야 할 건 A, B 그룹 간 평균 점수의 차이입니다.
3가지 가정을 검정
예시 데이터 셋
#데이터 프레임생성 df <- data.frame(score=c(2.5,2.49,2.51,2.59,2.56,2.61,2.86,2.7,2.69,2.76,1.44,1.44,1.43,1.4,1.49,1.56,1.78,1.62,1.59,1.68), test_type = c(rep("A",10),rep("B",10)))
- 독립성: 서로 다른 집단에게 청심환을 먹고 안 먹고를 나눴으니 독립적으로 실험된 게 맞다.
- 정규성: Shapiro-Wilk test를 이용한 검정
Shapiro-Wilk test는 아래의 수식을 가지고 계산이 되는데 그냥 편하게 정규성을 검정해주는 함수라고 보시면 됩니다.
https://en.wikipedia.org/wiki/Shapiro%E2%80%93Wilk_test
Shapiro-Wilk test를 통해서 분포가 정규성을 검정해보도록 하겠습니다.
#a정규성 검정 a_score <- df %>% filter(test_type == 'A') %>% select(score) shapiro.test(a_score$score) #b정규성 검정 b_score <- df %>% filter(test_type == 'B') %>% select(score) shapiro.test(b_score$score)
dplyr에서 배운 chain 함수를 이용해서 필요한 칼럼만 가져오도록 하겠습니다.
저렇게 필터 쳐온 데이터를 shapiro.test 함수에 에 넣어서 실행하면 이런 결과가 나오게 됩니다.
보통 p-value가 0.05보다 크면 정규분포를 따른다고 하고 있습니다.
따라서 현재 a, b 두 집단은 정규분포를 따른다고 가정할 수 있습니다.
- 등분 산성: Levene's test를 이용한 검정
#a와 b간의 levene test levene.test(df$score,df$test_type,location='mean')
문법: levene.test(비교할 점수 데이터, 그룹 데이터, location= 비교하는 방법)
이제 a, b간의 등분산을 보도록 하겠습니다.
보통 p-value가 0.05보다 크면 서로 집단의 분산(분포 모양)은 같다고 보고 있습니다.
따라서 현재 a,b 두 집단의 분산은 같다고 가정하겠습니다.
T-TEST를 해보자
t.test(a_score$score, b_score$score, var.equal=TRUE)
문법: t.test(a집단의 score, b집단의 socre, var.equal=등분산이면 TRUE 아니면 FALSE)
아까 만들어 두었던 위의 집단 데이터를 활용해서 t-test를 진행해봅시다.
가설
H0: 두 집단의 점수 평균차이는 없을 것이다.
H1: 두집단의 점수 평균 차이가 있을 것이다.
실행결과
p-value가 0.05보다 작기 때문에 H1의 가설이 채택되어서 "두 집단 간의 평균의 차이는 있다."로 볼 수 있는데요.
평균값을 보면 x에 해당하는 값이 2.627, y에 해당하는 값은 1.543으로 x에 해당하는 a집단의 평균이 b집단보다 통계적으로 유의미하게 높다는 결론을 도출할 수 있겠습니다.
오늘은 독립 표본에 대한 t-test에 대해서 알아봤습니다. 다음엔 이것 말고도 대응 표본이나 정규분포를 따르지 않는 경우, 혹은 등분산을 따르지 않는 경우 t-test를 어떻게 하는지 알아보도록 하겠습니다.
반응형'데이터분석 > R' 카테고리의 다른 글
R 프로그래밍 9 - dplyr을 활용하여 깔끔한 코드로 데이터 전처리하기(filter, arrange, mutate, select, summarise, group_by, %>%) (0) 2021.12.14 R 프로그래밍 8 - R 데이터 프레임을 피벗 테이블 처럼 활용하기(dcast, melt) (0) 2021.11.07 R 프로그래밍 7 - 패키지와 샘플데이터(packages, sample data) (0) 2021.11.03 R 프로그래밍 6 - R에 CSV파일 불러오기 (0) 2021.01.10 R 프로그래밍 5 - 수열 만들기(rep,seq) (0) 2021.01.03