관리

로그 그래프 읽는 법: 같은 높이가 같은 증가량은 아닙니다

그래프 눈금이 1, 10, 100, 1,000처럼 늘어난다면 같은 간격은 같은 차이가 아니라 같은 비율을 나타냅니다. 로그 축은 값이 여러 자릿수에 걸칠 때 작은 값까지 비교하기 좋지만, 보통 눈금처럼 읽으면 증가량을 오해하기 쉽습니다. 먼저 축의 숫자와 ‘log’ 표시를 확인하세요.

선형 축의 같은 간격은 같은 차이, 로그 축의 같은 간격은 같은 비율을 나타낸다.
그림 1. 선형 축의 같은 간격은 같은 차이, 로그 축의 같은 간격은 같은 비율을 나타낸다.

10배 구간은 모두 같은 길이

밑이 10인 로그 축에서는 1에서 10, 10에서 100, 100에서 1,000으로 이동하는 거리가 같습니다. 각각 9, 90, 900씩 증가하지만 모두 10배이기 때문입니다. OpenStax의 로그함수 설명은 로그를 지수함수와 연결해 설명합니다. 여기서 축의 위치는 원래 숫자 자체가 아니라 그 숫자의 로그에 따라 정해집니다.

가상 데이터를 10, 20, 40, 80으로 잡고 같은 시간 간격에 놓아 보세요. 매번 두 배이므로 로그 세로축에서는 같은 높이씩 올라가 직선이 됩니다. 원래 값의 차이는 10, 20, 40으로 커집니다. 반면 10, 20, 30, 40처럼 같은 양을 더하는 경우에는 로그 축에서 위로 갈수록 간격이 좁아집니다.

중간 지점도 산술평균이 아니다

로그 축에서 10과 100 사이의 정중앙은 55가 아닙니다. 10 × 100의 제곱근인 약 31.6입니다. 10에서 31.6까지도, 31.6에서 100까지도 약 3.16배이기 때문입니다. 따라서 그래프 중앙의 위치를 읽을 때는 근처의 작은 눈금과 표시값을 확인하고, 두 끝 숫자를 단순히 더해 나누지 않습니다.

구간차이배수로그 축 거리
2 → 201810배한 구간
20 → 20018010배같은 한 구간
10 → 20102배100 → 200과 같음
일반 로그 축은 양수에만 적용된다. 0·음수·누락 값을 설명 없이 버리지 않는다.
그림 2. 일반 로그 축은 양수에만 적용된다. 0·음수·누락 값을 설명 없이 버리지 않는다.

0과 음수는 어디로 갔을까?

보통의 실수 로그 축에는 0이나 음수를 그대로 표시할 수 없습니다. Matplotlib의 로그 축 문서는 이런 값을 마스킹하거나 작은 양수로 클리핑하는 처리 예를 보여 줍니다. 이 때문에 그래프에 점이 없다는 사실이 원자료에 관측값이 없다는 뜻은 아닐 수 있습니다. 데이터가 숨겨졌는지 확인해야 합니다.

자료에 0이 중요하면 선형 축을 함께 제시하거나, 0 근처를 다르게 처리하는 변환을 명시하는 편이 낫습니다. symlog처럼 음수를 다루는 축은 보통 로그 축과 구조가 다릅니다. 단순히 모든 값에 1을 더하는 방법도 해석을 바꾸므로, 설명 없이 적용하면 비교가 달라집니다.

로그 그래프에서 먼저 읽을 네 가지

  1. 가로·세로 중 어떤 축이 로그인지 확인합니다.
  2. 밑과 눈금값을 보고 한 구간의 배수를 찾습니다.
  3. 차이를 묻는지 비율을 묻는지 구분합니다.
  4. 0, 음수, 누락값을 어떻게 처리했는지 확인합니다.

파일 수 10개와 10,000개처럼 범위가 넓은 비교에는 로그 축이 유용할 수 있습니다. 하지만 실제 추가된 건수를 보여 주려면 선형 축이나 원래 숫자 표가 더 직접적입니다. 로그 그래프가 항상 과장되거나 항상 공정한 것은 아닙니다. 보여 주려는 질문과 축의 뜻이 맞는지 판단해야 합니다. 독자로서는 같은 시각적 높이를 ‘같은 증가량’으로 번역하지 않는 것이 첫걸음입니다.

함께 읽으면 좋은 글

본문의 이해를 돕기 위해 제작한 설명용 삽화입니다.