전산통계학 8주차 강의 - factor, GL, latin square, tapply, unlist
코딩 공부/R-전산 통계학 2019. 11. 18. 01:17Latin Square (프로그램 구성하기는 아마 과제에서 진행할 것 입니다)
그런데, 라틴 스퀘어에서는 데이터의 분류가 총 3개가 있다 (treatment, block1, block2)
그렇다면은 x라는 데이터를 R에서 아래와 같이 주도록 하자
#DATA
x<-matrix (c(3, 1, 4.5, 5.5, 4.2, 5.6, 3.5, .8, .9, 3.8, 5.7, 3.9, 5.3, 4.3, 1.2, 3.7) ,4)
이 다음에 행(trt), 열(block1), 마지막으로 또 다른 block2 들의 데이터에 대해서 Ti.., T.i., T..i 들을 어떻게 구해야 할까?
그 과정을 위해서는 factor (and gl) 의 개념을 이해하고, 사용해야 한다
factor
trt<-c(1,3,2,4,2,4,1,3,3,1,4,2,4,2,3,1)
trt<-factor(trt)
tapply(x,trt,sum) "tapply = table apply 를 의미함"
tapply(x,trt,mean)
gl
col<-gl(4,4)
row<-factor(rep(1:4,4))
tapply(x,row,sum) ; "t.1. 값은 13.4 임을 알 수 있다"
tapply(x,col,sum) ; "t..1 값은 14.0 임을 알 수 있다"
도대체, factor 와 gl 은 무엇이기에, 데이터를 분류시켜주는 것일까?
다음 사진을 살펴보자
위에부터 trt, col (=column), row 순으로 factor 들을 나열한 것인데, 자세히 살펴보면
trt 는 다음을 말하는 것이다
1 2 3 4
3 4 1 2
2 1 4 3
4 3 2 1
의 factor 을 통해 x의 데이터를 분류하려고 하는 것이다.
마찬가지로 col은 (아마 눈치가 빠르다면, gl 이라는 명령어 자체가 factor 임을 눈치채고 어떤식인지 이해했을 것)
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
row는
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
의 factor 을 준 것이다
<첨언>
gl 원리를 이해하기 위해서는 제대로 된 명령어를 입력해보면 알 수 있다, 다음 명령어를 입력해보고 파악해보자
sm <- gl(4,4,20)
sm
그렇다면 이제 R.C.D 와 R.C.B.D 에 대한 코딩을 만들었던 것 처럼, 라틴스퀘어도 만들어보자! ^^
unlist
y=list()
y[[1]]<-c(1.51, 1.92, 1.08, 2.04, 2.14, 1.76, 1.17)
y[[2]]<-c(1.69, 0.64, 0.90, 1.41, 1.01, 0.84, 1.28, 1.59)
y[[3]]<-c(1.56, 1.22, 1.32, 1.39, 1.33, 1.54, 1.04, 2.25, 1.49)
y[[4]]<-c(1.30, 0.75, 1.26, 0.69, 0.62, 0.90, 1.20, 0.32)
y[[5]]<-c(0.73, 0.80, 0.90, 1.24, 0.82, 0.72, 0.57, 1.18, 0.54, 1.30)
"리스트로 되어있는 y를 전부 벡터화=한줄로 만들어버리는 명령어 unlist"
N <- length(unlist(y))
N