R에서 3원 분산분석을 수행하는 방법


3원 ANOVA는 세 가지 요인에 걸쳐 분포된 세 개 이상의 독립 그룹의 평균 간에 통계적으로 유의미한 차이가 있는지 여부를 확인하는 데 사용됩니다.

다음 예에서는 R에서 3원 ANOVA를 수행하는 방법을 보여줍니다.

예: R의 삼원 분산분석

연구자가 두 가지 훈련 프로그램이 대학 농구 선수들 사이에서 점프 높이의 평균 향상으로 이어지는지 여부를 확인하려고 한다고 가정해 보겠습니다.

연구원은 성별과 부문(디비전 I 또는 II)도 점프 높이에 영향을 미칠 수 있다고 의심하며, 이것이 그가 이러한 요인에 대한 데이터도 수집하는 이유입니다.

그의 목표는 훈련 프로그램, 성별, 부문이 점프 높이에 어떤 영향을 미치는지 확인하기 위해 3원 분산 분석을 수행하는 것입니다.

R에서 이 3원 분산 분석을 수행하려면 다음 단계를 따르십시오.

1단계: 데이터 생성

먼저 데이터를 보관할 데이터 프레임을 만들어 보겠습니다.

 #create dataset
df <- data. frame (program=rep(c(1, 2), each= 20 ),
                 gender=rep(c(' M ', ' F '), each= 10 , times= 2 ),
                 division=rep(c(1, 2), each= 5 , times= 4 ),
                 height=c(7, 7, 8, 8, 7, 6, 6, 5, 6, 5,
                          5, 5, 4, 5, 4, 3, 3, 4, 3, 3,
                          6, 6, 5, 4, 5, 4, 5, 4, 4, 3,
                          2, 2, 1, 4, 4, 2, 1, 1, 2, 1)) 

#view first six rows of dataset
head(df)

  program gender division height
1 1 M 1 7
2 1 M 1 7
3 1 M 1 8
4 1 M 1 8
5 1 M 1 7
6 1 M 2 6

2단계: 기술 통계 보기

3원 분산 분석을 수행하기 전에 dplyr을 사용하여 훈련 프로그램, 성별 및 부문별로 그룹화된 평균 점프 높이 증가를 빠르게 요약할 수 있습니다.

 library (dplyr)

#calculate mean jumping height increase grouped by program, gender, and division
df %>%
  group_by(program, gender, division) %>%
  summarize(mean_height = mean(height))

# A tibble: 8 x 4
# Groups: program, gender [4]
  program gender division mean_height
                 
1 1 F 1 4.6
2 1 F 2 3.2
3 1 M 1 7.4
4 1 M 2 5.6
5 2 F 1 2.6
6 2 F 2 1.4
7 2 M 1 5.2
8 2 M 2 4  

결과를 해석하는 방법은 다음과 같습니다.

  • 훈련 프로그램 1을 사용한 Division I 여성의 평균 점프 높이 증가는 4.6인치 였습니다.
  • 훈련 프로그램 1을 사용한 Division II 여성의 평균 점프 높이 증가는 3.2인치 였습니다.
  • 훈련 프로그램 1을 사용한 Division I 남성의 평균 점프 높이 증가는 7.4인치 였습니다.

등등.

3단계: 3원 분산분석 수행

다음으로 aov() 함수를 사용하여 3원 분산 분석을 수행할 수 있습니다.

 #perform three-way ANOVA
model <- aov(height ~ program * gender * division, data=df)

#view summary of three-way ANOVA
summary(model)

                        Df Sum Sq Mean Sq F value Pr(>F)    
program 1 36.1 36.10 65.636 2.98e-09 ***
gender 1 67.6 67.60 122.909 1.71e-12 ***
division 1 19.6 19.60 35.636 1.19e-06 ***
program:gender 1 0.0 0.00 0.000 1.000    
program:division 1 0.4 0.40 0.727 0.400    
gender:division 1 0.1 0.10 0.182 0.673    
program:gender:division 1 0.1 0.10 0.182 0.673    
Residuals 32 17.6 0.55                     
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Pr(>F) 열에는 각 개별 요인에 대한 p-값과 요인 간의 상호 작용이 표시됩니다.

결과를 보면, 세 가지 요인 간의 상호작용 중 어느 것도 통계적으로 유의미하지 않음을 알 수 있습니다.

또한 프로그램, 성별, 부문이라는 세 가지 요인이 각각 통계적으로 유의미하다는 것을 알 수 있습니다.

이제 dplyr을 다시 사용하여 프로그램, 성별 및 부문에 대한 평균 점프 높이 증가를 개별적으로 찾을 수 있습니다.

 library (dplyr)

#find mean jumping increase by program
df %>%
  group_by(program) %>%
  summarize(mean_height = mean(height))

# A tibble: 2 x 2
  program mean_height
           
1 1 5.2
2 2 3.3

#find mean jumping increase by gender
df %>%
  group_by(gender) %>%
  summarize(mean_height = mean(height))

# A tibble: 2 x 2
  gender mean_height
          
1 F 2.95
2M 5.55

#find mean jumping increase by division
df %>%
group_by(division) %>%
summarize(mean_height = mean(height))

# A tibble: 2 x 2
  division mean_height
            
1 1 4.95
2 2 3.55

결과에서 우리는 다음을 관찰할 수 있습니다.

  • 훈련 프로그램 1을 사용한 개인의 평균 점프 높이 증가( 5.2인치 )는 훈련 프로그램 2를 사용한 개인의 평균 점프 높이 증가 (3.3인치 )보다 컸습니다.
  • 남성의 평균 점프 높이 증가( 5.55인치 )는 여성의 평균 점프 높이 증가 (2.95인치 )보다 컸습니다.
  • Division 1 선수의 평균 점프 높이 증가( 4.95인치 )는 Division 2 선수의 평균 점프 높이 증가 (3.55인치 )보다 컸습니다.

결론적으로, 훈련 프로그램, 성별, 부문은 모두 선수의 점프 높이 증가를 나타내는 중요한 지표라고 말할 수 있습니다.

또한 이 세 가지 요소 사이에는 유의미한 상호작용 효과가 없다고 말할 수 있습니다.

추가 리소스

다음 튜토리얼에서는 R에서 다른 ANOVA 모델을 맞추는 방법을 설명합니다.

R에서 일원 분산 분석을 수행하는 방법
R에서 양방향 ANOVA를 수행하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다