일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Histogram
- 신라
- 히스토그램
- 기자조선
- 유주
- 우분투
- categorical variable
- 한서지리지
- 고구려
- post hoc test
- 단군
- R
- 선형회귀분석
- 풍백
- 후한서
- linear regression
- ANOVA
- 지리지
- spss
- 패수
- 독사방여기요
- 낙랑군
- t test
- 통계
- 기자
- 태그를 입력해 주세요.
- 통계학
- 창평
- repeated measures ANOVA
- 한서
- Today
- Total
獨斷論
Factorial Between-Subjects ANOVA - 첫번째 (통계 R 초급 - 8) 본문
이번에 할것은 Factorial Between-Subjects ANOVA이다.
우선 R에서 제공하는 ToothGrowth 데이터를 이용한다.
이를 불러오기 위해서는 아래와 같이 실행하면 된다.
> 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 ...
>
데이터구조는 dataframe이고 60개의 observation에 3개의 변수를 갖는다.
- len는 치아의 길이로
numeric형이다. - supp는 보충제로 VC는 ascorbic acid로 비타민 C의 종류이다. OJ는 오렌지주스를 나타낸다.
factor형이다. - dose는 위 supp를 처치한 양을 나타낸다.
numeric형이다.
> View(ToothGrowth)
> ToothGrowth$dose = factor(ToothGrowth$dose, levels = c(0.5, 1.0, 2.0), labels = c("low", "med", "high"))
> 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 "low","med","high": 1 1 1 1 1 1 1 1 1 1 ...
결과에서 보듯이 dose가 numeric형에서 factor형으로 바뀌어있다.
그리고 0.5를 low, 1.0을 med, 2.0을 high라는 factor형 데이터값으로 바꾸었다.
이제 boxplot을 그려 대략의 ANOVA결과를 짐작해보자.
> boxplot(len ~ supp*dose, data=ToothGrowth, ylab="Tooth Length", main="Boxplots")
위 그림에서 평균에서 큰 차이를 보여주고 있지만, 분산은 서로 다르므로 Bartlett’s test for Homogeneity of Variance를 해봐야 할 것이다.
Interaction term을 없애고 각각의 변수로 그려볼수도 있다.
> boxplot(len ~ supp, data=ToothGrowth, ylab="Tooth Length", main="Boxplots")
> boxplot(len ~ dose, data=ToothGrowth, ylab="Tooth Length", main="Boxplots")
결과는 지면관계상 생략하지만 OJ나 VC는 len을 크게 변화시키지 못하고 dose의 양이 len을 크게 변화시킴을 보여줄 것이다.
그리고 ANOVA에서 중요한 것은 interaction plot인데 아래와 같이 그릴수 있다.
> with(ToothGrowth, interaction.plot(x.factor=dose, trace.factor=supp, response=len,
fun=mean, type="b", legend=T,
ylab="Tooth length", main="Interaction plot",
pch=c(1,19)))
위 R script에서
x.factor는 x축에 그려질 변수이고,
trace.factor는 그래프에서 각각 그려질 변수이다.
response는 y변수를 나타낸다.
fun은 어떤 함수를 그릴것인가를 나타내는데 여기서는 평균값을 그렸다.
type는 line과 point 두 개(both)를 그린다고 하여 "b"로 나타내었다. 나머지는 쉽게 알수 있다.
위 그래프에서 우리는 아래와 같은 것을 알수있다.
- high dose에서 두 그룹 사이에 큰 차이가 없다.
- dose양이 많을수록 치아의 크기가 커짐을 알수 있다.(main effect)
- supp는 크게 영향을 미치지 않는다.(main effect)
> coplot(len ~ dose | supp, data=ToothGrowth, panel=panel.smooth, xlab="Tooth Growth Data")
지금까지의 결과를 숫자로 나타내기를 위한다면 아래와 같이 수행하면 된다.
> with(ToothGrowth, tapply(len, list(supp, dose), mean))
low med high
OJ 13.23 22.70 26.06
VC 7.98 16.77 26.14
또한 ANOVA를 수행하기 전에 homogeneity를 검사해봐야 하는데 아래와 같이 수행한다.
> bartlett.test(len~supp*dose, data=ToothGrowth)
Bartlett test of homogeneity of variances
data: len by supp by dose
Bartlett's K-squared = 1.4217, df = 1, p-value = 0.2331
p가 0.2331 < 0.05이고 significant하지 않으므로 그룹간의 분산은 크게 다르지 않다고 할수 있다.
여기까지 ANOVA를 수행하기 전에 대략적으로 알아보기 위한 것이며 다음에 본격적으로 ANOVA를 수행해보기로 하자.