R에서 aov()와 anova()를 사용해야 하는 경우
R의 aov() 및 anova() 함수는 비슷해 보이지만 실제로는 두 가지 다른 시나리오에서 사용됩니다.
ANOVA 모델을 적합시키고 결과를 ANOVA 요약 테이블에 표시하려는 경우 aov()를 사용합니다.
특정 계수 세트가 있는 회귀 모델이 계수 하위 세트만 있는 모델보다 훨씬 더 나은 적합성을 제공하는지 여부를 결정하기 위해 중첩 회귀 모델의 적합성을 비교하려는 경우 anova()를 사용합니다.
다음 예에서는 각 기능을 실제로 사용하는 방법을 보여줍니다.
예제 1: R에서 aov()를 사용하는 방법
세 가지 다른 운동 프로그램이 체중 감량에 서로 다른 영향을 미치는지 여부를 확인하기 위해 일원 분산 분석을 수행한다고 가정해 보겠습니다.
우리는 한 달 동안 프로그램 A, 프로그램 B 또는 프로그램 C를 따르도록 무작위로 30명을 할당하는 실험에 참여할 90명을 모집합니다.
다음 코드는 R에서 aov() 함수를 사용하여 이 일원 분산 분석을 수행하는 방법을 보여줍니다.
#make this example reproducible set. seeds (0) #create data frame df <- data. frame (program = rep(c("A", "B", "C"), each= 30 ), weight_loss = c(runif(30, 0, 3), runif(30, 0, 5), runif(30, 1, 7))) #fit one-way anova using aov() fit <- aov(weight_loss ~ program, data=df) #view results summary(fit) Df Sum Sq Mean Sq F value Pr(>F) program 2 98.93 49.46 30.83 7.55e-11 *** Residuals 87 139.57 1.60 --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
모델 결과를 보면 프로그램의 p값(0.0000000000755)이 0.05보다 작은 것을 알 수 있는데, 이는 세 프로그램 간 평균 체중 감량에 통계적으로 유의미한 차이가 있음을 의미한다.
예제 2: R에서 anova()를 사용하는 방법
특정 대학의 학생들의 시험 점수를 예측하기 위해 공부한 시간을 사용한다고 가정해 보겠습니다. 다음 두 가지 회귀 모델을 적용하기로 결정할 수 있습니다.
전체 모델: 점수 = β 0 + B 1 (시간) + B 2 (시간) 2
축소 모델: 점수 = β 0 + B 1 (시간)
다음 코드는 R의 anova() 함수를 사용하여 전체 모델이 축소 모델보다 훨씬 더 나은 적합성을 제공하는지 확인하기 위해 적합성 부족 테스트를 수행하는 방법을 보여줍니다.
#make this example reproducible
set. seeds (1)
#create dataset
df <- data.frame(hours = runif(50, 5, 15), score=50)
df$score = df$score + df$hours^3/150 + df$hours*runif(50, 1, 2)
#view head of data
head(df)
hours score
1 7.655087 64.30191
2 8.721239 70.65430
3 10.728534 73.66114
4 14.082078 86.14630
5 7.016819 59.81595
6 13.983897 83.60510
#fit full model
full <- lm(score ~ poly(hours,2), data=df)
#fit reduced model
reduced <- lm(score ~ hours, data=df)
#perform lack of fit test using anova()
anova(full, reduced)
Analysis of Variance Table
Model 1: score ~ poly(hours, 2)
Model 2: score ~ hours
Res.Df RSS Df Sum of Sq F Pr(>F)
1 47 368.48
2 48 451.22 -1 -82.744 10.554 0.002144 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
출력 테이블(0.002144)의 p-값이 0.05보다 작으므로 검정의 귀무 가설을 기각하고 전체 모델이 축소 모델보다 통계적으로 유의미하게 더 나은 적합성을 제공한다는 결론을 내릴 수 있습니다.
추가 리소스
다음 튜토리얼에서는 R에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.
R에서 일원 분산 분석을 수행하는 방법
R에서 양방향 ANOVA를 수행하는 방법
R에서 반복 측정 ANOVA를 수행하는 방법