Research Methodologies & Statistics

이원분산분석 (Two Way ANOVA)

VTAOE 2022. 9. 27. 22:40

df.csv
0.00MB

 

이원분산분석은 두개의 독립변수가 종속변수에 어떠한 영향을 미치는지를 분석하는 것으로 각각의 독립변수가 종속변수에 미치는 영향을 주효과(Main Effect)라고 하고 2개의 독립변수가 동시에 작용하여 종속변수에 영향을 미치는 것을 상호작용효과(Interaction Effect))라고 한다. 그래서 이원분산분석을 할 때에는 주효과와 상호작용효과 모두를 살펴보아야 한다. 

 

그러나 모든 이원분산분석에서 주효과와 상호작용효과를 살펴볼 수 있는 것은 아니다. 예를 들어 집단을 나타내는 두개의 독립변수가 1개의 관측치만 갖고 있을 경우에는 주효과만 살펴보면 되고, 관측치가 2개 이상인 집단이 있으면 상호작용효과까지 살펴봐야 한다. (

 

[주효과만 봐야 하는 경우]

만약 분석을 하기 위한 데이터가 아래와 같이 각 셀이 하나씩 밖에 없다면 상호작용효과는 볼 수 없다.  

  대도시(n) 중/소도시(n) 학교유형 별 수학 평균
남여공학(n) 11 9 78.3
남학교(n) 6 4 80.2
여학교(n) 5 3 77.5
지역별 수학 평균 79.2 76.4 79.2

이와 같은 경우, 독립변수를 나타내는 학교유형 집단 간에 종속변수(수학평균)에 통계적으로 유의미한 차이가 있는지를 검정하고, 그리고 또 다른 독립변수인 지역간에 종속변수(수하평균)에 통계적으로 유의미한 차이가 있는지를 개별적으로 다시 검정하면 된다.

 

 

[주효과와 상호작용효과를 모두 봐야 하는 경우]

아래와 같이 학교유형에 해당하는 세개의 집단 내에 관측치가 2개 이상이고, 지역에 해당하는 두개의 집단내의 관측치가 2개 이상인 경우에는 주효과와 더불어 상호작용효과까지 살펴볼 수 있다.

  학교유형 지역 수학평균
1 남여공학 대도시 77.1
2 여학교 대도시 74.3
3 남학교 대도시 80.5
4 남여공학 대도시 83.2
5 남학교 중소도시 79.4
6 여학교 중소도시 76.6
7 남학교 중소도시: 81.2
: : : :
n 남여공학 중소도시 75.3

주효과와 상호작용효과를 모두 볼 수 있는 경우에는 앞서 언급한 것처럼 학교유형 집단 간에 수학평균에 통계적으로 유의미한 차이가 있는지 살펴보고, 지역간 수학평균에 통계적으로 유의미한 차이가 있는지 살펴봐야 한다. 여기까지가 주효과를 검정하는 것이고, 그리고 학교유형과 집단 간 평균차이에 상호작용효과가 있는지 검정해야 한다. 

 

첨부된 데이터의 구조는 주효과와 상호작용효과를 모두 살펴볼 수 있는 구조를 가지고 있다. 그러나 여기에서, 주효과만을 검정하는 방법과 주효과와 상호작용효과 모두를 검정하는 방법을 살펴보고자 한다. 우선, 주효과만 살펴보는 방법은 다음과 같다.

 

summary(aov(종속변수~독립변수1+독립변수2, data=데이터명)
summary(aov(Scores~Location+SchoolTypes, data=df))

그 결과는 다음과 같다. 지역이 같은 학생들의 점수는 학교 유형에 따라 통계적으로 유의미한 점수(Scores)의 차이가 있는 것을 알 수 있고, 학교유형이 같은 학생의 경우 지역에 따라 통계적으로 유의미한 점수의 차이를 찾을 수 없었다. 

            Df Sum Sq Mean Sq F value  Pr(>F)   
Location     1    182   181.5   1.962 0.16750   
SchoolTypes  2   1215   607.6   6.567 0.00294 **
Residuals   50   4626    92.5                   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

주효과와 상호작용 효과를 살펴보는 코드는 다음과 같다.

summary(aov(종속변수~독립변수1+독립변수2+독립변수1:독립변수2, data=데이터명))
summary(aov(Scores~Location+SchoolTypes+Location:SchoolTypes, data=df))

그 결과는 다음과 같다. 지역이 같은 학생들의 점수는 학교 유형에 따라 통계적으로 유의미한 점수(Scores)의 차이가 있는 것을 알 수 있고, 학교유형이 같은 학생의 경우 지역에 따라 통계적으로 유의미한 점수의 차이를 찾을 수 없었다.  그리고 지역과 학교유형의 통계적으로 유의미한 상호작용 효과를 찾을 수 없었다.

                     Df Sum Sq Mean Sq F value  Pr(>F)   
Location              1    182   181.5   2.123 0.15165   
SchoolTypes           2   1215   607.6   7.105 0.00198 **
Location:SchoolTypes  2    521   260.7   3.049 0.05668 . 
Residuals            48   4104    85.5                   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

참고로 df 데이터를 이용해서 각각의 집단별 평균을 보여주는 테이블을 만들고 싶다면 aggregate 명령어를 사용하면 된다. 

새로운 데이터명 <- aggregate(데이터명$종속변수, by=list(데이터명$독립변수1, 데이터명$독립변수2), FUN=mean)
df2 <- aggregate(df$Scores, by=list(df$Location, df$SchoolTypes), FUN=mean)
df2

새로운 데이터명인 df2를 실행시키면 다음과 같은 테이블을 생성할 수 

   Group.1 Group.2        x
1     City Coe_Sch 38.22222
2 Suburban Coe_Sch 28.22222
3     City   F_Sch 24.55556
4 Suburban   F_Sch 18.77778
5     City   M_Sch 24.00000
6 Suburban   M_Sch 28.77778