파이썬에서 시계열 배열을 그래프로 그리면서 신뢰 구간(confidence interval)을 함께 표시하려면 Matplotlib의 plot()과 fill_between() 메서드를 활용하면 됩니다. 이 글에서는 이동 평균선과 표준 편차를 기반으로 신뢰 구간을 시각화하는 방법을 단계별로 살펴보겠습니다.
구현 단계
- 그림 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
- 시계열 배열 데이터를 생성합니다.
- 이동 평균과 표준 편차를 계산하기 위한 변수 n_steps(윈도우 크기)를 초기화합니다.
- 신뢰 구간의 하한선(under line)과 상한선(over line)을 구합니다.
- plot() 메서드를 사용해 평균선을 그립니다.
- fill_between() 메서드를 사용해 상한선과 하한선 사이 영역을 채워 신뢰 구간을 표시합니다.
- show() 메서드를 호출해 그래프를 화면에 출력합니다.
예제 코드
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
# 사인파에 무작위 노이즈를 더한 시계열 배열 생성
time_series_array = np.sin(np.linspace(-np.pi, np.pi, 400)) + np.random.rand(400)
n_steps = 15
time_series_df = pd.DataFrame(time_series_array)
# 이동 평균선 계산
line = time_series_df.rolling(n_steps).mean()
# 표준 편차의 2배를 기준으로 신뢰 구간 폭 설정
line_deviation = 2 * time_series_df.rolling(n_steps).std()
under_line = (line - line_deviation)[0]
over_line = (line + line_deviation)[0]
# 평균선 그리기
plt.plot(line, linewidth=2)
# 신뢰 구간 영역 채우기
plt.fill_between(line_deviation.index, under_line,
over_line, color='red', alpha=.3)
plt.show()
실행 결과
위 코드를 실행하면 파란색 이동 평균선을 중심으로, 반투명한 빨간색 영역이 상하로 퍼져 있는 그래프가 출력됩니다. 이 빨간색 영역이 바로 신뢰 구간을 나타내며, 시계열 데이터의 변동성 범위를 한눈에 파악할 수 있게 해줍니다.

핵심 포인트 정리
- rolling(n_steps).mean(): 지정한 윈도우 크기만큼의 이동 평균을 계산하여 추세선을 만듭니다.
- rolling(n_steps).std(): 이동 표준 편차를 계산하며, 여기에 2를 곱하면 약 95% 수준의 신뢰 구간 폭이 됩니다.
- fill_between(): x축 인덱스를 기준으로 하한선과 상한선 사이를 색상으로 채우며, alpha 매개변수로 투명도를 조절할 수 있습니다.
이 방법은 금융 데이터 분석, 센서 데이터 모니터링 등 변동성이 있는 시계열 데이터의 추세와 불확실성을 동시에 시각화할 때 유용하게 활용됩니다.