-
[생명과학을 위한 통계학] (4) T-test in R공부 2020. 4. 27. 23:11
[생명과학을 위한 통계학] 시리즈 글들은 Data Analysis for the Life Sciences by Rafael A Irizarry & Michael I Love와 오픈 강의 플랫폼들 (Coursera, edX)에서 제공하는 강의들을 바탕으로 작성되었습니다. 더 자세한 내용을 확인하고 싶으신 경우 글 하단의 링크를 확인해주세요.
이전 게시물에서 정리한 가설검정 중 T-test를 R로 할 것이다. 이번 실습에서는 참고서적에서 제공한 femaleMiceWeights.csv 데이터를 사용했다.
1. 라이브러리 로딩 & 데이터 읽기
femaleMiceWeights.csv는 먹이의 종류 (chow, hf)와 체중이 기록된 데이터이다. read.csv()를 통해 working directory에 있는 .csv 형식의 파일을 읽을 수 있으며, head() 함수로 데이터의 앞부분을 확인해볼 수 있다.
library(dplyr) library(rafalib) dat <- read.csv("femaleMiceWeights.csv") head(dat)
2. 데이터 프로세싱
앞에서 import 한 데이터를 dplyr 라이브러리를 사용하여 t-test에 쓰기 쉽게 프로세싱을 해야 한다. filter(), select()를 통해 칼럼을 뽑아내고 행을 필터링을 한 후, unlinst()를 사용하여 data.frame 형식의 데이터를 vector로 변환해준다. 이때 각 과정을 파이프 (pipe) 연산자 %>%로 한 줄의 명령어로 합칠 수 있다.
control <- filter(dat, Diet == "chow") %>% select(Bodyweight) %>% unlist treatment <- filter(dat, Diet == "hf") %>% select(Bodyweight) %>% unlist
dplyr 라이브러리의 자세한 사용법은 아래 링크를 참조하자.
https://statkclee.github.io/R-ecology-lesson/kr/04-dplyr.html
3. T-test
이전 게시물의 5.4. 부분에서 설명했듯 C.L.T.를 적용하여 아래 통계량 (t-statistic)이 표준정규분포를 따른다고 생각할 수 있다.
$$ \frac {\overline{X} - \overline{Y} - (\mu_x - \mu_y)} {\sqrt{ \frac{S_x^2}{n} + \frac{S_y^2}{m}}} \sim Z $$
표준정규분포를 바탕으로 p-value를 계산해보면 0.03986이 나오는데, 이는 일반적인 유의 수준인 0.05 이하로 treatment와 control 두 집단 사이에 유의미한 몸무게 차이가 존재한다고 말할 수 있을 것 같다.
diff <- mean(treatment) - mean(control) se <- sqrt( var(treatment)/length(treatment) + var(control)/length(control)) tstat <- diff/ se righttail <- 1 - pnorm(abs(tstat)) lefttail <- pnorm(-abs(tstat)) pval <- lefttail + righttail
하지만 이번 분석에서 사용한 데이터는 표본의 개수가 24로, 일반적으로 C.L.T.를 적용할 때 요구되는 개수인 30 이하이다. 따라서 위 경우 C.L.T.를 바탕으로 통계량이 표준정규분포를 따른다고 할 수 없다.
몸무게의 모집단은 일반적으로 normal distribution을 따를 것으로 예측이 된다. 이는 표본을 Q-Q Plot에 놓았을 때도 normal distribution을 얼추 만족한다는 것을 확인할 수 있다.
따라서 Welch's t-test를 적용하는 것이 더 맞는 선택이고, 이는 t.test()로 쉽게 할 수 있다. 만약 var.equal의 값이 false이면 Welch's t-test가 적용되고, true일 경우 Student's t-test가 적용된다.
t.test(treatment, control, var.equal = false)
Welch's t-test로 계산한 경우 p-value는 0.053으로서 유의 수준 0.05를 넘지 못한다. 이때는 두 집단의 평균 몸무게가 같다는 귀무가설이 기각되지 못한다.
아래는 여러 종류의 t-test를 R에서 하는 법을 잘 설명해 놓은 사이트이다.
https://www.datanovia.com/en/courses/t-test-essentials-definition-formula-and-calculation/
[생명과학을 위한 통계학] 시리즈 글들은 Data Analysis for the Life Sciences by Rafael A Irizarry & Michael I Love와 오픈 강의 플랫폼들 (Coursera, edX)에서 제공하는 강의들을 바탕으로 작성되었습니다. 더 자세한 내용을 확인하고 싶으신 경우 글 하단의 링크를 확인해주세요.
[참고서적]
- [PDF] Data Analysis for the Life Sciences by Rafael A Irizarry & Michael I Love[오픈 강의]
1. [Coursera] R Programming from Johns Hopkins University
2. [edX] Statistics and R from Harvard University
3. [edX] Introduction to Linear Models and Matrix Algebra from Harvard University
4. [edX] Statistical Inference and Modeling for High-throughput Experiments from Harvard University
5. [edX] High-Dimensional Data Analysis from Harvard University
6. [edX] Introduction to Bioconductor from Harvard University
7. [edX] Case Studies in Functional Genomics from Harvard University
8. [edX] Advanced Bioconductor from Harvard University'공부' 카테고리의 다른 글
[생명과학을 위한 통계학] (5) Confidence Interval, Effect Size, Power Calculation (0) 2020.05.04 [생명과학을 위한 통계학] (3) 중심 극한 정리, 가설 검정 (0) 2020.04.23 [생명과학을 위한 통계학] (2) 통계적 추론, 확률 변수, 확률 분포, 통계적 가설검정, P-value (0) 2020.04.21 [생명과학을 위한 통계학] (1) R 프로그래밍 준비하기 (0) 2020.04.21