-
R을 이용한 통계분석 - 4 (집단간 차이검정과 분산분석)Programming & Machine Learning/R X 머신러닝 2017. 7. 7. 17:59
집단간 차이검정을 R 코드로 실행해 볼 것이다.
집단간 차이검정 역시 가설검정을 의미하는데, 가설 검정에서 귀무가설의 진위여부를 판별하기 위해 검정 통계량을 사용한다.
일반적인 가설검정의 단계는 다음과 같다.
1. 대립가설을 설정. 2. 유의수준을 설정. 3. 적당한 검정 통계량을 선정. 4. 유의수준에 대한 기각역을 정함. 5. 표본으로부터 검정 통계량을 관찰함. 6. 관찰값이 기각역에 있는지를 판단하여 기각과 채택을 결정함.
1. R에서의 t-test
집단간의 평균 차이 여부를 검증하는 방법인 t-test를 R코드로 진행해보았다.
t-검정은 주로 두 집단을 비교할 때 사용한다.
# 평균 180, 표준편차 10인 100개의 표본추출 data1 = rnorm(100, mean=180, sd=10) t.test(x=data1, mu=180) t.test(x=data1, mu=200) # t test 는 두 집단의 평균이 같은지를 검정하는 것. data2 = rnorm(100, mean=160, sd=5) var.test(x=data1, y=data2) t.test(x=data1, y=data2, var.equal = F)
먼저 var.test를 이용하여 두 집단간의 등분산을 검정한다.
이때, p.value가 0.05 이하로 나온다면 두 집단이 비슷한 분산이라는 것이다.
등분산 검정 결과에 따라 t.test 의 var.equal 여부를 넣어준다.
만약 같은 집단이 시계열 변화에 따라 다른 그룹으로 t-test에 들어간다면, paired = T 라는 인자도 같이 넣어줘야 한다.
2. R에서의 분산분석
다음으로 R을 이용한 분산분석을 진행해본다.
분산분석은 회귀분석의 한 형태라고 할 수 있는데, 집단 간 분산을 비교과정에 이용하는 것이 핵심 아이디어이다.
집단 간 분산이란, 각 케이스의 관찰값과 전체 평균 간 차이인 편차를 제곱하여 합산한 뒤, 각 케이스의 자유도로 나누게 되면(표본크기)분산의 비를 알 수 있다는 것이다.
이러한 분산의 비를 이용해서 집단간의 차이가 있는지 아닌지를 판단하는 게 분산분석의 핵심이다.
간단히 말해서, 각 집단의 평균치가 전체 평균으로부터 얼마나 이탈해있는지를 집단 간 분산을 통해 나타내는 것이다.
library(MASS) data("survey") View(survey) model1 = aov(Pulse ~ Exer, data=survey) summary(model1) model2 = aov(Sepal.Length ~ Species, data=iris) summary(model2) model3 = aov(Pulse ~ Exer+Smoke, data=survey) summary(model3) # F-value : Mean Sq / Residuals --> 집단간 평균에 잔차를 나눈 것. # 즉, 잔차가 클 수록 F가 낮아지는 것이므로 F는 큰게 좋은것.(?) model3 = aov(Pulse ~ Exer*Smoke, data=survey) # ==> model3 = aov(Pulse ~ Exer+Smoke+Exer:Smoke, data=survey) # aov(A ~ B, ...) 에서 B에 따라서 A가 얼마나 의미있게 비슷한지에 관한 것. # : 은 두 변수의 join을 의미, * 은 변수의 부분집합까지 다 보고 싶을 때 summary(model3) t1 = TukeyHSD(model1, "Exer") t1 # some-freq 의 경우 집단간의 심박수 차이가 있는 것.
survey, iris 데이터를 이용해서 분산분석을 테스트 해보았다.
model1의 경우 Exer 요소에 따라서 맥박이 얼마나 다른지에 대한 분산분석 모델이고,
model2는 종에 따른 붓꽃의 length,
model3은 Exer, Smoke와 join된 모든 요소들에 따라 맥박이 얼마나 달라지는지에 대한 모델이다.
모델의 세부 결과는 TukeyHSD를 위와 같이 활용하면 볼 수 있다.
이 과정 역시 p-value를 유심히 관찰해야 한다.
'Programming & Machine Learning > R X 머신러닝' 카테고리의 다른 글
R을 이용한 머신러닝 - 2 (비선형 회귀분석) (0) 2017.07.11 R을 이용한 머신러닝 - 1 (선형 회귀분석) (1) 2017.07.11 R을 이용한 통계분석 - 3 (R을 이용한 데이터 조작 및 가설검정 방법) (0) 2017.07.05 R을 이용한 통계분석 - 2 (Textmining 에서의 데이터 전처리 & 종류별 데이터 import방법) (0) 2017.07.05 R을 이용한 통계분석 - 1 (기본 통계분석 실습과 rJava 환경설정 Window + Mac OS) (0) 2017.07.03 댓글