안녕하세요. 

DA ryan입니다. 데이터 과학의 관심을 가지기 시작하면서 여러가지 알고리즘을 배우고, 통계공부를 하며 머리 속에 많은 내용을 집어 넣었음에도 불구하고,

막상 데이터 앞에서는 내가 무엇을 해야하는지 , 내가 왜 이렇게 접근하는지 애매한 경우가 있습니다. 그래서 기본적으로 접근할수 있는 간단한 플로우 차트에 대해서 오늘은 

알아볼까합니다. 물론 이러한 접근이 100%모든 데이터를 분석할때 쓰이는 것은 아니지만, 가장 기본적으로 시작할때는 이러한 방법을 먼저 생각해보면,

이후 추가적인 알고리즘으로 분석할 때 비교 할수 있어서 편하게 진행을 할수 있습니다. 

설명을 먼저 하기 전에 아래의 사항에 대해서 전혀 모른다고 생각되시는 분들은 글을  읽기보다는, 아래 사항들을 검색하셔서 이런게 무엇이다 정도는 알고 계신 후에 읽어주시기 바랍니다.

<사전 지식 점검해야할 사항들>
  1. "T-검정" 에 대해서 알고 있는가?
  2. "F-검정"에 대해서 알고 있는가?
  3. "등분산"이란 알고 있는가?
  4. "귀무가설 "의 정의와 귀무가설을 알고 있는가?
  5. "정규성 혹은 정상성"을 알고 있는가?

위의 사항을 알고 계시면 이해하기 편하겠지만 위의 사항을 잘 모르시면 각각의 개념을 검색해보시고 정리해두신 다음에 읽어보시길 권장합니다. 

그럼 시작해보도록 해보겠습니다.

실제 보통의 데이터는 모분산을 우리가 모르는 상태에서 분석을 실시합니다. 
따라서 모분산(예를 들면, 대통령선거에서 국민들이 모두 투표를 하고 모든 투표결과를 분석해서 낸 실제 분산값)을 모르기때문에 아래와 같은 절차를
따져보고 진행해야 합니다.


[그림1] 검정방법 선택을 위한 기본 전략


위와같이 보통 데이터를 분석할 때 30개 기준으로 많고 적음에 따라서 분석방법을 달리 하여야 합니다.
왜 30개가 기준인지는 30개 이상일때 근사적으로  중심 극한정리(데이터들이 평균을 중심으로 많이 분포하게 된다는 통계적 이론)에
의해서 표준 정규분포의 형태로 나타난다는 것이 증명되었기 때문이라고 합니다.

실제 증명되었는지는 통계학 교수님이나 혹은 주변의 통계학 박사과정에 계신 분에게 말씀하시면 증명을 시도한 논문을 받아보며 눈물 흘릴수 있으시리라 생각됩니다.^^

일단 30개 미만인 경우에는 분석의 의미가 좀 퇴색될수 있습니다. 30개 이상의 데이터를 분석하는 것보다 ,
30개 미만의 데이터를 분석하는 것이 어찌보면 상세하다고 할수 없기 때문입니다. 
그렇다고 분석을 못하지는 않습니다. 부득이하게 분석을 한다면, 이정도는 되지 않는가 라는 정도의
분석정도 할수 있도록 우리 과거의 지혜로운 선배님들께서 이렇게 본인의 이름을 걸어놓으시고 방법을 개발하시고 
증명까지 해주셔서 후대의 우리가 아름답게 쓸 수 있게 되었습니다. 


그리하여 우선 데이터가 30개 미만 일때 부터 방법을 살펴보도록 하여야 합니다.
30개 미만일때는 데이터가 정규분포를 따르지 않을수도 있으므로 정규성(즉 정규분포를 따르는 성질)을 체크해보아야 합니다. 

많은 방법들이 있지만 대표적인 방법 중 3가지를 이렇게 소개하고자 합니다.

1)Kolmogorov-Smirnov test(콜모고로프 스미르노프 방법)
   -> 이방법은 주로 데이터가 2000개 이상 있을때 정규성을 확인할때 적합하다고 합니다. 그래서 일단 이런게 있구나 정도로만 알아놓으시기 바랍니다.

2)Sapiro-wilks test
  -> 이방법은 3개 이상 데이터에 주로 쓰이는 방법으로 자세히 살펴보도록 하겠습니다.

3)Q-Q plot
  -> 그래프의 산포도를 보면서 확인하는 방법으로 이또한 자세히 살펴보도록 하겠습니다.

일단 Sapiro-wilks test 부터 확인하도록 하겠습니다. 


>dataA<-sample(1:100, 29, replace=TRUE)
>hist(dataA, col = "green", las=1)
>shapiro.test(dataA)

======== 결   과 ========================
Shapiro-Wilk normality test

data:  dataA
W = 0.91912, p-value = 0.02897


위와 같이 1에서 100까지 재추첨할수 있게 데이터를 29개 뽑았습니다. 
이것을 히스토그램으로 확인했을 경우 딱봐도 정규성을 안띈다고 볼수 있습니다(그래프 모양이 종의 모양이 아니라는 이야기죠)

하지만 우리는 더 정확한 수치를 확인하기 위해서 Shapiro-wilk 정규성 테스트 결과를 위와 같이 확인하여 보았습니다.

p value가 0.02897이 나와서 0.05보다 작게 나온것을 확인할수 있습니다. 

p-value를 확인할때 가장 헷갈리는 것은 이것이 높게 나와야 좋은 것인지 낮게 나와야 좋은것인지 초보자들은 잘 모르는경우가 많습니다.

유의확률 즉 p-value는 어떠한 확률값을 표현한것으로
보통 0.05보다 높으면 기대했던 결과가 대부분 정규분포안에 들어가므로 맞다고 판단하고 있으며,
0.05보다 낮으면 정규분포에 속하지 않으므로 기대했던 결과가 논리적으로 정규분포 밖에 있으므로 기대했던 결과는 거짓이라고 판단하고 있습니다.

그래서 보통 p-value를 확인할때는 어떤 가설을 확인하고자 했는지를 생각해보는 것이 가장 중요합니다. 
그것이 바로 귀무가설이라고 하고 영어로는 null hypothesis라고 합니다. 
그런데 사람들은 이 귀무가설에 대해서 언급을 잘 하는 경우도 있지만, 때로는 언급하지 않고 넘어가는 경우도 있습니다. 
그럴 경우에는 항상 H0 는 귀무가설이고 이 귀무가설은 무엇인지 해설을 통해서 유추하셔야 합니다. 

이번의 실험에서 지정한 귀무가설 H0는 "이 데이터 값들이 정규성을 가진다" 입니다.
그래서 가진다고 생각하고 실험을 해봤는데 실험 결과 p-value는 0.02897이 나오고 0.05보다 작으므로 희귀한 일이 되는 것입니다. 
따라서 우리는 어려운 말로 이 p-value는 0.05보다 작기때문에 귀무가설을 기각하고 대립가설을 채택한다고 이야기 할수 있습니다.
대립가설은 귀무가설을 부정한 것으로 이번에는 "데이터값들이 정규성을 가지지 않는다" 입니다.

따라서 이번에 한 실험에서 이 데이터로는 비모수적인 방법의 분석을 해야한다는 결론을 내야 합니다. 

다음 실험을 확인해보도록 하죠 

> dataNorm <- rnorm(29,0,1)
> hist(dataNorm)
> hist(dataNorm,las=1)
> shapiro.test(dataNorm)

======== 결   과 ========================
    Shapiro-Wilk normality test

data:  dataNorm
W = 0.98018, p-value = 0.8426


위와같이 하였을 경우 데이터들은 p-value값이 0.8426이므로 이것은 귀무가설을 기각하지 못한다고 할수 있습니다. 
통계는 참 말이 어렵습니다. 기각하지 못한다는 것은 그러하다는 뜻인데 왜 그렇게 어렵게 쓰면서 노는지 이해할수는 없습니다. ㅎㅎ
하지만 어쨌든 H0 는 이 데이터들은 정규성을 가진다 였으므로 p-value가 0.05보다 높으므로 귀무가설이 맞을 가능성이 있다는 결론을 내는 것입니다.
따라서 이 데이터들은 정규성을 가진다는 가정을 해도 논리적이라고 할수 있게 됩니다. 

이럴경우에는 데이터수가 29개라도 정규성을 가지기 때문에 데이터를 t-검정을 통해서 분석하거나 진행할수 있게 됩니다. 

알고나면 참 재미나는데 모르니까 헷갈려서 포기하는게 통계입니다. 
모른다고 포기하지말고 이해 될때까지 보시고 이해 되지 않더라도 언젠가는 이해되겠지 하고 생각하고 보시면
이해가 될거라 믿습니다. 

그럼 나머지는 다음에 하도록 하겠습니다. 




참조 문헌
Enterprise guide 분석편 (자유아카데미, SAS 에반젤리스트 저) 참조



+ Recent posts