모던지 / 데이터분석 준전문가 / 데이터분석 10강. 시계열 예측

데이터분석 10강. 시계열 예측

시계열 모형은 대부분 정상성을 전제로 합니다. 그래서 예측의 첫 단계는 모형을 고르는 일이 아니라 자료를 정상으로 만드는 일입니다.

풀고 시작

문제 1. 해마다 꾸준히 늘어나는 매출 시계열에 ARMA 모형을 바로 적용하기 어려운 이유와 처방으로 가장 알맞은 것은?
추세가 있으면 평균이 시점마다 달라 정상성이 깨집니다. 이웃한 값의 차이를 구하는 차분을 하면 추세가 사라져 정상에 가까워지고, 이렇게 차분을 포함한 모형이 ARIMA입니다.

시계열과 정상성

시계열(time series)은 시간 순서대로 관측한 자료입니다. 월별 매출, 일별 주가, 시간별 전력 사용량이 모두 시계열이죠. 보통의 표본과 달리 이웃한 관측값이 서로 관련되어 있다는 점이 핵심입니다. 어제 기온을 알면 오늘 기온을 어느 정도 짐작할 수 있는 것처럼요.

시계열 모형은 대부분 정상성(stationarity)을 전제로 합니다. 정상 시계열은 평균이 시점과 관계없이 일정하고, 분산도 일정하며, 두 시점의 공분산이 시점이 아니라 시차에만 달려 있습니다. 쉽게 말해 어느 구간을 잘라 봐도 통계적 성질이 비슷한 자료입니다.

정상성이 깨졌다면 먼저 고칩니다. 평균이 변하는 추세는 이웃한 값의 차이를 구하는 차분(differencing)으로 없애고, 분산이 수준에 따라 커지면 로그 변환으로 안정시킵니다. 해마다 같은 달에 반복되는 계절성은 12개월 전 값과의 차이를 구하는 계절 차분으로 다룹니다.

시계열을 이루는 네 가지 요소

시계열은 흔히 네 요소로 나눠 봅니다. 장기적으로 오르거나 내리는 추세, 달력처럼 고정된 주기로 반복되는 계절 요인, 경기 순환처럼 주기가 일정하지 않은 긴 오르내림인 순환 요인, 그리고 설명되지 않는 불규칙 요인입니다. 계절과 순환을 가르는 기준은 주기가 고정되어 있느냐입니다.

요소를 합치는 방식도 두 가지입니다. 계절 변동의 폭이 수준과 상관없이 일정하면 요소를 더하는 가법 모형, 매출이 커질수록 계절 변동의 폭도 커지면 요소를 곱하는 승법 모형을 씁니다. R에서는 decompose나 stl로 분해해 봅니다.

평활: 들쭉날쭉함을 걷어 내기

이동평균은 일정한 기간의 평균을 한 칸씩 옮겨 가며 구해 불규칙한 변동을 걷어 냅니다. 지수평활은 과거 값을 모두 쓰되 최근 값일수록 큰 가중치를 주고, 먼 과거로 갈수록 가중치를 지수적으로 줄입니다. 평활 계수가 1에 가까울수록 최근 값을 강하게 반영해 변화에 빨리 반응합니다. 추세까지 담으면 홀트(Holt) 방법, 추세와 계절을 모두 담으면 홀트-윈터스(Holt-Winters) 방법입니다.

AR, MA, ARIMA

자기회귀 모형(AR)은 현재 값을 자신의 과거 값으로 설명합니다. p개 시점 전까지 쓰면 AR(p)입니다. 이동평균 모형(MA)은 현재 값을 과거의 예측 오차로 설명하며, q개까지 쓰면 MA(q)입니다. 평활의 이동평균과 이름이 같지만 다른 개념이니 조심하세요. 둘을 합친 것이 ARMA이고, 여기에 d번의 차분을 더한 것이 ARIMA(p, d, q) 입니다. ARIMA(1, 0, 1)은 차분이 없으니 ARMA(1, 1)과 같습니다.

차수는 자기상관함수(ACF)와 부분자기상관함수(PACF)의 모양으로 짐작합니다.

모형 ACF PACF
AR(p) 천천히 줄어듭니다 p 시차 뒤에 끊깁니다
MA(q) q 시차 뒤에 끊깁니다 천천히 줄어듭니다

박스와 젠킨스(Box & Jenkins)가 정리한 절차는 식별, 추정, 진단, 예측의 네 단계입니다. ACF와 PACF로 차수를 식별하고, 계수를 추정하고, 잔차가 백색잡음(평균 0, 분산 일정, 자기상관 없음)인지 진단한 뒤 예측합니다. 잔차에 자기상관이 남아 있으면 모형이 아직 설명하지 못한 패턴이 있다는 뜻입니다.

y <- ts(sales, start = c(2020, 1), frequency = 12)   # 월별 시계열
acf(diff(y)); pacf(diff(y))                          # 차분 뒤 차수 식별
fit <- arima(y, order = c(1, 1, 0))
predict(fit, n.ahead = 6)                            # 여섯 달 예측

인출 문제

문제 1. 정상 시계열의 조건이 아닌 것은?
꾸준히 커진다는 것은 추세가 있어 평균이 변한다는 뜻이라 정상성이 깨진 상태입니다. 나머지 셋이 정상 시계열의 조건입니다.
문제 2. 계절 요인과 순환 요인을 가르는 기준으로 옳은 것은?
계절 요인은 매년 같은 달에 반복되는 것처럼 주기가 정해져 있고, 순환 요인은 경기 흐름처럼 주기가 일정하지 않은 긴 변동입니다.
문제 3. ACF가 천천히 줄어들고 PACF가 2 시차 뒤에 끊겼습니다. 가장 알맞은 모형은 무엇입니까?
AR(p) 모형은 ACF가 천천히 줄고 PACF가 p 시차 뒤에 끊깁니다. 반대로 ACF가 끊기고 PACF가 천천히 줄면 MA 모형입니다.
문제 4. 박스-젠킨스 절차의 진단 단계에서 확인하는 것은 무엇입니까?
잔차에 자기상관이 남아 있으면 모형이 아직 담지 못한 패턴이 있다는 뜻입니다. 잔차가 백색잡음이어야 모형이 자료의 구조를 다 설명했다고 봅니다.

더 풀기

출제기준의 세부항목을 따라 이 강의 범위에서 새로 낸 문제입니다. 모의고사도 여기에서 뽑습니다.

묶음 1

문제 1. 시계열 자료가 보통의 표본과 가장 다른 점은 무엇입니까?
시계열은 시간 순서로 관측되어 어제 값과 오늘 값이 서로 관련됩니다. 그래서 관측값이 서로 독립이라는 보통의 가정을 그대로 쓸 수 없습니다.
문제 2. 추세 때문에 평균이 변하는 시계열을 정상으로 만드는 방법으로 가장 알맞은 것은?
이웃한 값의 차이를 구하면 꾸준히 오르는 추세가 사라집니다. 로그 변환은 분산이 수준에 따라 커질 때 씁니다.
문제 3. 매출 수준이 커질수록 변동 폭도 함께 커지는 시계열에서 분산을 안정시키는 방법으로 알맞은 것은?
로그를 취하면 큰 값이 크게 줄어 수준에 비례해 커지던 변동 폭이 고르게 됩니다. 평균이 변하는 문제는 그다음 차분으로 다룹니다.
문제 4. 월별 자료에서 해마다 같은 달에 반복되는 계절성을 없애는 방법으로 알맞은 것은?
계절 차분은 한 주기 전, 곧 월별 자료라면 12개월 전 값과의 차이를 구해 매년 반복되는 패턴을 없앱니다.
문제 5. 두 시점의 공분산에 관해 정상 시계열이 만족하는 조건으로 옳은 것은?
정상 시계열에서는 1월과 2월의 공분산과 7월과 8월의 공분산이 같습니다. 간격만 같으면 언제인지는 상관없습니다.
문제 6. 장기적으로 꾸준히 오르거나 내리는 움직임을 무엇이라고 합니까?
추세는 긴 기간에 걸친 방향성 있는 움직임입니다. 추세가 있으면 평균이 변해 정상성이 깨집니다.
문제 7. 경기의 확장과 수축처럼 주기가 일정하지 않은 긴 오르내림은 어떤 요인입니까?
순환 요인은 몇 년에 걸쳐 오르내리지만 주기가 정해져 있지 않습니다. 주기가 고정된 것은 계절 요인입니다.
문제 8. 추세, 계절, 순환으로 설명되지 않고 남는 우연한 변동은 무엇입니까?
불규칙 요인은 다른 요인으로 설명되지 않는 나머지 변동입니다. 모형이 잘 맞았다면 이 부분은 백색잡음에 가까워야 합니다.
문제 9. 매출이 커질수록 계절 변동의 폭도 커지는 시계열을 분해할 때 알맞은 방식은 무엇입니까?
계절 변동이 수준에 비례해 커지면 요소를 곱하는 승법 모형이 알맞습니다. 폭이 일정하면 요소를 더하는 가법 모형을 씁니다.
문제 10. R에서 시계열을 추세, 계절, 불규칙 요소로 나눠 보는 함수는 무엇입니까?
decompose는 이동평균으로 추세를 뽑고 계절과 불규칙 요소를 나눠 줍니다. stl도 같은 목적의 함수입니다.

묶음 2

문제 1. 이동평균 평활의 목적으로 가장 알맞은 것은?
이동평균 평활은 들쭉날쭉한 변동을 평균으로 눌러 추세를 드러냅니다. 과거 예측 오차로 설명하는 것은 이름이 같은 MA 모형입니다.
문제 2. 지수평활의 가중치에 관한 설명으로 옳은 것은?
지수평활은 모든 과거 값을 쓰되 최근 값을 더 중시합니다. 같은 가중치를 주는 것은 단순 이동평균의 방식입니다.
문제 3. 지수평활에서 평활 계수를 1에 가깝게 키우면 어떻게 됩니까?
평활 계수가 클수록 최근 관측값의 비중이 커져 예측이 최신 변화를 빨리 따라갑니다. 대신 불규칙한 변동에도 민감해집니다.
문제 4. 추세와 계절이 모두 있는 시계열에 알맞은 지수평활 방법은 무엇입니까?
홀트-윈터스 방법은 수준, 추세, 계절을 모두 평활합니다. 홀트 방법은 수준과 추세까지만 담습니다.
문제 5. 자기회귀 모형 AR(p)이 현재 값을 설명하는 방식으로 옳은 것은?
자기회귀는 자기 자신의 과거 값에 회귀한다는 뜻입니다. 과거 예측 오차로 설명하는 것은 MA 모형입니다.
문제 6. 이동평균 모형 MA(q)가 현재 값을 설명하는 방식으로 옳은 것은?
MA 모형은 과거의 충격, 곧 예측 오차가 현재에 남긴 영향으로 설명합니다. 평활의 이동평균과 이름이 같지만 다른 개념입니다.
문제 7. ACF가 1 시차 뒤에 끊기고 PACF가 천천히 줄어듭니다. 가장 알맞은 모형은 무엇입니까?
MA(q) 모형은 ACF가 q 시차 뒤에 끊기고 PACF가 천천히 줄어듭니다. AR 모형은 그 반대 모양입니다.
문제 8. ARIMA(p, d, q)에서 d가 뜻하는 것은 무엇입니까?
p는 자기회귀 차수, d는 차분 횟수, q는 이동평균 차수입니다. d가 0이면 차분이 없어 ARMA 모형과 같습니다.
문제 9. ARIMA(2, 0, 1)과 같은 모형은 무엇입니까?
차분 횟수가 0이므로 차분 없이 자기회귀 2차와 이동평균 1차를 합친 ARMA(2, 1)입니다.
문제 10. 한 번 차분했더니 정상 시계열이 되었고, 그 차분한 자료가 AR(1)을 따릅니다. 원래 자료의 모형은 무엇입니까?
차분을 한 번 했으므로 d는 1, 차분한 자료가 AR(1)이므로 p는 1, MA 항이 없으니 q는 0입니다.

묶음 3

문제 1. 박스-젠킨스 절차의 네 단계를 순서대로 옳게 나열한 것은?
ACF와 PACF로 차수를 식별하고, 계수를 추정하고, 잔차로 모형을 진단한 뒤, 통과하면 예측합니다. 진단에서 문제가 보이면 식별로 돌아갑니다.
문제 2. 백색잡음의 성질이 아닌 것은?
백색잡음은 평균 0, 분산 일정, 자기상관 없음을 만족하는 순수한 우연입니다. 추세가 있으면 예측할 수 있는 패턴이 있다는 뜻이라 백색잡음이 아닙니다.
문제 3. 모형을 적합한 뒤 잔차의 ACF에 뚜렷한 자기상관이 남아 있었습니다. 알맞은 판단은 무엇입니까?
좋은 모형이라면 잔차가 백색잡음이어야 합니다. 자기상관이 남아 있으면 모형이 놓친 구조가 있으니 식별 단계로 돌아갑니다.
문제 4. 차수를 식별할 때 ACF와 PACF를 원래 자료가 아니라 차분한 자료로 그리는 이유는 무엇입니까?
추세가 있는 비정상 자료는 ACF가 매우 천천히 줄어 차수를 가늠하기 어렵습니다. 정상으로 만든 뒤에야 끊김과 줄어듦의 모양을 읽을 수 있습니다.
문제 5. R에서 월별 매출을 2020년 1월부터 시작하는 시계열로 만드는 표현으로 알맞은 것은?
frequency는 한 해에 들어가는 관측 수이므로 월별이면 12이고, start는 연도와 그해의 몇 번째 관측인지를 적습니다. frequency가 4면 분기별 자료입니다.
문제 6. R에서 적합한 ARIMA 모형으로 여섯 시점 앞을 예측하는 표현으로 알맞은 것은?
predict에 n.ahead로 몇 시점 앞까지 예측할지 줍니다. acf는 자기상관을 그리고 diff는 차분을 구합니다.
문제 7. 평활의 이동평균과 ARIMA의 이동평균(MA) 항의 차이로 옳은 것은?
이름만 같을 뿐 평활의 이동평균은 값을 고르게 하는 도구이고, MA 항은 오차의 영향을 담는 모형의 한 부분입니다.
문제 8. 분기별 매출 시계열에서 계절 차분을 할 때 몇 시점 전 값과의 차이를 구합니까?
분기별 자료는 한 해에 네 번 관측하므로 한 주기 전은 4시점 전입니다. 월별 자료였다면 12시점 전과의 차이를 구합니다.
문제 9. 두 번 차분해야 정상이 된 시계열의 ARIMA 차수에서 d는 얼마입니까?
d는 정상성을 얻는 데 필요했던 차분 횟수이므로 2입니다. 실무에서는 대개 한두 번이면 충분합니다.
문제 10. 시계열 예측에 관한 진술로 옳지 않은 것은?
주기가 일정하지 않은 긴 변동은 순환 요인이고, 계절 요인은 주기가 고정되어 있습니다. 나머지 셋은 옳은 진술입니다.

이전: 9강 다변량 분석 · 다음: 11강 데이터 마이닝 개요

모던지 · 궁금하면 모던지 GitHub · 2026-09-30