R언어를 경험하다.

최근 R언어를 사용해 논문 통계 데이터를 핸들링 하고 있다.
사실 익숙해 지니 여타 다른 엑셀과 같은 툴이 부럽지 않은 장점이 있다.

SAS, SPSS는 비싸고 그렇다고 해적판을 깔아서 쓰기도 좀 그런 단점이 있다. 그렇다고 엑셀을 사용하자니 데이터의 통계를 내기 위한 단순한 함수 적용을 함으로써 약간 답답한 면이 있고, 그렇게 많지 않은 함수만을 제공하고 있어서 사용하기 좀 불편했다.

그래서 주말부터 논문 통계 내는데 R언어를 사용하기 시작했다.

지금 현재 이용하는 것은 간단한 z-test, t-test, 상관관계 분석, 기본적인 통계량.. 가끔 가다가 카이제곱 정도 하고 있는데 사용 하면 할수록 array데이터를 핸들링하기 적합한 언어라는 생각이 마구마구 들기 시작한다.

게다가 여러 분포들에 대한 테스트도 용이하게 구성이 되어 있다.
통계책을 보면 binomial distribution 샘플링 개수를 늘릴 수록 정규분포에 가까워 진다는 항목이 있는데 이것도 간단하게 R을 이용해서 그래프로 확인해 볼 수 있다.

[CODE]
m <- 100
n <- 5
p <- 0.3
try.n <- c(5, 10, 15, 30, 50, 80)
par(mfrow=c(3,2))
for(i in 1:length(try.n)){
    n <- try.n[i]
    res <- rbinom(m,n,p)
    cat(“sampling is “, n, “\n”)
    print(shapiro.test(res))
    cat(“———————-\n”)
    hist(res, prob=T, main=paste(“Hist of “, n, “samples”))
    x = rnorm(m,n*p,sqrt(n*p*(1-p)))
    y = dnorm(x, n*p,sqrt(n*p*(1-p)))
    #plot(x,y)
    curve(dnorm(x, n*p,sqrt(n*p*(1-p))), add=T)
    }
    
[/CODE]
 
사용자 삽입 이미지

5, 10, 15, 30, 50, 80 까지 샘플링 중에서 50이상의 샘플이 가장 정규분포에 근접함을 알 수 있다.

이들 샘플링 데이터의 정규성을 측정하기 위해 Shapiro-Wilk normality test를 시행해보면 정확한 threshold를 알 수 있을거 같다.

가설을 이렇게 설정해 놓고.

H0 : 정규분포를 따른다. H1: 정규 분포를 따르지 않는다.

테스트를 시행한다.

sampling is  5

    Shapiro-Wilk normality test

data:  res
W = 0.8992, p-value = 1.299e-06

———————-
sampling is  10

    Shapiro-Wilk normality test

data:  res
W = 0.9488, p-value = 0.0006917

———————-
sampling is  15

    Shapiro-Wilk normality test

data:  res
W = 0.973, p-value = 0.03788

———————-
sampling is  30

    Shapiro-Wilk normality test

data:  res
W = 0.9743, p-value = 0.04728

———————-
sampling is  50

    Shapiro-Wilk normality test

data:  res
W = 0.9788, p-value = 0.1068

———————-
sampling is  80

    Shapiro-Wilk normality test

data:  res
W = 0.9743, p-value = 0.04737

———————-

샘플링 개수가 50때 p-value가 0.05 이상의 값이 나와 H1을 기각하게 되나 80때 다시 0.04로 내려가 버렸다.
이로서 좀더 안정적인 정규분포 threshold를 구하기 위해 좀더 샘플링을 더 늘려볼 필요가 있을거라 생각을 해본다.

사실 R언어 관련된 책들이 국내에 몇 권 있어서 이렇게 쉽게 접근을 시작해 본거 같다는 생각이 든다. 생각보다 통계학쪽에 그동안 관심이 별로 없었지 않았나 할 정도로 통계학에 대해서 다른 관점으로 바라보기 시작한거 같다.

올해 목표로 세운 R언어 학습은 그리 어렵지 않게 달성을 할 수 있을거 같다는 생각이 든다.
사실 이 언어는 언어를 배운다기 보다는 통계학을 R언어를 통해 리뷰한다는 의미가 정확한 듯 하다.
SPSS나 SAS라는 편리한 툴을 알기 전에 이런 손맛을 느낄 수 있는 통계 언어를 경험한것도 행운이라 생각된다.

역시 뭔가를 배우고 알아간다는 것은 너무 흥미롭고 재미난 경험인거 같다.

CC BY-NC 4.0 R언어를 경험하다. by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

이 글은 개발 카테고리에 분류되었고 태그가 있으며 고감자님에 의해 작성되었습니다. 고유주소 북마크.