IDL/Math

A_CORRELATE 함수를 이용한 자기상관(Autocorrelation) 기법의 활용 [1]

이상우_IDL 2017. 11. 20. 22:00
728x90

오늘은 Autocorrelation(자기상관) 기법을 IDL에서 어떤 방식으로 활용할 수 있는가에 대한 얘기를 해보고자 합니다. 제가 이 용어를 우리말로 "자기상관"이라고 표현하긴 했는데 적절한 표현이 맞는지는 모르겠습니다. 그래도 일단 오늘 이 게시물에서는 이 용어로 통일해서 사용하고자 합니다. 자기상관의 개념에 대해서는 아시는 분들은 다 아시리라 생각이 됩니다. 어떤 1차원 데이터가 있을 때 이를 그대로 복제해서 일정 거리만큼 이동시킨 복제 데이터와 원본 데이터 사이의 연관성을 정량적으로 산출하는 기법인데, 주로 신호 처리 분야에서 복잡하고 랜덤해보이는 데이터 내에 숨겨진 규칙성을 찾아내는데 이용됩니다. IDL에서는 A_CORRELATE라는 내장함수가 이러한 기능을 수행합니다. IDL 도움말에서 A_CORRELATE 함수에 관한 내용을 찾아보면 기본적인 사용법이 대략 다음과 같이 설명되어 있습니다.


result = A_CORRELATE(X, Lag)


여기서 첫번째 인자인 X는 처리 대상 데이터에 해당되는 1차원 배열이 되어야 합니다. 그리고 두번째 인자인 Lag는 원본 데이터와 복제 데이터 사이의 간격을 배열 인덱스 단위로 나타낸 값이 되어야 합니다. 그리고 result는 이 함수가 돌려주게 되는 결과로서 자기상관계수(Autocorrelation Coefficient)의 값이 됩니다. 일단 간단한 예제 데이터를 사용하는 예제를 한번 보겠습니다. 다음과 같이 6개의 값들로 구성된 x라는 1차원 배열에 대하여 A_CORRELATE 함수를 사용하여 자기상관계수를 산출해 봅시다.


x = [4, 7, 8, 2, 5, 3]

acor = A_CORRELATE(x, 2)

PRINT, acor


여기서는 Lag에 해당되는 인자값을 2로 설정해놓았는데, 출력된 결과값을 보면 약 -0.11 정도가 나오는 것을 확인할 수 있습니다. 자기상관계수는 일반적인 상관계수(Pearson's Correlation Coefficient)와는 계산 과정이 엄밀하게는 약간 다르긴 하지만, 상관계수의 일종이기 때문에 그 값은 -1에서 +1의 범위내에 있게 됩니다. 전반적으로 사용 방법은 이와 같이 간단합니다.


다만 여기서 좀 유의해야 할 부분은 바로 Lag라는 인자의 의미인데요. 처리 대상인 1차원 배열의 원소 갯수가 n이라고 할 경우, Lag 인자의 값은 -(n-2)에서 +(n-2)의 범위에서 존재해야 합니다. 즉 위의 예제처럼 데이터 갯수가 6개인 경우라면 Lag 인자의 값은 -4~+4의 범위에 있어야 합니다. 하지만 더 혼동하기 쉬운 것은 Lag 인자의 값이 (+)일 경우와 (-)일 경우에 대한 차이인데요. 위 예제에서와 같이 +2로 설정된 경우라면, 복제 데이터는 원본 데이터의 왼쪽 방향으로 2만큼 떨어져 있다는 얘기가 됩니다. 이해를 돕기 위하여 이 내용을 다음과 같이 도식적으로 나타내 보았습니다.



이와 같이 복제 데이터를 한쪽 방향으로 이동시킨 상태에서 원본 데이터와 위치가 겹치는 부분들만이 실제 자기상관계수의 산출에 있어 핵심적으로 고려되는 부분이 됩니다. Lag 인자의 값이 (+)이면 복제 데이터를 왼쪽으로 이동시킨다는 의미이고 (-)이면 오른쪽으로 이동시킨다는 의미가 된다는 점을 유의해야 합니다. 위의 예제에서처럼 Lag의 값이 +2라면 위의 그림과 같은 형태가 됩니다. 물론 만약 Lag의 값이 -2가 되는 경우라면 상황이 반대가 될텐데, 이 상황을 도식적으로 표현하면 다음 그림과 같습니다.



그런데 이렇게 Lag 인자값의 부호가 반대가 되더라도 산출되는 자기상관계수의 값은 동일합니다. 그 이유는 위의 두 그림 설명을 보시면 금방 파악이 가능합니다. 복제 데이터의 이동 방향이 반대가 되더라도 자기상관계수의 계산에 있어서 고려되는 두 데이터는 사실상 동일하기 때문입니다. 이와 같이 자기상관계수의 산출에 있어서 Lag 인자에 대한 의존성은 그 절대값에 의한 영향만 받게 됩니다. 다만 Lag 인자의 절대값을 크게 잡을 경우 자기상관계수의 산출에서 고려되는 데이터의 비율이 점점 줄어들게 되므로, Lag 인자의 값을 지나치게 크게 잡는 것은 별로 바람직하지 않다는 것을 알 수 있습니다. 물론 위의 예제는 제가 개념 설명을 위하여 좀 과장된 상황을 표현해본 것일 뿐입니다.


오늘은 A_CORRELATE 함수를 사용하여 자기상관 기법을 IDL에서 적용하는 방법을 예제와 함께 간단히 살펴보았습니다. 관련된 내용을 조만간 다음번 게시물에서 좀 더 이어서 소개해 보기로 하겠습니다.

LIST