12.통계데이터분석 - 분산분석 - 이원분산분석.R
0.02MB
12.통계데이터분석 - 분산분석 - 이원분산분석.Rmd
0.02MB
12.통계데이터분석---분산분석---이원분산분석.html
1.80MB

 

 

 

https://www.youtube.com/watch?v=tBn9APzzEhc&list=PLY0OaF78qqGAxKX91WuRigHpwBU0C2SB_&index=13

1. 이원분산분석 설명

1-1. 이원분산분석 정의와 특성

  • 이원분산분석은 2개의 주효과가 1개의 상호적 효과를 검정
  • 주효과 검정: 두 독립변수가 각각 개별적으로 종속변수에 유의한 영향을 미치는지 검정
  • 상호작용효과 검정: 두 독립변수의 조합이 종속변수 와 유의한 영향 관계를 갖는지를 검정
  • 상호작용효과가 존재하면, 독립변수와 종속변수 간의 관계 패턴두 독립변수에서 만들어지는 집단간 조합에 따라 달라지게 됨

1-2. 상호작용효과 정의와 특성

  • 예) 학력 수준과 소득수준이 인터넷 쇼핑몰 이용 횟수에 미치는 영향을 분석
    • 독립변수와 종속변수
      1. 독립변수: 학력 수준, 소득 수준
      2. 종속변수: 인터넷쇼핑몰 이용횟수
    • 학력 수준과 소득수준, 이 두 변수 간 상호작용효과가 존재하면,
      1. 학력수준과 인터넷쇼핑몰 이용횟수 간 관계 패턴은 소득수준에 따라서 달라짐
      2. 소득수준과 인터넷쇼핑몰 이용횟수 간 관계 패턴 역시 학력수준에 따라서 달라짐
    • 그 반대로 만일 상호 작용 효과가 존재하지 않는다면
      1. 이러한 관계 패턴에는 변화가 없게 됨

 

  • 이러한 관계의 패턴을 그래프로 표현
    • 그래프 상에 표현되어 있는 세개의 선: 독립변수인 소득수준의 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")

https://i.ibb.co/wy219VG/12-boxplot1.png

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 인수: 그래프의 제목 지정
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: 점의 모양 지정
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

+ Recent posts