[matlab, #12] 통계 관련 코드

0. 배경 및 목적

한 동안 새로운 코드를 작성하기 보다는 기존의 코드를 수정하는데 몰두했다. 중간 보고의 시기가 다가오면서 데이터를 정교하게 다듬고 시각화하는 방법을 인지했다. 시간과 관련된 분포를 보고자 할 때 histogram과 표준정규분포를 활용했다. 분포는 우리에게 많은 정보를 가져다 준다. 평균과 분산, 그리고 두 분포를 비교함으로서 변화의 방향과 크기까지. 이에 더해 이상한 점도 파악하는 기능을 갖추었다.
이에 더하여, 최댓값과 최솟값을 찾아내는 함수인 min, max를 최대한 활용하는 법을 알아볼 것이다. 본 함수를 활용하여 우리는 결괏값의 위치를 조금 더 편하게 찾아낼 수 있을 것이다.

1. histogram

1.1 코드

x = randn(1000, 1)
h = histogram(x)
hf = histfit(x)

1.2 설명

히스토그램 사용은 간편하다. 인자 1개만 입력해도 그래프를 제작할 수 있다. 위 코드에서 x는 난수 1000개를 포함하는 변수다. x라는 array는 histogram 함수에 입력되는데, 그 결과 1.3과 같은 그림을 볼 수 있다.
아래 그림에서 해석할 수 있는 것은 무엇이 있을까? 대략 3가지에 대한 생각을 해볼 수 있다. 첫 번째, 분포를 볼 수 있다. x라는 array에 최대값과 최솟값을 확인할 수 있다. 두 번째, 평균을 알 수 있다. 대략적으로 보아도 0 주변에 평균이 존재할 것 같은 느낌이 든다. 세 번째, 정규 분포 모양을 볼 수 있다. 이는 곧, 분산이 큰지 또는 작은지 확인할 수 있다는 의미다.
이를 분석시 어떻게 적용할 수 있을까? 분포는 이상치를 확인하는데 사용할 수 있다. 생각보다 너무 작은 값이나 너무 큰 값이 있으면 해당 값에 대한 의심을 해볼 수 있다. 두 번째, 평균 자체로도 생각할 수 있는 여지가 있지만, 그래프 간 비교할 때에는 요긴하게 사용할 수 있다. 마지막으로 모양으로는 분산의 크기를 비교할 수 있다. 분산이 크면 뚱뚱한 종 모양이, 분산이 작으면 날씬한 종 모양의 그래프를 볼 수 있을 것이다.
정규분포그래프를 그리고 싶다면, histfit을 사용하면 된다. 히스토그램에 맞는 종모양의 그래프를 그려준다. 평균과 표준편차만 안다면 해당 구간에 세로 선을 추가할 수 있다. 그러면 우리가 교과서에서 본 그림이 완성된다.

1.3 그림

1.3.1 hist

1.3.2 histfit

1.4 bin

bin은 구간을 나누는 제수다. 단적으로 말하면 xticks의 개수다. 더 쉽게 말하면 bin의 개수만큼 막대그래프가 그려진다.
그려지는 원리는 최댓값과 최솟값 사이에서 bin의 개수를 사용하여 구간의 개수를 결정하는 것 같다.
bin이 변화하면 무엇의 변화가 발생할까? bin의 개수가 증가하면 히스토그램의 막대 폭이 작아진다. 이것이 의미하는 바는 동일한 구간을 더 잘게 나누었다는 것이겠지. 두 번째로 달라지는 것은 y의 구간이 작아진다. bin의 계속 커지게 되면, y값은 결국 0과 1 사이에서 그려진다. 왜냐면 y값은 개수이기 때문이다.
반대로 bin의 개수가 커지면 히스토그램의 막대는 1개가 되어 사각형이 그려진다. x값은 최댓값 및 최솟값, y값은 array 총 개수에 위치한다.

3. max, min, sort

3.1 코드

x = randn(1000, 1)
[value_max, index_max] = max(x)
[value_sort, index_sort] = sort(x)

3.2 활용

index로 활용할 수 있는 것들이 많다. index는 숫자가 어디에 있는지 확인할 수 있는 정보를 제공해준다.
최댓값과 최솟값 등을 찾으면 어디에 있는지 알고싶어질 때가 있다.
숫자를 정리한 이후에도 해당 숫자가 어디에 있었는지 index를 통해 확인할 수 있다.

4. dirty work 필요성

4.1 정의

연구에서의 dirty work란 데이터 바닥 끝까지 내려가는 것이다. 혹은 진흙 속에 있는 '일'을 하는 것으로 비유할 수 있다. 신은 디테일(detail)에 있다는 생각으로 수행해야 하는 작업이다.

4.2 필요성

첫 번째, dirty work는 검증용으로 적합하다. 이상한 데이터가 존재할 때 개별적으로 확인할 수 있기 때문이다. 예를 들어, 이상 항적 데이터가 존재할 때 해당 항공편이 무엇인지 확인해 볼 수 있다. 다른 방법도 있지만 가장 쉽고 빠르게 문제를 검증하고 해결하는 방법인 것으로 보인다.
문제해결에 집중하는 것은 좋지만, 왜 이런 현상이 발생했는지 인지하고 해결 방안을 찾는 것이 더 좋지 않은가? 가장 효율적인 방법은 가장 더러운 영역으로 들어가는 방법인 듯 싶다.
두 번째, 감을 잡기에 좋다. 데이터가 어떻게 생겨먹었는지 알기 위한 가장 좋은 방법이다. 그 이유는 두 가지다. 첫 번째, dirty work를 수행하는 과정에서 데이터에 익숙해진다. 두 번째, dirty work 결과를 보면 예측이 가능하다. 수행 과정이 늘어날수록 과거 자료가 많아지므로 예측력이 생성되고 이는 곧 자신의 감으로 발전한다.
나는 dirty work를 초반에 많이 해야 한다고 생각한다. 왜냐면 데이터에 대한 이해도가 높아져 연구에 도움이 되기 때문이다. 관심의 눈초리로 데이터를 바라보고 이성을 활용하여 데이터를 시각화해보아야 한다. 그리고 그 결과에 대한 해석을 해야 한다. 그러면 자연스럽게 데이터에 대한 감이 생성될 것이다.

좋은 웹페이지 즐겨찾기