본문 바로가기
데이터/데이터

[내 머리로 시계열분석] 시계열 분해요소(계절성, 순환성, 추세성) 그리고 백색소음

by 단단_SINCE 2023 2025. 1. 1.

시계열분석 쉽게 이해하기 😊


1️⃣ 시계열분해: 계절성, 순환성, 추세성 🌤️

비유로 이해하기

시계열 데이터를 하나의 음악으로 생각해보자. 🎵
음악은 피아노, 드럼, 바이올린이 각각 소리를 내며 전체 곡을 완성한다. 시계열 데이터도 마찬가지로, 다양한 패턴이 모여서 만들어진다.

시계열분해의 구성 요소

  • 추세(Trend): 데이터가 길게 보면 꾸준히 증가하거나 감소하는 패턴.
    → 예: 집값이 해마다 상승하는 모습 🏡
  • 계절성(Seasonality): 일정 주기로 반복되는 패턴.
    → 예: 여름철에 아이스크림 판매량이 증가하는 모습 🍦
  • 순환성(Cyclicality): 계절성보다 긴 주기로 변동하는 패턴.
    → 예: 경기 침체와 회복이 반복되는 경제 흐름 📉📈

시계열분해 비교표

구분 특징 예시 주기

추세 장기적으로 증가 또는 감소하는 경향 도시의 인구 증가 📈 없음
계절성 일정한 주기로 반복되는 패턴 월별 에어컨 판매량 ⛄🔥 고정
순환성 긴 주기의 변동성, 일정하지 않음 경제 호황과 불황 🚀 불규칙

 
계절성과 순환성은 언뜻 비슷해보이지만 순환성은 계절성처럼 월, 연 등의 주기를 특정할 수 없다는 특징이 있다.


 

 

2️⃣ 백색소음: 데이터의 배경음 🎶

비유로 이해하기

백색소음(White Noise)은 데이터의 "배경잡음"과 같다. 😌 예를 들어, 조용한 도서관에서도 종종 책 넘기는 소리나 기침 소리가 들리는데 이렇듯 전체적인 흐름과는 관련이 없는 "랜덤한 소리"다.

  • 특징:
    • 규칙성이 없음.
    • 평균이 0에 가깝다.
    • 분산이 일정.

백색소음은 분석에 방해가 될 수도 있지만, 그 자체로 데이터의 랜덤성을 설명해준다 🎲

왜 중요한가요?

백색소음은 분석의 기준점. 만약 데이터가 백색소음이라면 의미 있는 패턴이 없다는 뜻이다. 📉 하지만 백색소음이 아니라면, 숨겨진 패턴을 찾을 수 있는 가능성이 있다는 것 ✨
 


백색소음을 발견하는 방법 🔍

1. 평균과 분산 확인하기

백색소음의 특징 중 하나는 평균이 0에 가깝고 분산이 일정하다는 것이다. 데이터를 확인해서 이런 특성이 나타나는지 보면 백색소음을 발견할 수 있다.


백색소음의 평균이 0이라는 뜻은?

비유로 이해하기

평균이 0이라는 건 데이터의 값들이 플러스(+)와 마이너스(-) 방향으로 골고루 퍼져 있다는 뜻. 예를 들어, 동전을 던져서 어떤 건 위로, 어떤 건 아래로 튕긴다고 생각해보자.

  • 평균이 0인 경우: 동전들이 위로 간 개수와 아래로 간 개수가 비슷해서 전체적으로는 평형을 이루는 상태.
  • 데이터가 시간 흐름에 따라 위아래로 왔다 갔다 하지만, 한쪽으로 치우치지 않고 중심값(0)을 유지.

데이터 예시:

[-1.2, 0.5, 1.1, -0.3, 0.2]  
평균 = (-1.2 + 0.5 + 1.1 - 0.3 + 0.2) / 5 = 0.06 ≈ 0

분산이 일정하다는 뜻은?

비유로 이해하기

분산은 데이터가 얼마나 넓게 퍼져 있는지를 나타낸다. 🌟 만약 분산이 일정하다면, **데이터의 흩어짐(변동성)**이 시간에 따라 꾸준히 유지된다는 뜻.

예시

축구공을 차는 연습을 한다고 가정해보자. ⚽

  • 발로 찰 때마다 공이 5~10m 안에서 랜덤하게 튄다.
  • 여기서 공이 튀는 범위(분산)가 항상 일정하면, 튀는 거리의 변동성이 안정적이라는 뜻.

백색소음에서는 이 "공 튀는 거리"가 일정해서, 데이터의 변동이 예측 가능하게 유지된다.


  •  

정리! 😊

  • 평균이 0: 데이터가 위아래로 골고루 퍼져 있고, 중심이 치우치지 않음.
  • 분산이 일정: 데이터의 변동성이 꾸준히 유지됨.

즉, 백색소음은 완전 랜덤하지만 규칙적으로 흩어진 데이터. 분석할 때는 이런 특성을 이용해 의미 있는 패턴과 백색소음을 구분할 수 있다.
 


2. ACF(자기상관 함수) 확인하기

백색소음은 시간 간 데이터 간에 아무런 상관관계가 없다. 즉, 자기상관이 거의 0에 가깝다. ACF 그래프를 그려보면 시차(lag)와 관계없이 값이 거의 0에 가까운 수평선이 나온다.

예시:

import numpy as np
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf

# 백색소음 데이터 생성
white_noise = np.random.normal(0, 1, 1000)

# ACF 그래프 그리기
plot_acf(white_noise, lags=30)
plt.show()
  • 결과 해석: 그래프에서 막대들이 중심선(0) 근처에 머물러 있다면 백색소음일 가능성이 높다.

 


2️⃣ 패턴이 없으면 백색소음일까? 🤔

반드시 그렇지는 않다! 단순히 눈으로 봐서 패턴이 없어 보이는 데이터가 실제로 백색소음이 아닐 수 있다. 😮

예시:

  • 패턴이 숨어 있는 경우: 데이터가 복잡한 주기성을 띠지만 단순한 시각화로는 드러나지 않을 수 있음.
  • 데이터 변환이 필요할 때: 로그 변환, 차분(differencing)을 통해 숨겨진 패턴을 드러낼 수도 있음.

정리 😊

  1. 백색소음인지 확인하려면?
    • 평균과 분산 확인
    • ACF 그래프에서 상관성이 거의 없는지 확인
  2. 백색소음으로 분류하려면?
    • 모든 패턴을 제거한 뒤에도 랜덤하게 보일 때 "백색소음"이라고 부를 수 있다.