[통계이론] 기초통계 : 분산분석 (ANOVA 검정)

 정보

  • 업무명     : 기초통계 : 분산분석 (ANOVA 검정)

  • 작성자     : 박진만

  • 작성일     : 2020-04-15

  • 설   명      :

  • 수정이력 :

 

 내용

[개요]

digital-marketing-1433427_1280 (1).jpg

 

[특징]

  • 통계이론 설명

 

[활용 자료]

  • 없음

 

[자료 처리 방안 및 활용 분석 기법]

  • 없음

 

[사용법]

  • 내용 참조

 

 

 상세 내용

[분산분석 (ANOVA 검정) ]

  • 분산 분석 (ANOVA)은 2 개 이상의 실험군의 모평균이 동일한 지 여부를 검정하는 방법의 하나이다.

  • R에서는 aov함수 및 anova함수 등이 분산 분석을 수행하는 함수이다.

  • 이 페이지에서는 시뮬레이션 데이터를 생성하여 분산 분석을 실행하는 예를 설명한다.

  • 시뮬레이션 데이터는 4 개의 실험군으로 이루어지며, 실험군에는 10 개체의 데이터가 포함되는 것으로 한다. 

  • 비교를 위해 4 개의 실험군을 각각 A, B, C, D로 놓는다. 여기서 A, B, C의 3 군은 평균 100 분산 10의 정규 분포에서 데이터를 샘플링한다. 한편, D 군은 평균 140 분산 10의 정규 분포에서 데이터를 샘플링한다.

A <- rnorm(10, mean = 100, sd = sqrt(10))
B <- rnorm(10, mean = 100, sd = sqrt(10))
C <- rnorm(10, mean = 100, sd = sqrt(10))
D <- rnorm(10, mean = 140, sd = sqrt(10))

d <- data.frame(A = A, B = B, C = C, D = D)
head(d)
##           A         B         C        D
## 1  98.52897  99.32576 101.61557 138.4413
## 2 100.58735  95.54787 103.35295 138.9097
## 3  94.29980  99.15260  97.86004 135.7413
## 4 101.57001 102.17695  97.74807 140.2136
## 5  98.29363 101.43227 101.45534 139.3579
## 6 100.44516  98.56665 104.61613 138.7526

 

  • 분산 분석에서 이용하기 쉽도록 데이터 형을 변환한다. 변경된 데이터는 2 열에서 첫 번째 열은 실험군의 이름, 두 번째 열에는 실험군의 각 개체의 관측 데이터이다.

library(reshape)

x <- melt(d, variable_name = "group")
head(x)
##    group     value
## 1 GroupA  98.52897
## 2 GroupA 100.58735
## 3 GroupA  94.29980
## 4 GroupA 101.57001
## 5 GroupA  98.29363
## 6 GroupA 100.44516

 

[aov 함수]

  • 샘플 데이터를 준비 했으므로, aov함수를 이용하여 분산 분석을 실시 해 보자.

  • 각 실험군의 모평균이 같은 것은 각 개체의 값은 실험군의 영향을 받고 있는지 해석 할 수있다. 

  • 즉, 각 개체의 값 value을 실험군 group으로 설명 할 수 있는지 여부라는 것을 바꿔 말할 수 있다.

  • 그래서 aov에 대입하는 식으로 value ~ group한다. 

  • 다음 예제에서는 group숫자가 아닌 수준 인 것을 명시하기 위해 factor(group)변환하고 이용하고 있다.

 

res <- aov(value ~ factor(group), data = x)

summary(res)
##               Df Sum Sq Mean Sq F value Pr(>F)
## factor(group)  3  12545    4182   440.6 <2e-16 ***
## Residuals     36    342       9
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

  • factor(group)줄을 보면 Pr (> F) 값이 2 × 10^-16 이하로 매우 작아지고있다. 분산 분석의 결과로 A, B, C, D의 4 개 군의 모평균이 동일하지 않다는 것을 알 수있다. 

  • 그러나 분산 분석에서는 어떤 군의 모평균이 컸다거나 작았는지 까지는 판정 할 수 없다.

 

[anova 함수]

  • 샘플 데이터를 준비 했으므로, anova함수를 이용하여 분산 분석을 실시하는 예시를 수행 해 보자.

  • anova함수는 일반화 선형 모형 분석 결과에서 분산 분석의 결과를 계산하는 함수이다. 따라서 anova함수를 사용하기 전에 일반화 선형 모형에 의한 분석을 할 필요가 있다.

  • 각 실험군의 어머니 평균이 같은지 것은 각 개체의 값은 실험군의 영향을 받고 있는지 해석 할 수 있다.

  • 즉, 각 개체의 값 value을 실험군 group으로 설명 할 수 있는지 여부라는 것을 바꿔 말할 수 있다. 

  • 그래서 aov에 대입하는 식으로 value ~ group한다. 다음 예제에서는 group숫자가 아닌 수준 인 것을 명시하기 위해 factor(group)변환하고 이용한다.

l <- lm(value ~ factor(group), data = x)
res <- anova(l)

res
## Analysis of Variance Table
## 
## Response: value
##               Df  Sum Sq Mean Sq F value    Pr(>F)
## factor(group)  3 12544.7  4181.6   440.6 < 2.2e-16 ***
## Residuals     36   341.7     9.5
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

  • anova와 lm실행 결과가 aov실행 결과와 조금 다르다. 이것은 aov이 유형 I의 평행화를, lm은 타입 II의 평행 화를 이용하여 분석에 이용했기 때문이다. 

  • 가령 다음과 같이 lm함수에 더미 변수를 제공하면 실행 결과가 aov함수와 일치하게 된다.

l <- lm(value ~ 0 + factor(group), data = x)
res <- anova(l)

res
## Analysis of Variance Table
## 
## Response: value
##               Df Sum Sq Mean Sq F value    Pr(>F)
## factor(group)  4 492146  123036   12964 < 2.2e-16 ***
## Residuals     36    342       9
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

 

 참고 문헌

[논문]

  • 없음

[보고서]

  • 없음

[URL]

  • 없음

 

 문의사항

[기상학/프로그래밍 언어]

  • sangho.lee.1990@gmail.com

[해양학/천문학/빅데이터]

  • saimang0804@gmail.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음