R에서 manova를 수행하는 방법


MANOVA를 이해하려면 먼저 ANOVA를 이해하는 것이 도움이 됩니다.

ANOVA (분산 분석)는 세 개 이상의 독립 그룹의 평균 간에 통계적으로 유의미한 차이가 있는지 여부를 확인하는 데 사용됩니다.

예를 들어, 학습 방법이 학생들의 시험 점수에 영향을 미치는지 여부를 알고 싶다고 가정해 보겠습니다. 우리는 학급을 무작위로 세 그룹으로 나누었습니다. 각 그룹은 한 달 동안 서로 다른 학습 방법을 사용하여 시험을 준비합니다. 월말에는 모든 학생이 동일한 시험을 치릅니다.

학습 기술이 시험 점수에 영향을 미치는지 알아보기 위해 일원 분산 분석을 수행하면 세 그룹의 평균 점수 간에 통계적으로 유의미한 차이가 있는지 알 수 있습니다.

ANOVA에는 반응 변수가 있습니다. 그러나 MANOVA (다변량 분산 분석)에는 여러 반응 변수가 있습니다.

예를 들어, 교육 수준(예: 고등학교, 준학사 학위, 학사 학위, 석사 학위 등)이 연간 소득과 학자금 부채 금액에 미치는 영향을 알고 싶다고 가정해 보겠습니다. 이 경우에는 하나의 요인(교육 수준)과 두 개의 반응 변수(연 소득 및 학자금 부채)가 있으므로 일원 분산 분석을 수행할 수 있습니다.

관련 항목: ANOVA, ANCOVA, MANOVA 및 MANCOVA 간의 차이점 이해

R에서 MANOVA를 수행하는 방법

다음 예에서는 세 가지 다른 종(“setosa”, “virginica”)에 대한 다양한 꽃 측정의 길이와 너비에 대한 정보가 포함된 내장 붓꽃 데이터 세트를 사용하여 R에서 단방향 MANOVA를 수행하는 방법을 설명합니다. , “베르시컬러”):

 #view first six rows of iris dataset
head(iris)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa
#6 5.4 3.9 1.7 0.4 setosa

종이 꽃받침 길이와 너비에 영향을 미치는지 알고 싶다고 가정해 보겠습니다. 종을 독립 변수로 사용하고 꽃받침 길이너비를 반응 변수로 사용하여 R의 manova() 함수를 사용하여 일원 분산 분석을 수행할 수 있습니다.

manova() 함수는 다음 구문을 사용합니다.

manova(cbind(rv1, rv2, …) ~ iv, 데이터)

금:

  • rv1, rv2 : 응답변수 1, 응답변수 2 등
  • iv : 독립변수
  • data : 데이터 프레임의 이름

붓꽃 데이터세트를 사용한 예에서는 MANOVA를 피팅하고 다음 구문을 사용하여 결과를 표시할 수 있습니다.

 #fit the MANOVA model
model <- manova(cbind(Sepal.Length, Sepal.Width) ~ Species, data = iris)

#view the results
summary(model)
# Df Pillai approx F num Df den Df Pr(>F)    
#Species 2 0.94531 65.878 4,294 < 2.2e-16 ***
#Residuals 147                                             
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

결과에서 F 통계는 65.878이고 해당 p-값은 매우 작다는 것을 알 수 있습니다. 이는 종에 따라 꽃받침 측정값에 통계적으로 유의한 차이가 있음을 나타냅니다.

기술 참고 사항: 기본적으로 manova()는 Pillai 테스트 통계를 사용합니다. 이 검정 통계량의 분포는 복잡하므로 보다 쉽게 해석할 수 있도록 대략적인 F 값도 제공됩니다.

또한 다음 구문을 사용하여 ‘Roy’, ‘Hotelling-Lawley’ 또는 ‘Wilks’를 검정 통계량으로 지정하여 사용할 수 있습니다. summary(model, test = ‘Wilks’)

꽃받침 길이너비가 에 의해 어떻게 영향을 받는지 정확히 알아내기 위해 다음 코드에 표시된 대로 summary.aov()를 사용하여 단변량 분산 분석을 수행할 수 있습니다.

 summary.aov(model)


# Response Sepal.Length:
# Df Sum Sq Mean Sq F value Pr(>F)    
#Species 2 63.212 31.606 119.26 < 2.2e-16 ***
#Residuals 147 38.956 0.265                      
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

# Response Sepal.Width:
# Df Sum Sq Mean Sq F value Pr(>F)    
#Species 2 11.345 5.6725 49.16 < 2.2e-16 ***
#Residuals 147 16.962 0.1154                      
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

결과에서 두 단변량 ANOVA에 대한 p-값이 매우 낮음을 알 수 있으며(<2.2e-16), 이는 종이 꽃받침 너비 와 길이에 통계적으로 유의미한 영향을 미친다는 것을 나타냅니다.

그룹의 자원 시각화

결과를 더 잘 이해하기 위해 독립 변수 의 각 수준에 대한 그룹 평균을 시각화하는 것도 유용할 수 있습니다.

예를 들어, gplots 라이브러리와 플롯평균() 함수를 사용하여 종별 꽃받침의 평균 길이를 시각화할 수 있습니다.

 #load gplots library
library(gplots)

#visualize mean sepal length by species
plotmeans(iris$Sepal.Length ~ iris$Species)

그래프에서 우리는 평균 꽃받침 길이가 종마다 크게 다르다는 것을 알 수 있습니다. 이는 종 전체에 걸쳐 꽃받침 측정에 통계적으로 유의미한 차이가 있음을 알려주는 MANOVA의 결과와 일치합니다.

또한 종별 꽃받침의 평균 너비를 시각화할 수도 있습니다.

 plotmeans(iris$Sepal.Width ~ iris$Species)

manova() 함수에 대한 전체 문서는 여기에서 확인하세요.

의견을 추가하다

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