######################################################
## 12. Two-way ANOVA
## 두개의 그룹변수를 갖는 데이터의 분석에 사용
######################################################

## (1) 테스트 데이터 추출
setwd(“D:/DEVSource/CSV_DATA/”)
data = read.csv(“warpbreaks.csv”)
print(data)

## (2) wool 과 tension 두개의 그룹으로 구성된 데이터이다.
## wool 과 tension 의 level 지정 상태를 확인한다
levels(data$tension)
levels(data$wool)

## (3) tension 의 level 을 L, M , H 순서로 변경한다.
data$tension = factor(data$tension, levels=c(“L”,”M”,”H”))
levels(data$tension)

## (4) 각 그룹의 평균을 구한다
attach(data)
tapply(breaks, wool, mean)
tapply(breaks, tension, mean)
tapply(breaks, list(wool,tension), mean)

boxplot(breaks ~ wool+tension, col=”red”, data=data)

## 그룹 Interaction
interaction.plot(tension, wool, breaks, col=c(“red”, “blue”))

## (5) wool 과 tension 사이의 교호작용이 있는 경우
## wool*tension 을 넣어 줘야 함
##Response: breaks
## Df Sum Sq Mean Sq F value Pr(>F)
##wool 1 450.7 450.67 3.7653 0.0582130 .
##tension 2 2034.3 1017.13 8.4980 0.0006926 ***
##wool:tension 2 1002.8 501.39 4.1891 0.0210442 *
##Residuals 48 5745.1 119.69
##—
##Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘
## 분석 결과를 보면
## wool 은 그룹이 바뀌어도 유의한 차이가 없다.
## 일원 분석에서 보면 그룹간의 평균이 같다라는 식의 결론.
## 하지만 여기서는 유의한 차이가 없음이 되어버린다.
## tension 의 p-value 는 0.0006926 으로 그룹간의 평균이 전혀 달라
## 유의한 차이가 있다가 된다.
## Wool 과 tension 사이의 교호관계를 나타내는 wool:tension 은
## p-value 0.210442 로 유의한 차이가 있음으로써 교호관계가 있다는 가설 또한
## 설명이 된다.
out2 = lm(breaks ~ wool + tension + wool*tension)
anova(out2)

## 교호 작용이 없는 경우라면 아래와 같이 wool + tension 으로 관계식을 만들면 되겠다.
summary(lm(breaks ~ wool + tension ))

## (6) 회귀 진단
## 판단식에 대한 회귀 진단
par(mfrow=c(2,2))
plot(out2)
## (7) 정규성 판단
## p-value : 0.8162
## 회귀식의 잔차는 정규성을 만족함
## 식의 추정값이 실제 표본 값과 차이가 일정, 균등 함
shapiro.test(resid(out2))