본문 바로가기
수학&통계학

시계열 분석 (1) : 정상성, 자기상관

by 코스믹구구 2026. 5. 15.
주가, 기온, 월별 매출, 코로나 확진자 수 — 이런 데이터는 모두 시간 순서대로 기록된다.
일반적인 머신러닝은 각 데이터 포인트가 독립적이라고 가정하지만, 시계열 데이터는 어제가 오늘에 영향을 주고, 오늘이 내일에 영향을 준다.
이 시간적 의존성을 분석하고 미래를 예측하는 것이 시계열 분석이다.

1. 시계열이란?

시계열(Time Series)이란 동일한 대상을 일정한 시간 간격으로 반복 측정한 데이터다. 핵심은 "시간 순서"다. 데이터의 순서를 바꾸면 의미가 사라진다.

일반 데이터
고객 100명의 나이, 소득, 구매 여부

→ 순서 바꿔도 무관
→ 각 행이 독립적
시계열 데이터
1월~12월 월별 아이스크림 판매량

→ 순서가 의미를 가짐
→ 이전 값이 현재 값에 영향

시계열 데이터의 예시

  • 경제·금융: 주가, 환율, GDP, 인플레이션율
  • 날씨·환경: 일별 기온, 강수량, 미세먼지 농도
  • 비즈니스: 월별 매출, 웹사이트 방문자 수, 재고량
  • 의료·생체: 심박수(ECG), 뇌파(EEG), 혈당
  • 산업·IoT: 공장 센서 데이터, 전력 소비량

 

2. 시계열의 4가지 구성 요소

시계열 데이터를 분석할 때 가장 먼저 하는 작업은 "이 데이터가 어떤 패턴들로 이루어져 있는가?"를 파악하는 것이다. 일반적으로 4가지 요소로 분해한다.

① 추세 (Trend)
장기적으로 데이터가 증가하거나 감소하는 방향.
예) 스마트폰 판매량은 10년간 꾸준히 증가
→ 선형·비선형 추세 모두 가능
② 계절성 (Seasonality)
일정 주기로 반복되는 패턴.
예) 아이스크림은 여름에 많이 팔림 (연 주기)
→ 주기가 고정되어 있다는 게 핵심
③ 주기성 (Cyclicity)
계절성과 비슷하지만 주기가 고정되지 않은 반복.
예) 경기 순환 (불황→회복→호황, 2~10년)
→ 계절성과 달리 주기가 불규칙
④ 불규칙 (Residual)
추세·계절성·주기성으로 설명되지 않는 나머지.
예) 갑작스러운 이벤트, 측정 오류, 노이즈
→ 랜덤하며 예측 불가능
💡 계절성 vs 주기성 — 헷갈리기 쉬운 차이
계절성: 주기가 고정 (1년, 1주일, 하루 등). 달력 기반 패턴
주기성: 주기가 가변. 경기 사이클처럼 몇 년이 될 수도 있고 더 길 수도 있음
→ 실제 데이터에서는 두 가지가 동시에 나타나는 경우가 많다.

3. 정상성 (Stationarity) — 시계열 분석의 가장 중요한 개념

시계열 분석에서 정상성은 가장 핵심이 되는 개념이다. AR, MA, ARIMA 같은 전통 시계열 모델은 모두 데이터가 정상적이라는 가정 위에서 작동한다. 정상성이 무엇인지 먼저 확실하게 이해해야 한다.

정상성이란?

쉽게 말하면, "시간이 지나도 데이터의 통계적 특성이 변하지 않는 것"이다.

조금 더 구체적으로는 다음 세 가지 조건을 만족해야 한다.

정상성의 3가지 조건 (약한 정상성, Weak Stationarity)
① 일정한 평균 (Constant Mean)
E[y(t)] = μ (상수)
시간이 지나도 평균이 변하지 않는다.
즉, 데이터가 특정 값 주변을 맴돌아야 한다.
② 일정한 분산 (Constant Variance)
Var[y(t)] = σ² (상수)
시간이 지나도 데이터의 변동폭이 일정해야 한다.
시간이 지날수록 변동이 커지거나 작아지면 안 된다.
③ 일정한 자기공분산 (Constant Autocovariance)
Cov[y(t), y(t-k)] = γ(k) — 시간 t에 무관하고 시차 k에만 의존
두 시점 사이의 관계가 절대적인 시간이 아닌 "두 시점 간의 간격(시차)"에만 달려 있어야 한다.

 

왜 정상성이 중요한가?

AR, MA, ARMA, ARIMA 같은 전통적인 시계열 모델들은 데이터가 정상적이라는 가정 위에서 수학적으로 유도된다. 비정상 데이터에 이 모델들을 그대로 적용하면 가짜 회귀(Spurious Regression)가 발생한다. 즉, 실제로 관계없는 두 변수 사이에 관계가 있는 것처럼 잘못된 결과가 나온다.

💡 가짜 회귀(Spurious Regression)란?
비정상 시계열끼리 회귀를 돌리면 실제로 전혀 무관한 두 변수가 높은 R²와 유의미한 계수를 보인다.
유명한 예: "바다에 빠진 사람 수"와 "니콜라스 케이지 영화 출연 수"는 같은 해에 증가하는 경향이 있다.
둘 다 시간에 따른 추세를 가지기 때문에 비정상 데이터끼리 상관이 높게 나오는 것이다.
→ 정상화 후 분석하면 상관관계가 사라진다.

 

반응형

 

4. 정상성 검정 방법

① 시각적 확인

가장 먼저 시계열 그래프를 그려보는 것이다. 명확한 추세(증가·감소)나 주기적 패턴, 시간에 따라 변동폭이 달라지는 패턴이 보이면 비정상이라고 판단할 수 있다. 단, 눈으로만 판단하는 것은 주관적이다.

② ADF 검정 (Augmented Dickey-Fuller Test)

가장 많이 사용되는 정상성 검정 방법이다. 단위근(Unit Root)이 있는지 통계적으로 검정한다.

ADF 검정 가설 구조
H₀ (귀무가설): 단위근이 존재한다 → 비정상 시계열
H₁ (대립가설): 단위근이 없다 → 정상 시계열

p값 < 0.05 → H₀ 기각 → 정상 시계열
p값 ≥ 0.05 → H₀ 기각 못함 → 비정상 시계열
주의: ADF 검정의 귀무가설은 "비정상"이다
p값이 작아야 정상 → "p값이 작으면 H₀(비정상)를 기각한다"
→ 이걸 반대로 이해하면 결론이 뒤집히므로 주의!

 

③ KPSS 검정

ADF와 반대로 귀무가설이 "정상"이다. 두 검정을 함께 사용하면 더 신뢰성 있는 결론을 낼 수 있다.

검정 H₀ (귀무가설) p < 0.05일 때 p ≥ 0.05일 때
ADF 비정상 (단위근 있음) 정상 ✓ 비정상 ✗
KPSS 정상 비정상 ✗ 정상 ✓

 

5. 비정상 시계열을 정상으로 만드는 방법

비정상이라고 판명되면 적절한 변환을 통해 정상 시계열로 만들어야 한다. 어떤 비정상성인지에 따라 처리 방법이 다르다.

① 차분 (Differencing) — 추세 제거

연속된 두 시점의 차이를 계산하는 것이다. 1차 차분으로도 추세가 제거되지 않으면 2차 차분을 한다.

1차 차분: Δy(t) = y(t) − y(t−1)
예) 주가 1차 차분 = 오늘 주가 − 어제 주가 = 일별 변화량
추세가 제거되어 정상에 가까워진다.
📌 차분 예시 — 편의점 월별 매출 (만원)
원본 데이터 (추세 있음, 비정상)
1월: 500 2월: 520 3월: 545 4월: 560 5월: 590 6월: 610
1차 차분 (월별 증가량)
2월: 520−500=20 3월: 545−520=25 4월: 560−545=15 5월: 590−560=30 6월: 610−590=20
→ 값들이 20~30 사이를 맴돈다 → 평균이 일정해짐 → 정상에 가까워짐

 

② 로그 변환 — 분산 안정화

시간이 지날수록 변동폭이 커지는(이분산성) 경우에 사용한다. 로그를 취하면 큰 값들을 압축해서 변동폭을 일정하게 만든다.

y'(t) = log(y(t)) 또는 y'(t) = log(y(t) / y(t−1))
두 번째 공식은 로그 수익률(Log Return)로 금융에서 자주 사용됨
로그 차분 ≈ 변화율(%) — 오늘 대비 어제의 변화 비율

 

③ 계절 차분 — 계절성 제거

계절 차분: Δₛy(t) = y(t) − y(t−s)
s: 계절 주기 (월별 데이터면 s=12, 분기 데이터면 s=4)
예) 이번 1월 − 지난 1월 = 1년 전과의 차이 → 계절성 제거
💡 차분을 몇 번 해야 할까?
차분 후 ADF 검정을 다시 해서 정상이 되는지 확인한다.
ARIMA 모형에서 차분 횟수를 d로 나타내는데, 보통 d=1이면 충분하다.
d=2 이상은 과도한 차분으로 오히려 정보를 잃을 수 있다.
→ 차분을 너무 많이 하면 "과차분(Overdifferencing)"이 발생한다.

 

6. 자기상관 (Autocorrelation)

자기상관은 시계열에서 가장 특별한 개념이다. 일반 데이터에서 상관관계는 두 다른 변수 사이를 보지만, 자기상관은 같은 변수의 현재값과 과거값 사이의 관계를 본다.

예를 들어 "오늘 기온은 어제 기온과 얼마나 관련이 있나?", "오늘 매출은 7일 전 매출과 비슷한가?" 같은 질문에 답하는 것이다.

자기상관계수(ACF): ρ(k) = Corr[y(t), y(t−k)] = γ(k) / γ(0)
k: 시차(Lag) — 몇 시점 전과 비교하는가
γ(k) = Cov[y(t), y(t-k)]  |  γ(0) = Var[y(t)]
범위: −1 ~ +1 (일반 상관계수와 동일한 해석)
📌 자기상관 직관적 예시 — 편의점 주별 매출
ρ(1) = 0.85: 이번 주 매출은 지난 주 매출과 강한 양의 상관 (당연하다!)
ρ(7) = 0.92: 7주 전 매출과 매우 강한 상관 (매주 같은 요일 패턴이 반복됨)
ρ(3) = 0.40: 3주 전 매출과는 약한 상관
ρ(13) = −0.20: 13주 전 매출과는 약한 음의 상관

→ 시차 7의 자기상관이 특히 높다 = 주간 계절성이 있다

 

7. ACF와 PACF — 시계열 분석의 눈

ACF (자기상관 함수, Autocorrelation Function)

모든 시차 k에 대해 자기상관계수를 계산해서 그래프로 나타낸 것이다. 중간 시차들의 영향을 포함한 누적 상관을 보여준다.

PACF (편자기상관 함수, Partial Autocorrelation Function)

시차 k에서의 상관을 볼 때, 그 사이 시차들의 영향을 제거한 순수 상관을 나타낸다.

💡 ACF vs PACF 차이 — 쉬운 비유
ACF(시차 3): "오늘 기온은 3일 전 기온과 얼마나 관련이 있나?" (1일 전, 2일 전 기온을 통한 간접 영향도 포함)
PACF(시차 3): "1일 전, 2일 전 기온의 영향을 제거했을 때, 3일 전 기온이 오늘 기온에 직접 미치는 영향은?"

PACF는 다른 시차들이 "매개" 역할을 하는 것을 제거하고 순수한 직접 효과만 본다.

ACF/PACF로 모형 결정하기

ACF 패턴 PACF 패턴 적합 모형
지수적 감소 또는 진동하며 감소 p차에서 절단 (급격히 0) AR(p)
q차에서 절단 (급격히 0) 지수적 감소 또는 진동하며 감소 MA(q)
지수적 감소 지수적 감소 ARMA(p,q)
천천히 감소 (유의구간 내로 잘 안 들어옴) 천천히 감소 비정상 → 차분 필요
📌 ACF/PACF 요약 — 2편에서 AR/MA를 배우기 전에 기억할 것
• PACF가 p차에서 끊기고 ACF가 천천히 감소 → AR(p) 모형
• ACF가 q차에서 끊기고 PACF가 천천히 감소 → MA(q) 모형
• ACF/PACF 둘 다 천천히 감소 → ARMA 또는 ARIMA 검토
→ 이 규칙은 완벽하지 않아서 실제로는 AIC/BIC 기준으로 여러 모형을 비교한다.

📌 핵심 정리

  • 시계열: 시간 순서로 기록된 데이터. 이전 값이 다음 값에 영향
  • 4가지 구성 요소: 추세(장기 방향) / 계절성(고정 주기) / 주기성(가변 주기) / 불규칙(노이즈)
  • 정상성: 시간이 지나도 평균·분산·자기공분산이 일정한 상태
  • 정상성이 중요한 이유: AR, MA, ARIMA 모델의 기본 가정. 위반 시 가짜 회귀 발생
  • ADF 검정: H₀=비정상. p < 0.05이면 정상 시계열
  • 비정상 → 정상 변환: 차분(추세 제거) / 로그 변환(분산 안정) / 계절 차분(계절성 제거)
  • 1차 차분: y(t) − y(t−1). 추세 제거. ARIMA의 'd'에 해당
  • 자기상관(ACF): 같은 변수의 현재값과 과거값 사이 상관. 중간 시차 효과 포함
  • 편자기상관(PACF): 중간 시차들의 영향을 제거한 순수 직접 효과
  • PACF 절단 → AR / ACF 절단 → MA. 둘 다 감소 → ARMA

2편에서는 AR, MA, ARMA, ARIMA 모형을 다룬다.

728x90
반응형