시계열분석 쉽게 이해하기 😊
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)을 통해 숨겨진 패턴을 드러낼 수도 있음.
정리 😊
- 백색소음인지 확인하려면?
- 평균과 분산 확인
- ACF 그래프에서 상관성이 거의 없는지 확인
- 백색소음으로 분류하려면?
- 모든 패턴을 제거한 뒤에도 랜덤하게 보일 때 "백색소음"이라고 부를 수 있다.
'데이터 > 데이터' 카테고리의 다른 글
[내 머리로 연관분석] 캐글 TV프로그램 선호데이터 - 오렌지3 실습 (0) | 2025.01.28 |
---|---|
[내 머리로 시계열분석] 시계열데이터의 정상성 획득 그리고 차분 (1) | 2025.01.05 |
25년 빅분기/ADP 시험일정 (0) | 2024.12.29 |
[내 머리로 시계열분석] 시계열분석의 정의와 자기상관성(ACF) (0) | 2024.12.29 |
AARRR 실무에서 활용하는 법 - w. 양승화, <그로스해킹> (5) | 2024.10.26 |