정보
-
업무명 : 기초통계 : 분산분석 (ANOVA 검정)
-
작성자 : 박진만
-
작성일 : 2020-04-15
-
설 명 :
-
수정이력 :
내용
[개요]

[특징]
-
통계이론 설명
[활용 자료]
-
없음
[자료 처리 방안 및 활용 분석 기법]
-
없음
[사용법]
-
내용 참조
상세 내용
[분산분석 (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
본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
'통계 이론' 카테고리의 다른 글
[통계 이론] 기초통계 : Benjamini-Hochberg 보정 (0) | 2020.04.17 |
---|---|
[통계 이론] 기초통계 : 주성분 분석 (0) | 2020.04.16 |
[통계이론] 기초통계 : 카이제곱 검정 (0) | 2020.04.14 |
[통계 이론] 기초통계 : Wilcoxon 순위 합 검정 (0) | 2020.04.14 |
[통계 이론] 기초통계 : F 검정 (2) | 2020.04.14 |