Programming/R

ANOVA Test for Orange DataSet in RStudio

사족보행 개발자 2022. 5. 10. 10:03
728x90

전 게시글에서 R에서 DataSet을 알아보았다.

이번 시간에는 그 중에서 Orange 라는 dataset을 가지고 ANOVA Test를 진행해보겠다.


ANOVA Test 용어 정리

 

종속변인 : 독립변인의 영향을 받는, Test를 위해 측정되는 항목

독립변인 : 종속변인의 영향을 주는 항목, 실험 내에서 

귀무가설 (H0) : 차이가 없거나 의미있는 차이가 없는 경우의 가설이며 이것이 맞거나 맞지 않다는 통계학적 증거를 통해 증명하려는 가설. (영가설, 널가설이라고도 부른다)

대립가설 (H1) : 그룹과 평균 사이에 차이가 있으며, 서로 다른 그룹을 지칭한다는 가설. 실제로 증명하고자 하는 내용이다.

 

ANOVA Test란 ?

ANOVA (Analysis Of VArience)는 분산분석이라고 하며, 측정 대상이 되는 그룹이 2개 이상일 때 사용하는 Test이다.

(독립변인의 그룹의 개수로 T-Test와 구분된다)

ANOVA TEST는 서로 다른 그룹의 평균에서 분산을 비교하여 *귀무가설에 대한 결과를 확인하고자 이행하는 테스트이다.

 

결과값은 F-Value이며, 그룹 간 분산과 그룹 내 분산의 비율로 계산한다.

그룹 내 분산은 각 그룹의 분산을 모두 더해준 값으로, 각 그룹 내부 분산값을 의미한다.

그룹 내 분산은 독립변인의 영향을 받지 않는, 그룹 내부 분산에 의한 부분을 의미한다.

 

그룹 간 분산은 Varience Between이라고도 지칭하며, 전체 그룹 분산에서 그룹 내 분산을 빼준 값이 된다. 

그룹 간 분산은 독립변인에 의해 변동되는 값을 의미한다.

 

R Programming in Orange Dataset
   Tree  age circumference
1     1  118            30
2     1  484            58
3     1  664            87
4     1 1004           115
5     1 1231           120
6     1 1372           142
7     1 1582           145
8     2  118            33
9     2  484            69
10    2  664           111
11    2 1004           156
12    2 1231           172
13    2 1372           203
14    2 1582           203
15    3  118            30
16    3  484            51
17    3  664            75
18    3 1004           108
19    3 1231           115
20    3 1372           139
21    3 1582           140
22    4  118            32
23    4  484            62
24    4  664           112
25    4 1004           167
26    4 1231           179
27    4 1372           209
28    4 1582           214
29    5  118            30
30    5  484            49
31    5  664            81
32    5 1004           125
33    5 1231           142
34    5 1372           174
35    5 1582           177

 

들어가기 전, Orange 데이터는 위와같이 구상되어 있으며, 각 Column은 아래를 의미한다. (?Orange)

 

Tree : 나무의 종류 (각 오렌지 나무는 다른 나무이며, 특정 나이마다 측정한 값이 들어간다. 1번 오렌지나무, 2번 오렌지 나무 ...)

an ordered factor indicating the tree on which the measurement is made. The ordering is according to increasing maximum diameter.

age : 1968/12/31 부터 계산한 나무의 나이

a numeric vector giving the age of the tree (days since 1968/12/31)

circumference : 나무의 지름

a numeric vector of trunk circumferences (mm). This is probably “circumference at breast height”, a standard measurement in forestry.

 

> summary(Orange)
 Tree       age         circumference  
 3:7   Min.   : 118.0   Min.   : 30.0  
 1:7   1st Qu.: 484.0   1st Qu.: 65.5  
 5:7   Median :1004.0   Median :115.0  
 2:7   Mean   : 922.1   Mean   :115.9  
 4:7   3rd Qu.:1372.0   3rd Qu.:161.5  
       Max.   :1582.0   Max.   :214.0

 

데이터를 요약하자면 위와 같다. 각 Tree는 7번씩 측정되었다. 각 항목의 최소, 최대, 평균과 그 사이 지점을 알 수 있다.

이를 Plot 그래프로 나타내보자.

par(mfrow=c(1,2))
with(Orange, plot(Tree, circumference, xlab="tree", ylab="circumference"))
with(Orange, plot(age, circumference, xlab="tree", ylab="circumference"))

plot으로 나타낸 Orange Tree

위의 그래프를 통해 시각적으로 age에 비례해서 나무의 circumference가 증가한다는 사실을 알 수 있었다.

여기서 ANOVA Test를 진행해보자

> res.Orange <- aov(circumference~Tree*age, data=Orange)
> summary(res.Orange)

            Df Sum Sq Mean Sq F value   Pr(>F)    
Tree         4  11841    2960  27.298 8.43e-09 ***
age          1  93772   93772 864.735  < 2e-16 ***
Tree:age     4   4043    1011   9.321 9.40e-05 ***
Residuals   25   2711     108                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

해당 표를 해석해보자면,

Df(Dgrees of Freedom) : n-1 ( 총 개수 -1 )

Sum Sq (Sum of Squares) : 분산의 분모가 되는 것으로, 각 개인의 점수에서 평균을 뺀 값을 제곱해서 모두 더해준 값

Mean Sq(Mean Squares) : ANOVA test에서는 분산을 평균을 구하는 식과 비슷하다고 해서 MeanSquare이라고 한다.

(분산이라고 생각하면 편하다.)

F-Value : ANOVA test의 결과 값, 1에 가까울수록 비슷한 집단, 멀어질 수록 서로 다른 집단임을 나타낸다.

Pr(>F) : ANOVA test를 통해 귀무가설을 부정하게 될 때, 그것이 잘못된 선택이 될 확률 (p-value와 동일)

 

위의 결과를 통해 우리는 나이에 따라 트리의 지름이 증가한다는 사실을 알아낼 수 있다.

 

정리하자면,

ANOVA Test의 값인 F-value의 값이 1에 가까워지면, 상관관계가 적다는 의미이며, 귀무가설을 채용하게 된다.

반대로 값이 1에서 멀어지게 될 수록, 상관관계가 명확해진다.

 

728x90