전산통계학 13주차 강의 - agricolae, AOV, Post Hoc (Bonferroni, Scheffe, Duncan, Tukey)

코딩 공부/R-전산 통계학 2020. 1. 20. 23:16
반응형

AOV (Fit an Analysis of Variance Model)

data <- c(40,36,43,36,34,29,
                 39,36,33,32,26,25,
                 32,34,29,26,23,24,
                 33,27,25,20,22,18)

A <- gl(4,6)
B <- factor (rep (1:2,each=3, len=24))
C <- gl(8,3)

aov(data~A*B)          ;   "data 가 매트릭스여서 c; 벡터형태로 주어야합니다!"

summary(aov(data~A*B))
summary(aov(data~A+B+A*B))           ; "Same"


<첨언>

Case of 3 factors?

data <- c(42,38, 28,22, 34,10,
          34,34, 28,08, 19,08,
          33,41, 11,03, 17,00,
          47,38, 52,33, 22,16,
          59,41, 33,15, 03,10,
          43,32, 29,24, 17,01,
          55,48, 54,27, 17,22,
          66,26, 36,41, 40,06,
          69,63, 53,38, 40,38,
          64,58, 63,41, 33,29,
          60,51, 55,40, 34,24,
          94,67, 40,64, 40,20)
length(data)

A <- factor (rep(1:3, each=2, 12))
B <- gl(4,18)
C <- factor (rep(1:2,each=1, 36))

summary(aov(data~A*B*C))


<문제>

3 factors 에서 "α*γ  그리고 α*β*γ" 항목을 표에 안나오도록 설계할 수 있을까요?

data <- c(42,38, 28,22, 34,10,
          34,34, 28,08, 19,08,
          33,41, 11,03, 17,00,
          47,38, 52,33, 22,16,
          59,41, 33,15, 03,10,
          43,32, 29,24, 17,01,
          55,48, 54,27, 17,22,
          66,26, 36,41, 40,06,
          69,63, 53,38, 40,38,
          64,58, 63,41, 33,29,
          60,51, 55,40, 34,24,
          94,67, 40,64, 40,20)

A <- factor (rep(1:3, each=2, 12))
B <- gl(4,18)
C <- factor (rep(1:2,each=1, 36))

summary(aov(data~A+B+C+A*B+B*C))


<첨언>

행렬 원소를 x[ a,b ] 와 같은 형식으로 값을 뽑아낼 수 있었는데, aov 에서도 값을 뽑아내는 것이 가능할까?


우리는 ANOVA 에서 가설 (null hypothesis , alternative hypothesis) 을 세우고, 테스팅을 진행하여 reject H0 에 수긍했다는 결론을 얻고나서, 본 수업 (확률론이나 수리통계학) 에서는 Bon-ferroni 나 Scheffe 방법을 이용해서 각 그룹에 따라서 어떤식으로 다른지 알아볼 수 있었다. 지금 하는 전산통계학에서는 여러개의 그룹을 프로그래밍만 잘 짜본다면 한 번의 함수만에 모든 그룹을 각각 비교할 수 있다

 

library(agricolae)

 

data<-c(1.51, 1.92, 1.08, 2.04, 2.14, 1.76, 1.17
        ,1.69, 0.64, 0.90, 1.41, 1.01, 0.84, 1.28, 1.59
        ,1.56, 1.22, 1.32, 1.39, 1.33, 1.54, 1.04, 2.25, 1.49
        ,1.30, 0.75, 1.26, 0.69, 0.62, 0.90, 1.20, 0.32
        ,0.73, 0.80, 0.90, 1.24, 0.82, 0.72, 0.57, 1.18, 0.54, 1.30)

a <- factor (rep(1:5, c(7,8,9,8,10)))

 

# 1. DUNCAN

model2 <- aov(data~a)
result <- duncan.test(model2, "a", main ="real", alpha = 0.01)
plot(result, variation = "IQR")              


 

# 2. SCHEFFE
model3 <- aov(data~a)
answer <- scheffe.test(model3, "a", alpha = 0.01)
plot(answer, variation = "IQR")

# 1. DUNCAN 과 다른 모양의 plot 이 나올 수도 있음을 알 수 있다.


# 3. TUKEY (HSD.test)
model4 <- (aov(data~a))
dap <- HSD.test(model4,"a",alpha=0.01)
plot(dap, variation = "IQR")


# 4. Bonferroni (LSD.test)
model5 <- (aov(data~a))
dap <- LSD.test(model5,"a",alpha=0.05,p.adj = "bonferroni",group = TRUE)
plot(dap, variation="IQR")

 

마지막으로 말을 덧붙이자면... 교재와 그룹(13245 사이에 밑줄이 쳐져있는 부분이 제가 한 것과 다를 수 있습니다, 그 이유로는 필자는 유의수준을 모두 0.95로 고정한 점도 있고, 문자가 포함되있냐 안되있냐에 따른 기준으로 같은 그룹이 될 수 있는 여부에 따라서 밑줄을 친 것이기 때문에, 한 번 고려해보면서 스스로 생각해보시는 거를 추천합니다


<문제>

data <- c(9.1, 13.4, 15.6, 11.0, 12.7, 
         17.1, 20.3, 24.6, 18.2, 19.8,
         20.8, 28.3, 23.7, 21.4, 25.1,
         11.8, 16.0, 16.2, 14.1, 15.8)

A <- gl(4,5)
B <- factor(rep(1:5,4))

다음과 같은 데이터 형태를 가지고 있는 R.C.B.D 를 trt factor 에 따라서 그룹마다 어떻게 차이나는지 DUNCAN 기법 분석해보세요

 

model <- aov(data~A+B)
summary(model)
out<- duncan.test(model, "A",alpha = 0.01)
plot(out, "IQR")

TAG