12.통계데이터분석 - 분산분석 - 이원분산분석.R
0.02MB
12.통계데이터분석 - 분산분석 - 이원분산분석.Rmd
0.02MB
12.통계데이터분석---분산분석---이원분산분석.html
1.80MB
12.통계데이터분석 - 분산분석 - 이원분산분석
2022-07-24
https://www.youtube.com/watch?v=tBn9APzzEhc&list=PLY0OaF78qqGAxKX91WuRigHpwBU0C2SB_&index=13
1. 이원분산분석 설명
1-1. 이원분산분석 정의와 특성
- 이원분산분석은 2개의 주효과가 1개의 상호적 효과를 검정
- 주효과 검정: 두 독립변수가 각각 개별적으로 종속변수에 유의한 영향을 미치는지 검정
- 상호작용효과 검정: 두 독립변수의 조합이 종속변수 와 유의한 영향 관계를 갖는지를 검정
- 상호작용효과가 존재하면, 독립변수와 종속변수 간의 관계 패턴이 두 독립변수에서 만들어지는 집단간 조합에 따라 달라지게 됨
1-2. 상호작용효과 정의와 특성
- 예) 학력 수준과 소득수준이 인터넷 쇼핑몰 이용 횟수에 미치는 영향을 분석
- 독립변수와 종속변수
- 독립변수: 학력 수준, 소득 수준
- 종속변수: 인터넷쇼핑몰 이용횟수
- 학력 수준과 소득수준, 이 두 변수 간 상호작용효과가 존재하면,
- 학력수준과 인터넷쇼핑몰 이용횟수 간 관계 패턴은 소득수준에 따라서 달라짐
- 소득수준과 인터넷쇼핑몰 이용횟수 간 관계 패턴 역시 학력수준에 따라서 달라짐
- 그 반대로 만일 상호 작용 효과가 존재하지 않는다면
- 이러한 관계 패턴에는 변화가 없게 됨
- 독립변수와 종속변수
- 이러한 관계의 패턴을 그래프로 표현
- 그래프 상에 표현되어 있는 세개의 선: 독립변수인 소득수준의 3개의 범주
- 왼쪽 그래프: 상호작용효과가 존재하지 않는 경우를 나타낸 것
- 오른쪽 그래프: 상호작용효과가 존재하는 경우를 나타낸 것
- x 축: 독립변수 가운데 하나인 학력
- y 축: 종속변수인 인터넷쇼핑몰 이용횟수
- 상호작용효과가 존재하지 않는 경우의 그래프(왼쪽)
- 소득수준 관점에서 보면 (학력수준에 관계없이)
- 소득수준이 상인 집단이 인터넷쇼핑몰 이용횟수가 가장 높고
- 소득수준이 하인 집단이 인터넷쇼핑몰 이용횟수가 가장 낮음
- 학력수준 관점에서 보면 (소득수준에 관계없이)
- 대학교 집단이 인터넷쇼핑몰 이용횟수가 가장 높고
- 중학교 집단이 인터넷쇼핑몰 이용횟수가 가장 낮음
- 이 그래프 상에서 소득수준을 나타내는 세 개 선의 모양이 모두 유사한 패턴을 보이고 있고 임의의 두 선의 간격도 서로 일정함. 이러한 패턴이 나타날 때 학력 수준과 소득수준 간 상호작용효과가 없다고 판단함
- 상호작용효과가 없을 때 주효과만으로 상황 설명하는 것이 가능함. 즉,
- “대학교 학력수준을 가진 집단이 가장 자주 인터넷쇼핑몰을 이용한다” 라고 얘기할 수가 있음
- “소득수준이 상인 집단이 가장 빈번히 인터넷 쇼핑몰을 이용한다” 라고 얘기할 수가 있음
- 상호작용효과가 존재하지 않을 경우, 이처럼 어느 하나의 독립변수만으로 종속변수를 설명하는 것이 가능함
- 소득수준 관점에서 보면 (학력수준에 관계없이)
- 상호작용효과가 존재하는 경우의 그래프(오른쪽)
- 왼쪽 그래프와 달리 선들이 서로 교차하고 임의의 두 선 간의 간격이 일정하지도 않음
- 학력수준 관점에서 보면
- 중학교 집단은 소득수준 하 집단이 가장 높은 수준의 인터넷 쇼핑몰 이용 빈도 보임
- 고등학교 집단은 소득수준 상 집단이 가장 높은 수준의 인터넷 쇼핑몰 이용 빈도 보임
- 대학교 집단은 소득수준 중 집단이 가장 높은 수준의 인터넷 쇼핑몰 이용 빈도 보임
- 이와 같은 상황에서는
- “어느 특정 학력 집단이 인터넷쇼핑몰 이용횟수가 가장 높다” 고 얘기할 수도 없고
- “어느 특정 소득 집단이 인터넷쇼핑몰 이용횟수가 가장 높다” 고 얘기할 수도 없음
- 왜냐하면 은 인터넷쇼핑몰 이용횟수는 학력수준과 소득수준 모두에 의존해 결정되기 때문
- 상호작용효과가 존재하는 경우, 이처럼 어느 하나의 독립변수만으로 종속변수를 설명할 수가 없음
- 두 개의 독립변수가 부딪쳐서 만들어 지는 효과를 가지고 설명을 해야 됨
2. 이원분산분석 수행(R 사용)
2-1. 데이터셋 및 변수 설명
https://youtu.be/tBn9APzzEhc?list=PLY0OaF78qqGAxKX91WuRigHpwBU0C2SB_&t=470
- ToothGrowth 데이터셋
- 60개 관측값, 세 개 변수 포함
- 10마리의 기니피그를 대상으로, 비타민 C가 기니피그 이빨 성장에 미치는 실험을 수행하고 그 결과를 기록한 데이터 저장
- 이 데이터셋 2개의 독립변수 포함돼, 이 2개 독립변수에 의해 집단으로 구분 될 수 있음
- 변수
- len 변수: 이빨의 길이. 종속변수로써의 역할을 함
- supp 변수: 비타민 C 보충제. 오렌지 주스 형태로 제공된 경우 OJ로, 아스코르브산 형태로 제공된 경우 VC로 코딩
- dose 변수: 보충제 투여량. 0.5mg 1.0mg 2.0mg, 이렇게 3가지 서로 다른 수준으로 투여 됨
- supp 변수와 dose 변수를 집단변수로 활용해 이원분산분석 수행가능
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 ...
- 집단변수로 사용할 변수를 연속형에서 범주형변수로 변환
- supp 변수: supp 변수는 factor로 정의되어 있기 때문에 그 자체로 집단변수로써의 역할 수행
- dose 변수: 하지만 집단변수로 사용할 dose 변수는 숫자벡터이므로 연속형변수를 범주형변수로 변환해줘야 함
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 ...
ToothGrowth
## len supp dose
## 1 4.2 VC low
## 2 11.5 VC low
## 3 7.3 VC low
## 4 5.8 VC low
## 5 6.4 VC low
## 6 10.0 VC low
## 7 11.2 VC low
## 8 11.2 VC low
## 9 5.2 VC low
## 10 7.0 VC low
## 11 16.5 VC med
## 12 16.5 VC med
## 13 15.2 VC med
## 14 17.3 VC med
## 15 22.5 VC med
## 16 17.3 VC med
## 17 13.6 VC med
## 18 14.5 VC med
## 19 18.8 VC med
## 20 15.5 VC med
## 21 23.6 VC high
## 22 18.5 VC high
## 23 33.9 VC high
## 24 25.5 VC high
## 25 26.4 VC high
## 26 32.5 VC high
## 27 26.7 VC high
## 28 21.5 VC high
## 29 23.3 VC high
## 30 29.5 VC high
## 31 15.2 OJ low
## 32 21.5 OJ low
## 33 17.6 OJ low
## 34 9.7 OJ low
## 35 14.5 OJ low
## 36 10.0 OJ low
## 37 8.2 OJ low
## 38 9.4 OJ low
## 39 16.5 OJ low
## 40 9.7 OJ low
## 41 19.7 OJ med
## 42 23.3 OJ med
## 43 23.6 OJ med
## 44 26.4 OJ med
## 45 20.0 OJ med
## 46 25.2 OJ med
## 47 25.8 OJ med
## 48 21.2 OJ med
## 49 14.5 OJ med
## 50 27.3 OJ med
## 51 25.5 OJ high
## 52 26.4 OJ high
## 53 22.4 OJ high
## 54 24.5 OJ high
## 55 24.8 OJ high
## 56 30.9 OJ high
## 57 26.4 OJ high
## 58 27.3 OJ high
## 59 29.4 OJ high
## 60 23.0 OJ high
- 결과해석
- 숫자벡터로 되어있던 dose 변수가 3개 레벨 갖는 factor로 변경되었음
- 이제 이 두 독립변수 에서 만들어지는 요약 통계량 계산가능
2-2. 두 독립변수에서 만들어지는 요약통계
- 각 집단의 크기
- 보충제 별, 투여량 별 관측값 개수 출력됨
- with() 함수: 특정 데이터셋으로부터 변수 추출할 때, 데이터셋 이름을 반복적으로 적는 불편함을 피할 수 있음
with(ToothGrowth, tapply(len, list(supp, dose), length))
## low med high
## OJ 10 10 10
## VC 10 10 10
- 각 살충제별 평균
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
- 각 살충제별 표준편차
with(ToothGrowth, tapply(len, list(supp, dose), sd))
## low med high
## OJ 4.459709 3.910953 2.655058
## VC 2.746634 2.515309 4.797731
- 결과해석
- 보충제 별, 투여량 별, 보충제와 투여량의 상호작용 별로 해당되는 집단의 평균값이 계산됨
- 보충제의 주효과: 오렌지쥬스가 아스코르브산보다 기니피그 이빨성장에 더 큰 영향을 미침
- 투여량의 주효과: 투여량 많을수록 이빨길이 더 길어짐
- 상호작용효과: 오렌지 쥬스가 아스코르브산보다 이빨 성장에 더 큰 영향 미치긴 하나 이런 영향패턴은 투여량이 많을 경우 달라짐
- 그러나 이 해석은 표본 데이터에 대해 한정된 것이고, 이 해석을 모집단으로 일반화 하기 위해 이원분산분석으로로 가설검증 필요
2-3. aov() - 이원분산분석 시 ’*’로 상호작용효과 산출
- 인수 설명
- supp * dose: 여기서 독립변수 간의 관계를 나타낸 ‘*’ 연산자는 개별 독립변수 영향 뿐 아니라 모든 가능한 상호 작용을 포함하는 것임
ToothGrowth.aov <- aov(len ~ supp * dose, data=ToothGrowth)
ToothGrowth.aov
## Call:
## aov(formula = len ~ supp * dose, data = ToothGrowth)
##
## Terms:
## supp dose supp:dose Residuals
## Sum of Squares 205.350 2426.434 108.319 712.106
## Deg. of Freedom 1 2 2 54
##
## Residual standard error: 3.631411
## Estimated effects may be unbalanced
2-4. aov() - 이원분산분석 시 ’:’로 연결한 변수를 포함해 상호작용효과 산출
- 인수 설명
- supp + dose + supp:dose : supp * dose 동일한 의미로 이런 방식으로도 표현가능. 개별 독립변수 영향을 ‘+’로 연결하고 추가로 supp과 dose 두 변수 간 상호작용 나타내는’:’로 표현해 +로 연결
ToothGrowth.aov <- aov(len ~ supp + dose + supp:dose, data=ToothGrowth)
ToothGrowth.aov
## Call:
## aov(formula = len ~ supp + dose + supp:dose, data = ToothGrowth)
##
## Terms:
## supp dose supp:dose Residuals
## Sum of Squares 205.350 2426.434 108.319 712.106
## Deg. of Freedom 1 2 2 54
##
## Residual standard error: 3.631411
## Estimated effects may be unbalanced
- 결과해석: supp*dose 과 supp+dose+supp:dose은 동일결과 산출
2-5. summary(aov함수 객체) - 분산분석표 출력
summary(ToothGrowth.aov)
## 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 < 2e-16 ***
## 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
- 결과해석1
- supp: 보충제에 의한 주효과
- dose: 투여량에 의한 주효과
- supp:dose: 보충제와 투여량의 상호작용효과
- 결과해석2
- F값에 대한 유의확률에서 p값이 모두 유의수준 0.05보다 작기 때문에 “주효과와 상호작용효과가 없다”는 귀무가설을 기각 할 수 있음
- 따라서, “기니피그 이빨 성장은 보충제의 종류와 투여량에 따라서 달라지고, 보충제와 투여량의 조합에 의해서도 영향을 받는다” 라고 볼 수 있음
2-6. model.tables() - 각 효과에 따른 요약통계량 계산
model.tables(ToothGrowth.aov, type="means")
## Tables of means
## Grand mean
##
## 18.81333
##
## supp
## supp
## OJ VC
## 20.663 16.963
##
## dose
## dose
## low med high
## 10.605 19.735 26.100
##
## supp:dose
## dose
## supp low med high
## OJ 13.23 22.70 26.06
## VC 7.98 16.77 26.14
- 결과해석
- 보충제 별, 투여량 별, 보충제와 투여량의 상호작용 별로 해당되는 집단의 평균값이 계산됨
- 보충제의 주효과: 오렌지쥬스가 아스코르브산보다 기니피그 이빨성장에 더 큰 영향 미침
- 투여량의 주효과: 투여량 많을수록 이빨길이 더 길어짐
- 상호작용효과: 오렌지 쥬스가 아스코르브산보다 이빨 성장에 더 큰 영향 미치긴 하나 이런 영향패턴은 투여량이 많을 경우 달라짐
3. 그래프로 주효과와 상호작용효과 분석결과 확인
3-1. boxplot()<상자도표> - 보충제와 투여량 조합에 따른 이빨성장 수준 확인
- boxplot() 인수지정 방식은 aov() 분산분석 방식과 동일
# windows(width=12, height=8) # 별도창
boxplot(len ~ supp * dose, data=ToothGrowth)
https://i.ibb.co/QcBRT9J/12-boxplot.png
- 도표해석1
- x축: 보충제 종류와 투여량 조합에 따른 6개 집단 표시
- y축: 이빨길이
- 1,3,5번째: 오렌지주스 / 2,4,6번째: 아스코르브산 표시
- 1,2번째: 투여량 low / 3,4번째: 투여량 med / 5,6번째: 투여량 high
- 도표해석2
- 오렌지쥬스와 아스코르브산간 이빨성장에 미치는 영향의 차이가 있음
- 투여량 간에도 이빨성장에 미치는 영향이 다름
- 이렇게 2가지 주효과를 확인 가능
- 투여량 작거나 중간인 경우, 오렌지주스 영향이 더 크지만
- 투여량 많은 경우, 두 보충제 영향이 비슷해 져서
- 보충제 종류와 투여량 간 조합에 따른 상호작용효과 확인 가능
3-2. boxplot()<상자도표> - 추가 인수 지정하기
- 인수설명
- col 인수: 색상 지정하면 supp 변수에 포함된 범주 차례대로 색상이 지정됨
- las 인수: 1을 지정하면 y축 표현 숫자가 x축과 평행하게 됨
- xlab, ylab 인수: x가 y축에 제목 지정
- main 인수: 그래프의 제목 지정
boxplot(len ~ supp * dose,data = ToothGrowth,
col=c("deeppink", "yellowgreen"), las=1,
xlab="Vitamin C Type", ylab="Tooth Growth",
main="Effects of Vitamin C on Tooth Growth of Guinea Pigs")
3-3. interaction.plot()<상호작용도표> - 주효과와 상호작용효과 확인
- interaction.plot() 함수로 주효과와 상호작용효과를 선도표 형태로 시각화 가능
- 인수설명
- x.factor : x축에 위치할 집단변수 지정. 여기서는 투여량 나타내는 dose 변수 지정
- trace.factor : 선으로 그려질 집단변수 지정. 여기서는 비타민 C 보충제 유형을 나타내는 supp 변수 지정
- response : 종속변수 지정. 여기서는 이빨길이를 나타내는 len 변수 지정
- trace.label : trace.factor 상의 집단변수의 범례가 그래프 오른쪽에 그려지는데 이 범례제목을 지정
- las : 1을 지정해 y축 표현 숫자가 x축과 평행하게 됨
- type
- 그래프 쌍에 표현될 선도표 형태 지정<집단 전체의 모양 결정>
- “b” 선과 함께 각 집단 별로 동그라미가 혹은 어떤 심볼이 표현됨(“l”,“p”,“o” 등이 있음)
- pch
- 점의 모양 지정
- 여기서는 2개의 보충제 유형이 선도표 형태로 나타나기 때문에 각각 1과 19로 표현
- 1은 빈 동그라미이고 19는 색깔 채워진 동그라미
- supp변수 범주의 순서대로 이 숫자가 지정이 되기 때문에 1번째 동그라미는 오렌지 쥬스이고, 2번째 색깔 채워진 동그라미는 아스코르브산에 해당 됨
- col
- 색깔 지정
- 역시 supp변수 범주의 순서대로 색깔이 적용 되기 때문에 1번째인 “blue”는 오렌지 쥬스에, 2번째 “red”는 아스코르브산에 지정됨
- xlab, ylab : x가 y축에 제목 지정
- main : 그래프의 제목 지정
interaction.plot(x.factor=ToothGrowth$dose,
trace.factor=ToothGrowth$supp,
response=ToothGrowth$len,
trace.label="Supplement",
las=1, type="b", pch=c(1, 19),
col=c("blue", "red"),
xlab="Dose Level", ylab="Tooth Growth",
main="Interation Plot for Tooth Growth of Guinea Pig")
https://i.ibb.co/4pSRV0q/12-interaction-plot.png
- 도표해석
- 상대도표에서 확인한 것과 마찬가지로,
- “투여량이 작거나 중간 수준일 때는 이빨 성장에 미치는 오렌지주스 영향이 아스코르브산보다 더 컸지만
- “투여량이 많은 경우, (그 차이가 매우 작긴 하지만) 반대로 아스코르브산의 영향이 더 큼
- 다시 말해, 보충제와 투여량의 상호작용효과가 존재함이 확인 됨
3-4. plotmeans()(평균도표) - 이원분산분석 결과의 시각적 확인
- gplots 패키지의 plotmeans() 함수로 평균도표를 생성해 이원분산분석 결과의 시각화 가능
- 평균도표의 유용성: 평균도표는 독립변수의 조합별 평균,신뢰구간,표본크기가 함께 표현돼 그래프와 함께 유용한 정보 확인 가능
- 먼저 interaction() 함수로 2개의 독립변수인 보충제 유형과 투여량의 조합쌍 데이터 벡터 생성
- 인수설명
- 1st, 2nd: 2개의 독립변수를 차례대로 인수로 지정
- sep 인수: 두 독립변수 조합쌍을 연결에 사용될 구분자 지정. 여기서는 공백을 지정
library(gplots)
interaction(ToothGrowth$supp, ToothGrowth$dose, sep=" ")
## [1] VC low VC low VC low VC low VC low VC low VC low VC low VC low
## [10] VC low VC med VC med VC med VC med VC med VC med VC med VC med
## [19] VC med VC med VC high VC high VC high VC high VC high VC high VC high
## [28] VC high VC high VC high OJ low OJ low OJ low OJ low OJ low OJ low
## [37] OJ low OJ low OJ low OJ low OJ med OJ med OJ med OJ med OJ med
## [46] OJ med OJ med OJ med OJ med OJ med OJ high OJ high OJ high OJ high
## [55] OJ high OJ high OJ high OJ high OJ high OJ high
## Levels: OJ low VC low OJ med VC med OJ high VC high
- 결과해석
- 보충제 유형과 투여량 조합에 따른 모든 조합쌍을 데이터 값으로 갖는 데이터 벡터 생성
- 이렇게 생성된 데이터 벡터를 plotmeans() 독립변수 자리에 지정
- plotmeans() 함수 인수 설명
- 1st인수: 종속변수와 독립변수 간 관계를 포뮬러 형식으로 지정
- 종속변수: 이빨 길이
- 독립변수
- 2개 독립변수에 의해 만들어지는 모든 조합쌍을 데이터 벡터로 갖는 데이터셋
- 이 데이터셋은 두 독립변수 간 모든 조합쌍으로 interaction() 함수로 생성
- data 인수: 사용하는 데이터셋 이름 지정
- col 인수: 오렌지주스는 “red”, 아스코르브산은 “green3”로 지정
- xlab, ylab 인수: x가 y축에 제목 지정
- main 인수: 그래프의 제목 지정
- 1st인수: 종속변수와 독립변수 간 관계를 포뮬러 형식으로 지정
plotmeans(len ~ interaction(supp, dose, sep=" "),
data=ToothGrowth, col=c("red", "green3"),
xlab="Supplement and Dose Combination",
ylab="Tooth Growth", main="Means Plot for Tooth Growth of Guinea Pig")
https://i.ibb.co/bvm2r8K/12-plotmeans.png
- 도표해석
- x축에 두 독립변수의 조합에 따른 6개의 범주 표현
- 각 범주별로 평균 값, 95% 신뢰구간, 관측값이 표현됨
3-5. plotmeans()(평균도표) - 그래프 개선 및 connect 인수로 평균값 연결
- 보충제인 오렌지주스와 아스코르브산이 잘 구별되도록 그래프를 개선하는 작업이 필요
- plotmeans()(평균도표)에서 connect 인수를 통해 오렌지주스인 1,3,5번째와 아스코르브산인 2,4,6번째 인덱스를 서로 연결하면 오렌지주스 평균값과 아스코르브산 평균값이 서로 연결됨
- 추가인수 connect=list(c(1,3,5), c(2,4,6)): connect 인수에 선으로 연결할 집단평균의 인덱스를 지정해 1,3,5연결하고 2,4,6연결
plotmeans(len ~ interaction(supp, dose, sep=" "),
connect=list(c(1,3,5), c(2,4,6)),
data=ToothGrowth, col=c("red", "green3"),
xlab="Supplement and Dose Combination",
ylab="Tooth Growth",
main="Means Plot for Tooth Growth of Guinea Pig")
https://i.ibb.co/LgSnkWF/12-plotmeans1.png
- 도표해석
- 오렌지주스 평균값들이 연결돼있고, 아스코르브산 평균값들이 연결돼 있는 새로운 형태의 그래프 생성
- 상자도표나 상호작용도표와 마찬가지로, 투여량이 작거나 중간인 경우와 달리 투여량이 많은 경우 두 보충제가 이빨에 성장에 미치는 영향이 비슷해지는 것을 평균도표에서 확인
3-6. coplot() 함수<조건부도표> - 패널별 산점도로 집단간 영향 차이 확인
- coplot() 함수의 조건부도표로도 집단간 영향 차이 쉽게 확인됨
- coplot() 함수는 2개 집단변수가 있을 때, 하나의 집단변수를 기준으로 나머지 집단변수와 종속변수 간 관계를 산점도 형식으로 별도 패널에 그래프 생성
- 보충제별로 투여량과 이빨성장 간 관계를 산점도로 그리기
- 인수 설명
- len ~ dose | supp
- supp 변수(보충제) 유형별로,
- dose(투여량)과 len(이빨길이) 관계를 산점도 형태로 표현 해 달라는 의미
- data: 사용하는 데이터셋 이름 지정
- col: 산점도에서 사용되는 점의 색상 지정
- pch: 점의 모양 지정
- len ~ dose | supp
coplot(len ~ dose | supp, data = ToothGrowth,
col="steelblue", pch=19)
https://i.ibb.co/LPxw2dt/12-coplot.png
- 도표해석
- 2개 보충제 각각 패널 생성되고 패널별로 아래 산점도가 그려짐
- 왼쪽은 오렌지 주스에 대한 산점도 / 오른쪽은 아스코르브산에 대한 산점도
- 각 산점도는 보충제 투여량과 이빨성장길이 간의 관계를 보여줌
- 이러한 조건부 도표를 통해 보충제 별 투여량과 이빨성장 간 의 관계를 확인 가능
3-7. coplot() 함수<조건부도표> - panel인수로 산점도 통과 직선추가
- 인수설명
- panel: panel.smooth 지정하면 점들을 통과하는 직선 생성
- lwd: 선의 두께 지정
- col.smooth: 선의 색상 지정
- xlab, ylab: x와 y축 제목 지정
# windows(width = 12, height = 8)
coplot(len ~ dose | supp, data = ToothGrowth,
col="steelblue", pch=19,
panel=panel.smooth, lwd=2, col.smooth="darkorange",
xlab="Dose Level", ylab="Tooth Growth"
)
https://i.ibb.co/QnV894j/12-coplot1.png
- 도표해석
- 산점도 상에 직선이 추가됨
- 조건부 도표로부터 “보충제(오렌지 쥬스와 아스코르브산)가 이빨성장에 미치는 영향이 투여량이 증가함에 따라 달라짐”을 확인
3-8. interaction2wt() 함수-주효과와 상호작용효과를 각각 별도 패널에서 동시 확인
- HH 패키지 내 interaction2wt() 함수는 주효과와 상호작용효과를 각각 별도의 패널에서 동시에 볼 수 있는 그래프 생성
- interaction2wt() 함수에 분산분석 수행 때와 동일 방식으로 독립변수와 종속변수 간의 관계를 포뮬러 형식으로 지정
library(HH)
interaction2wt(len ~ supp * dose, data=ToothGrowth)
https://i.ibb.co/Lzbczw7/12-interaction2wt.png
- 도표해석
- 대각선 상 상자도표는 주효과를 의미함
- 비대각선 상 선도표는 상호작용효과를 의미함
- 앞서 살펴보았던 그래프에서와 마찬가지로 투여량이 많은 경우, 작거나 중간인 경우와 달리 두 보충제가 이빨성장에 미치는 영향이 비슷해짐
4. 이원분산분석의 집단간 사후분석
4-1. TukeyHSD() - 이원분산분석의 집단간 사후분석
- 이원분산분석 결과, 귀무가설을 기각하고 대립가설 채택하게 되면 일원분산분석과 마찬가지로 사후분석을 통해 집단간 차이에 대한 추가 검증을 수행 가능
- 이원분산분석에서도 일원분산분석과 마찬가지로 TukeyHSD() 사용
- 인수설명: 1st인수는 분산분석 결과로 생성된 모델 객체 지정
TukeyHSD(ToothGrowth.aov)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = len ~ supp + dose + supp:dose, data = ToothGrowth)
##
## $supp
## diff lwr upr p adj
## VC-OJ -3.7 -5.579828 -1.820172 0.0002312
##
## $dose
## diff lwr upr p adj
## med-low 9.130 6.362488 11.897512 0.0e+00
## high-low 15.495 12.727488 18.262512 0.0e+00
## high-med 6.365 3.597488 9.132512 2.7e-06
##
## $`supp:dose`
## diff lwr upr p adj
## VC:low-OJ:low -5.25 -10.048124 -0.4518762 0.0242521
## OJ:med-OJ:low 9.47 4.671876 14.2681238 0.0000046
## VC:med-OJ:low 3.54 -1.258124 8.3381238 0.2640208
## OJ:high-OJ:low 12.83 8.031876 17.6281238 0.0000000
## VC:high-OJ:low 12.91 8.111876 17.7081238 0.0000000
## OJ:med-VC:low 14.72 9.921876 19.5181238 0.0000000
## VC:med-VC:low 8.79 3.991876 13.5881238 0.0000210
## OJ:high-VC:low 18.08 13.281876 22.8781238 0.0000000
## VC:high-VC:low 18.16 13.361876 22.9581238 0.0000000
## VC:med-OJ:med -5.93 -10.728124 -1.1318762 0.0073930
## OJ:high-OJ:med 3.36 -1.438124 8.1581238 0.3187361
## VC:high-OJ:med 3.44 -1.358124 8.2381238 0.2936430
## OJ:high-VC:med 9.29 4.491876 14.0881238 0.0000069
## VC:high-VC:med 9.37 4.571876 14.1681238 0.0000058
## VC:high-OJ:high 0.08 -4.718124 4.8781238 1.0000000
- 결과해석1
- 주효과와 상호작용효과 별로 세부 집단별 차이에 대한 검정 수행
- dose(투여량) 결과를 확인해 보면
- 투여량의 3가지 범주별로 p밸류 계산됨
- 3개 p값 모두 0.05에 비해 매우 작아 “투여량 별로 집단간의 차이가 없다”는 귀무가설 기각하고, “집단별로 모두 차이가 있다”는 대립가설 채택
- 그래서 “투여량에 대한 주효과가 유의하다는 것”을 확인
- 결과해석2
- supp:dose(상호작용효과) 결과를 확인해 보면
- 어떤 부분은 통계적으로 유의하나 어떤 부분은 그렇지 않음
- 투여량이 high인 경우, 아스코르브산과 오렌지주스 집단 간 이빨성장의 차이는 통계적으로 유의하지 않음(p값)
- 그래서 투여량이 많을 경우, “오렌지주스와 아스코르브산의 이빨성장의 차이는 존재하지 않는다” 라고 결론을 내릴 수 있음
4-2. TukeyHSD()-신뢰구간 지정(conf.level), 특정집단만 분석(which)
- TukeyHSD() 함수는 달리 지정하지 않으면 95% 신뢰구간으로 계산
- 인수설명
- conf.level: 95% 신뢰구간 이외 다른 신뢰구간 지정 가능. 여기서는 99% 신뢰구간 계산
- which: 모든 가능한 집단간 비교를 원치 않으면 비교하고자 하는 집단만 지정. 여기서는 투여량 부분만 지정
TukeyHSD(ToothGrowth.aov, which=c("dose"), conf.level=0.99)
## Tukey multiple comparisons of means
## 99% family-wise confidence level
##
## Fit: aov(formula = len ~ supp + dose + supp:dose, data = ToothGrowth)
##
## $dose
## diff lwr upr p adj
## med-low 9.130 5.637681 12.622319 0.0e+00
## high-low 15.495 12.002681 18.987319 0.0e+00
## high-med 6.365 2.872681 9.857319 2.7e-06