728x90

R은 통계프로그래밍 언어로 일반인이 사용하기 쉽게 만든 언어이다.

그러나 필자는 프로그래머이고 비 프로그래머의 인식으로 접근하기 힘든면이 있다.

강의 또한 그러하다. 강의 곳곳에 프로그래머적인 시선이 들어있으니 참고하여 필요없으면 넘겨라.


참고:

[개발환경 셋팅하기]R설치 및 환경변수 등록-(1)

[개발환경 셋팅하기]RStudio설치-(2)

[개발환경 셋팅하기]RStudio프로젝트 만들기-(3)


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구간이 전부 비슷하다고 할 수 있다.

+ Recent posts