📌 다변량 분산분석 (MANOVA)
두 개 이상의 종속변수가 있을 경우 집단별 차이를 동시에 검정
고대 이집트~로마 시대까지 발굴된 인간의 두개골 크기 측정한 데이터
- epoch : 이집트 시대를 5개로 구분한 범주
- mb : 두개골 폭
- bh : 두개골 높이
- bl : 두개골 길이
- nh : 코의 높이
- mb, bh bl, nh => 종속변수
- epoch => 독립변수
> install.packages("heplots")
> library(heplots)
> str(Skulls)
> str(Skulls) # 고대 이집트 ~ 로마 시대까지 발굴된 인간의 두개골 크기 측정한 데이터
'data.frame': 150 obs. of 5 variables:
$ epoch: Ord.factor w/ 5 levels "c4000BC"<"c3300BC"<..: 1 1 1 1 1 1 1 1 1 1 ...
$ mb : num 131 125 131 119 136 138 139 125 131 134 ...
$ bh : num 138 131 132 132 143 137 130 136 134 134 ...
$ bl : num 89 92 99 96 100 89 108 93 102 99 ...
$ nh : num 49 48 50 44 54 56 48 48 51 51 ...
> # # 10개 무작위 추출
> library(dplyr)
> sample_n(Skulls, 10)
epoch mb bh bl nh
136 cAD150 139 134 95 47
5 c4000BC 136 143 100 54
57 c3300BC 132 130 104 50
85 c1850BC 136 133 91 49
82 c1850BC 133 131 100 50
61 c1850BC 137 141 96 52
99 c200BC 140 134 90 51
46 c3300BC 131 128 98 45
22 c4000BC 135 135 103 47
116 c200BC 138 126 97 54
⭐다변량 분산분석을 위해서는 종속변수를 결합하여 하나의 행렬 형식으로 변환이 필요⭐
> attach(Skulls)
> search()
[1] ".GlobalEnv" "Skulls" "package:dplyr" "package:heplots" "package:car" "package:carData" "tools:rstudio"
[8] "package:stats" "package:graphics" "package:grDevices" "package:utils" "package:datasets" "package:methods" "Autoloads"
[15] "package:base"
> y <- cbind(mb, bh, bl, nh) # 열 결합
> head(y)
mb bh bl nh
[1,] 131 138 89 49
[2,] 125 131 92 48
[3,] 131 132 99 50
[4,] 119 132 96 44
[5,] 136 143 100 54
[6,] 138 137 89 56
> # 시대별 두개골 평균
> aggregate(y, by=list(epoch), mean)
Group.1 mb bh bl nh
1 c4000BC 131.3667 133.6000 99.16667 50.53333
2 c3300BC 132.3667 132.7000 99.06667 50.23333
3 c1850BC 134.4667 133.8000 96.03333 50.56667
4 c200BC 135.5000 132.3000 94.53333 51.96667
5 cAD150 136.1667 130.3333 93.50000 51.3666
대체로 두개골 측정값 평균이 시대별 차이가 있는 것으로 보이지만 통계적 검정이 필요하다.
📌 다변량 분산분석
> Skulls.manova <- manova(y ~ epoch)
> summary(Skulls.manova)
Df Pillai approx F num Df den Df Pr(>F)
epoch 4 0.35331 3.512 16 580 4.675e-06 ***
Residuals 145
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
시대에 따라 두개골 측정 값에 차이가 있다.
구체적으로 어느 두개골 측정값에 차이가 존재하는가❓
> summary.aov(Skulls.manova)
Response mb :
Df Sum Sq Mean Sq F value Pr(>F)
epoch 4 502.83 125.707 5.9546 0.0001826 ***
Residuals 145 3061.07 21.111
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Response bh :
Df Sum Sq Mean Sq F value Pr(>F)
epoch 4 229.9 57.477 2.4474 0.04897 *
Residuals 145 3405.3 23.485
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Response bl :
Df Sum Sq Mean Sq F value Pr(>F)
epoch 4 803.3 200.823 8.3057 4.636e-06 ***
Residuals 145 3506.0 24.179
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Response nh :
Df Sum Sq Mean Sq F value Pr(>F)
epoch 4 61.2 15.300 1.507 0.2032
Residuals 145 1472.1 10.153
> detach(Skulls)
nh를 제외한 두개골 측정값은 차이가 있다.