목차
0.데이터 불러오기
1.이원분류 분산분석이란
2.전제조건
3.Two-way ANOVA test
4.다중비교
0.데이터 불러오기
data(ToothGrowth)
str(ToothGrowth)
## 'data.frame': 60 obs. of 3 variables:
## $ len : num 4.2 11.5 7.3 5.8 6.4 10 11.2 11.2 5.2 7 ...
## $ supp: Factor w/ 2 levels "OJ","VC": 2 2 2 2 2 2 2 2 2 2 ...
## $ dose: num 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 ...
levels(ToothGrowth$supp)
## [1] "OJ" "VC"
R에 있는 기본 데이터셋인 ToothGrowth를 불러온다.
3개의 변수와 60개의 관측치가 있다.
supp(보충제 타입)에는 2가지 요인(OJ, VC)이 있다.
ToothGrowth$dose <- factor(ToothGrowth$dose,
levels = c(0.5, 1, 2),
labels = c("D0.5", "D1", "D2"))
str(ToothGrowth)
## 'data.frame': 60 obs. of 3 variables:
## $ len : num 4.2 11.5 7.3 5.8 6.4 10 11.2 11.2 5.2 7 ...
## $ supp: Factor w/ 2 levels "OJ","VC": 2 2 2 2 2 2 2 2 2 2 ...
## $ dose: Factor w/ 3 levels "D0.5","D1","D2": 1 1 1 1 1 1 1 1 1 1 ...
dose 변수(보충제 투어량)가 3가지 값으로 구성되어 있기 때문에 factor로 변경한다.
1.이원분류 분산분석이란
#분산분석
두 개의 집단의 평균의 비교할때, T-test를 사용했다.
분산분석은 3개 이상의 집단의 평균을 비교할때 사용한다.
여기서 말하는 집단은 독립변수의 요인 개수이다.
그리고 종속변수의 집단에 따라 분산분석이 나뉘어 진다.
이원분류 분산분석이란,
종속변수(두 개 집단) ~ 독립변수(3개 이상 집단) 일때, 평균을 비교하는 기법이다.
boxplot(len ~ supp * dose,
data=ToothGrowth,
frame = FALSE,
col = c("#00AFBB", "#E7B800"),
ylab="Tooth Length")
boxplot으로 나타내면 위와 같이 구성되어 있다.
interaction.plot
각 변수의 변화를 추적하는 함수이다.
따라서 변수의 추세를 볼 수 있다.
분산분석에서 중요한 함수이다.
interaction.plot(x.factor = ToothGrowth$dose,
trace.factor = ToothGrowth$supp,
response = ToothGrowth$len,
fun = mean,
type = "b",
legend = TRUE,
xlab = "Dose",
ylab="Tooth Length",
pch=c(1,19),
col = c("#00AFBB", "#E7B800"))
-x.factor : 기준이 되는 factor
-trace.factor: 추가 펙터
-response : 분석 변수
2.전제조건
분산분석을 사용하기 위해서는 독립성, 등분산성을 만족해야 한다.
정규성
표본이 충분하기 때문에(30개 이상) clt와 대수의 법칙에 따라 정규성이 있다.
등분산성
library(car)
leveneTest(len ~ supp*dose, data = ToothGrowth)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 5 1.7086 0.1484
## 54
모수적 방법을 이용한다. p값이 유의하지 않기 때문에 등분산성이 있다.
3.Two-way ANOVA test
귀무가설 : 모든 평균들은 다 같다.
대체가설 : 평균들이 모두 같지는 않다. (’평균들이 모두 다르다’가 아니다.)
tooth.aov <- aov(len ~ supp + dose, data = ToothGrowth)
summary(tooth.aov)
## Df Sum Sq Mean Sq F value Pr(>F)
## supp 1 205.4 205.4 14.02 0.000429 ***
## dose 2 2426.4 1213.2 82.81 < 0.0000000000000002 ***
## Residuals 56 820.4 14.7
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
supp(보충제 타입)과 dose(보충제 투어량)의 p값이 유의수준보다 작기 때문에 통계적으로 유의하다.
즉, 보충제 타입에 따라 치아의 길이가 차이가 있고, 또한 투어량에 따라 치아의 길이 차가 있다.
만약, 두 변수(supp, dose)가 독립적이지 않다고 생각하면
더하기를 곱하기로 바꾸어 상호작용한다는 가정을 두어야 한다.
tooth.aov2 <- aov(len ~ supp*dose, data = ToothGrowth)
summary(tooth.aov2)
## Df Sum Sq Mean Sq F value Pr(>F)
## supp 1 205.4 205.4 15.572 0.000231 ***
## dose 2 2426.4 1213.2 92.000 < 0.0000000000000002 ***
## supp:dose 2 108.3 54.2 4.107 0.021860 *
## Residuals 54 712.1 13.2
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
분산분석 결과 supp:dose(상호작용)는 유의수준이 0.05일때 통계적으로 유의하다.
어떤 모델을 사용할지는 분석가의 판단에 맞긴다.
4.다중비교
분산분석에서는 어떤 집단이 다르며, 어떠한 차이가 있는지 알 수 없었다.
그 내용을 다중비교를 통해 알 수 있다.(3가지 방법)
TukeyHSD
TukeyHSD(tooth.aov2, which="dose")
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = len ~ supp * dose, data = ToothGrowth)
##
## $dose
## diff lwr upr p adj
## D1-D0.5 9.130 6.362488 11.897512 0.0000000
## D2-D0.5 15.495 12.727488 18.262512 0.0000000
## D2-D1 6.365 3.597488 9.132512 0.0000027
TukeyHSD 함수는 두 개씩 짝을 지어 비교를 해준다.
투어량에 따른 차이를 볼때, which로 설정해준다.(충전제로 하려면 supp로 바꾼다.)
p adj를 보면 모든 쌍에서 유의수준보다 작아 통계적으로 유의하다.
따라서, 투어량을 바꿀때마다 치아의 길이 차이가 있다고 해석한다.
-diff: 두 집단의 평균 차이
-lwr, upr: 95% 신뢰구간에서 하한값과 상한값
-p adj: 조정된 p값
glht
glht() : 일반화된 선형 가설 검정에 쓰임
glht(model, lincft)
linfct : linear, 함수가 지정되어야 함
library(multcomp)
summary(glht(tooth.aov, linfct = mcp(dose="Tukey")))
##
## Simultaneous Tests for General Linear Hypotheses
##
## Multiple Comparisons of Means: Tukey Contrasts
##
##
## Fit: aov(formula = len ~ supp + dose, data = ToothGrowth)
##
## Linear Hypotheses:
## Estimate Std. Error t value Pr(>|t|)
## D1 - D0.5 == 0 9.130 1.210 7.543 <0.00001 ***
## D2 - D0.5 == 0 15.495 1.210 12.802 <0.00001 ***
## D2 - D1 == 0 6.365 1.210 5.259 <0.00001 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## (Adjusted p values reported -- single-step method)
TukeyHSD와 같은 결과이다.
pairwise.t.test
pairwise.t.test(ToothGrowth$len, ToothGrowth$dose, p.adjust.method = "BH")
##
## Pairwise comparisons using t tests with pooled SD
##
## data: ToothGrowth$len and ToothGrowth$dose
##
## D0.5 D1
## D1 0.00000001004587510 -
## D2 0.00000000000000044 0.00001442603487380
##
## P value adjustment method: BH
결과를 교차표로 만들어 준다.
'R > R 예제' 카테고리의 다른 글
10.회귀모형(Regression Model) (0) | 2019.02.18 |
---|---|
9.다변량 분산분석(MANOVA:Multi-variate Analysis Of Variance) (0) | 2019.02.17 |
7.일원분류 분산분석(One way ANOVA) (0) | 2019.02.17 |
6.Paired samples T-test (0) | 2019.02.15 |
5.Unpaired Two samples T-test (0) | 2019.02.15 |
댓글