본문으로 건너뛰기

A.4. 상관은 이렇게 잰다

Pearson·Spearman·CCF·DTW·Granger

"함께 움직였다" 를 재는 방법이 다섯입니다. 재는 각도가 서로 다릅니다.

다섯 가지 한눈에

방법무엇을 재나시차를 보나답의 모양
Pearson직선 관계의 세기아니오-1 ~ 1
Spearman순위가 함께 움직이는가아니오-1 ~ 1
CCF밀어 가며 잰 상관예 (일정한 시차)최적 lag + 상관
DTW늘려 맞췄을 때의 거리예 (변하는 시차)거리 (작을수록 닮음)
Granger앞 값이 뒤를 설명하는가p-value

기본은 Pearson 입니다.

1. Pearson — 직선 관계

무엇을 하나

두 지표가 비례해서 움직이는 정도를 잽니다.

+0.7 ~ +1.0강한 양의 상관 — 같이 오른다
+0.3 ~ +0.7약한 양의 상관
-0.3 ~ +0.3거의 관계없다
-0.7 ~ -0.3약한 음의 상관
-1.0 ~ -0.7강한 음의 상관 — 반대로 움직인다

음수라고 무의미한 것이 아닙니다. "여유 메모리 ↓ 응답시간 ↑" 처럼 반대로 가는 것이 정상인 짝도 있습니다. 부호는 방향이고 세기는 절댓값입니다.

p-value 도 함께 나옵니다

"이 상관이 우연일 확률" 입니다.

p-value
< 0.05우연일 확률 5% 미만 — 의미 있다고 봄
≥ 0.05우연일 수 있음 — 주의

상관계수가 높아도 p-value 가 크면 점이 몇 개 안 되어 우연히 그렇게 보였을 수 있다는 뜻입니다. 짧은 구간으로 돌렸을 때 흔히 그렇습니다.

한계 — 직선이 아니면 못 잡는다

직선이 아닌 관계는 Pearson 이 놓친다

분명히 관계가 있는데 직선이 아니라서 Pearson 값은 낮게 나옵니다. 이럴 때 필요한 것이 Spearman 입니다.

2. Spearman — 순위로 본다

무엇을 하나

값을 그대로 쓰지 않고 순위로 바꾼 뒤 Pearson 을 적용합니다.

CPU 값 : 20 45 62 81 95
순위 : 1 2 3 4 5

응답시간 : 190 195 205 340 700
순위 : 1 2 3 4 5 ← 순위는 완벽히 일치

값의 간격이 아무리 들쭉날쭉해도 "A 가 클 때 B 도 컸나" 만 봅니다. 위 예에서 Pearson 은 낮게, Spearman 은 1.0 에 가깝게 나옵니다.

동점이 있으면 평균 순위로 처리합니다.

언제 유용한가

상황
관계가 휘어 있다임계점을 넘어서야 반응하는 지표
크게 벗어난 값이 섞여 있다순위로 바꾸면 극단값의 영향이 줄어듭니다
단위가 크게 다르다순위끼리 비교하므로 상관없습니다

두 값을 나란히 보면 알 수 있는 것

PearsonSpearman읽는 법
높음높음비례 관계 — 단순하고 뚜렷함
낮음높음휘어진 관계 — 임계점이 있을 수 있음
높음낮음몇 개의 극단값이 상관을 만들어 냄 — 의심
낮음낮음관계 없음

두 번째와 세 번째 줄이 특히 쓸모 있습니다.

3. CCF (교차상관) — 시간을 밀어 본다

무엇을 하나

한쪽을 한 칸씩 밀어 가며 상관을 재고, 가장 높게 나오는 지점을 찾습니다.

CCF — 시간을 밀어 가며 잰 상관

결과 읽는 법

최적 lag
0두 지표가 동시에 움직였다
+2B 가 A 보다 2칸 뒤에 따라갔다
-3B 가 A 보다 3칸 먼저 움직였다

왜 쓸모 있나

동시에 재면 상관이 없어 보이는 짝도 밀어 보면 뚜렷하게 나옵니다.

GC 가 돌고 나서 몇십 초 뒤에 응답시간이 오르는 패턴은 동시 비교로는 안 잡힙니다. CCF 로 밀어 보면 그 시차가 숫자로 나옵니다.

먼저 움직인 쪽이 원인일 가능성이 높습니다. 원인 추적에 쓰는 방법입니다.

4. DTW — 시간 축을 늘려 맞춰 본다

무엇을 하나

두 시계열을 늘리고 줄여 가며 가장 잘 겹치는 상태를 찾고, 그때 남은 차이를 잽니다.

DTW — 속도가 달라도 모양이 같으면 잡는다

CCF 와 무엇이 다른가

CCFDTW
가정시차가 일정하다시차가 구간마다 달라도 됨
"몇 칸 밀렸다""얼마나 닮았다"
상관계수거리 (작을수록 닮음)

CCF 는 통째로 밀어 보고, DTW 는 구간마다 늘였다 줄였다 합니다.

앞단 서비스에서 빠르게 일어난 일이 뒷단에서 천천히 전파되는 상황처럼, 전파 속도가 일정하지 않을 때 DTW 가 잡아냅니다.

탐색 범위 제한

시간을 무한정 늘리면 아무 두 곡선이나 닮아 보입니다. 그래서 Sakoe-Chiba 밴드 라는 제약을 둘 수 있습니다: "최대 이만큼까지만 밀어서 맞춰라" 입니다.

기본은 제약 없이 전체를 탐색합니다.

5. Granger — 예측에 도움이 되는가

무엇을 하나

"A 를 알면 B 를 더 잘 맞히는가" 를 검정합니다.

그레인저 인과관계 검정 네 단계

②가 눈에 띄게 정확하다면, A 에 B 에 대한 정보가 들어 있다는 뜻입니다.

이름과 실제 의미가 다릅니다

"인과관계 검정" 이라는 이름이지만 진짜 인과를 증명하지 않습니다.

말할 수 있는 것은 "A 의 과거가 B 의 예측에 도움이 된다" 까지입니다. 둘 다 세 번째 요인의 영향을 받아도 이 검정은 통과할 수 있습니다.

왜 여러 방법을 함께 쓰나

각 방법이 못 보는 것이 서로 다릅니다.

이런 관계인데놓치는 방법잡는 방법
휘어진 관계PearsonSpearman
일정한 시차가 있다Pearson · SpearmanCCF
시차가 구간마다 다르다Pearson · Spearman · CCFDTW
극단값이 상관을 만들어 냄PearsonSpearman
순서가 궁금하다Pearson · Spearman · DTWCCF · Granger

MSA 장애 전파 상관 분석다섯을 다 쓰는 이유입니다. 한 방법만 썼을 때 생기는 오판을 나머지가 보완합니다 (402 장).

결과가 엇갈리면

엇갈림어떻게 읽나
Pearson 낮고 Spearman 높음관계는 있으나 직선이 아니다
Pearson 높고 p-value 큼점이 너무 적다 — 기간을 넓혀 다시
CCF 는 높은데 Pearson 낮음시차가 있다 — lag 값을 보십시오
Granger 만 통과예측에는 도움이 되나 관계가 약함

어느 방법이든 인과는 아닙니다

다섯 다 함께 움직였는지를 잽니다. 한쪽이 다른 쪽의 원인이라고 말해 주지 않습니다.

아이스크림 판매량과 물놀이 사고는 둘 다 여름에 늘어납니다. 상관은 높지만 아이스크림이 사고를 일으키는 것이 아닙니다. 공통 원인은 더운 날씨입니다.

운영에서도 같습니다. 트래픽이 늘면 CPU 도 오르고 응답시간도 늘어납니다. CPU 와 응답시간의 상관은 높지만, CPU 를 늘려도 트래픽이 그대로면 응답시간은 안 잡힙니다.

결과는 원인 후보를 좁힌 것으로 읽으십시오.

더 자세한 것

Pearson · CCF · Granger 의 수식은 Forecast MCP 서버 문서의 알고리즘 가이드 (600-algorithm_guide.md) §5 에 있습니다. Spearman 과 DTW 는 그 문서에 없으며 구현(pkg/engine/correlator/spearman.go · dtw.go)이 근거입니다.

다음으로