전산통계학 8주차 강의 - factor, GL, latin square, tapply, unlist

코딩 공부/R-전산 통계학 2019. 11. 18. 01:17
반응형

Latin 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

TAG