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() 함수에 대한 전체 문서는 여기에서 확인하세요.