R은 통계프로그래밍 언어로 일반인이 사용하기 쉽게 만든 언어이다.
그러나 필자는 프로그래머이고 비 프로그래머의 인식으로 접근하기 힘든면이 있다.
강의 또한 그러하다. 강의 곳곳에 프로그래머적인 시선이 들어있으니 참고하여 필요없으면 넘겨라.
참고:
anova test는 t-test와는 달리 여러가지의 값들의 평균을 비교하는 방법이다.
즉 1,2개 밖에 안되는 t-test와는 달리 여러개를 같이 비교하는 것이다.
이걸 만들기 위해서는 formula라는걸 만들어야 된다.
formula는 식인데 둘의 관계를 정하는 것이다. 부호는 ~를 사용한다.
이제 여러가지 군을 비교해보자. 그러기 위해서는 자료가필요하다.
정규분포를 참 잘 따르는 육군 신체정보 데이터를 사용하자.
ds <- read.csv('육군 신체측정정보.csv')
countV<-0
for(i in seq(0,8)){
assign(paste0('g',i+1),as.numeric(as.character(ds$신장.센티미터[5000*i+1:5000*(i+1)])))
test<-shapiro.test(get(paste0('g',i+1)))$p.value
if(test<0.05){
countV<-countV+1;
}
}
y<-c()
x<-c()
for(i in seq(0,8)){
y<-append(y,get(paste0('g',i+1)))
x<-append(x,rep(i+1,5000))
}
print(oneway.test(y~x,var = TRUE))
코드가 좀 길다. 그러나 어렵진 않다. 한번 해석해보자.
먼저 필자는 9군으로 쪼갰다. 그리고 각각의 이름을 변수 g1~g9으로 만들었다. 그리고 각각 육군데이터를 5000개씩 쪼겠다.
그다음 각각 shapiro.test를 해서 정규분포인지 확인해본다. 정규분포를 하나 통과할때 마다 카운터를 쌓는다.
즉 카운터가 9가 되야 모두 테스트를 통과한것이다.
그 다음 다시 모든 데이터를 합치는데 그 값은 y이다.
또한 각각의 군을 1부터 9까지 표현하자. 그건 y와 1대1 대응이 되야한다.
이제 y~x로 포뮬라로 만들어준후 대입하면 각각 군끼리 평균을 내고 그 데이터를 바탕으로 테스트를 시작한다.
rep함수는 앞의 파라메터에 적은 값을 뒤의 파라메터 값만큼 생성해서 벡터로 만드는 것이다.
값이 0.05를 넘어간다면 이는 평균이 전집단이 비슷하다고할 수 있는것이다.
육군 장병들의 평균은 어느구간을 뽑아도 비슷할것이므로 9구간이 전부 비슷하다고 할 수 있다.
'Programming > R' 카테고리의 다른 글
[R-28]변수 생성(assign)과 변수 사용(get) (0) | 2017.11.21 |
---|---|
[R-27]T-test(t.test) (0) | 2017.11.21 |
[R-26]히스토그램(hist) (0) | 2017.11.21 |
[R-25]샤피로-윌크 검정(shapiro.test) (0) | 2017.11.20 |
[R-24]콜모고로프-스미노프검정(ks.test) (1) | 2017.11.20 |