내일배움캠프(QA,QC_5기)

[내일배움캠프] QA/QC_5기 ( 52일차 )

lshxkwh 2026. 5. 21. 20:03

[ 시계열 데이터 ] - 1회차 2회차 정리 ( ARIMA 전까지 )

[ 시계열 데이터 ] - 1회차

 

1. 시계열 데이터란?

시계열 데이터(Time Series Data)는 시간의 흐름에 따라 연속적으로 기록된 데이터를 말한다.

ex) 주식, 일일 기온, 매월 매출액 등이 대표적이다.

시계열 데이터는 과거의 데이터를 바탕으로 예측, 트랜드 분석, 이상탐지 등 다양한 영역해서 핵심적인 역할을 한다.

 

일반적으로 우리가 다루던 데이터는 "단면 데이터" 이다. 통계학적으로 "현상"을 분석했다면 , 시계열 분석은 "맥락"이다.

 

시계열 데이터의 주요 특징

  1. 시간 의존성 : 이전 데이터가 이후 데이터에 영향을 미치는 구조
  2. 자기 상관성 : 과거의 값이 현재의 값과 유사한 경향을 보이는 경우
  3. 트렌드 & 계절정 : 일정한 패턴이나 주기적인 변화가 존재

 

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

 

  • 추세성(Trend) : 시간이 지남에 따라 지속적으로 증가 또는 감소하는 패턴을 보인다 
  • 계절성(Seasonal) : 일정한 주기에 따라 반복되는 패턴을 보인다
  • 계절적 추세 변동 : 계절성과 추세가 결합된 변동
  • 불규칙 요소 : 자연재해, 전쟁 등 예측할 수 없는 돌발 요인에 의해 발생하는 완전 불규칙한 변동

 

3. 실습 1회차 코드 정리 - 데이터 전처리

날짜 형식 변환(Datetime)

- 날짜 데이터를 Pandas 가 인식할 수있는 datetime형식으로 변환해야된다.

import pandas as pd
from datetime import datetime  # 시계열 데이터를 다룰 때 필수 라이브러리

# 예시 데이터 프레임 생성
data = {'date': ['20130101', '20130102', '20130103', '20130104'], 'sales': [100, 120, 110, 130]}
df = pd.DataFrame(data)

# 'date' 컬럼을 datetime 형식으로 변환
df['date'] = pd.to_datetime(df['date'])
print(df.info())

이렇게 변환하면 날짜 필터링, 리샘플링 등 다양한 기능을 편하게 사용 가능.

df = df.set_index('date')

# 월별로 리샘플링하여 합계 계산
# df_monthly = df.groupby(['store', 'item'])['sales'].resample('M').sum()  # 기존 코드 예시
df_monthly = df['sales'].resample('M').sum()
print(df_monthly)

인덱스를 통해서 시계열 데이터를 새로운 날짜 정보(년,월,일)로 확장하기 쉽다.

# 인덱스를 사용하여 새로운 컬럼 확장
df['month'] = df.index.month
df['year'] = df.index.year
df['dayofweek'] = df.index.dayofweek  # 요일을 숫자로 표현 (월=0, 화=1, ..., 일=6)
print(df)

 

4. 시계열 분석의 핵심 기술

  1. Time Lag( shift() )
    df['lag_1'] = df['sales'].shift(1)  # 1 step 뒤의 이전 값
    print(df)
    # 과거의 데이터를 현재의 행으로 이동시켜 비교할때 사용 된다
     

 

   2. Moving Average ( rolling().mean() )

# 3단위 윈도우로 이동평균 계산 (최소 1개 이상의 값이 있을 때 계산)
df['rolling_mean'] = df['sales'].rolling(window=3, min_periods=1).mean()
# df['rolling_std'] = df['sales'].rolling(window=3, min_periods=1).std()  # 이동 표준편차 예시
print(df)
# 윈도우(3) 동안의 평균을 이동하면서 계산

 

   3. 차분 ( diff() )

df['diff_1'] = df['sales'].diff(1)  # 이전 값과의 차이 계산
print(df)
# 이전 시점의 값과 현재값의 차이(변화량)을 계산한다.

 

[ 시계열 데이터 ] - 2회차

1.  SPC와 관리도

  • SPC ( Statistical Precess Control ) 통계적 공정 관리는 사후 검사가 아닌 , 생산 공정 과정 자체를 지속적으로 감시하여 품질을 관리하는 기법이다,

  • Control Chart (관리도) : SCP의 핵심도구, 공정이 안정적으로 유지되는지 모니터링한다. 중심선과 관리 한계선(UCL.LCL.)을 설
    • 목적:
      • 공정(Process) 자체를 관리하여 문제가 발생하기 전 사전 예방
      • 이상 요인 발생 시 즉각 수정하여 불량 억제
      • 공정의 변동을 효율적으로 관리하여 품질 유지 및 향상

 

2. 관리도 (Control Chart)의 해석 Zone과 8가지 판정 규칙

- 관리도는 중심선(CL)을 기준으로 +-3알 범위를 각각의 영역(Zone)으로 나누어 공정의 안정성을 평가한다.

 

관리도 이상 패턴 판정 규칙 (Rule 1 ~ 8)

단순히 3알파를 벗어나는 것뿐만 아니라, 데이터가 연속적으로 특정 영역에 쏠리는 현상 역시 통계학적으로 정상적이지 않은 이상 공정으로 판단합니다. 이를 Western Electric Rules라고 부릅니다.

  • Rule 1 (1 Point Beyond 3알파): 단 1개의 점이라도 관리한계선(UCL/LCL)을 벗어나는 경우. (즉각적 조치 필요)
  • Rule 2 (9 Points in a Row on Same Side of Mean): 중심선(CL) 기준으로 한쪽 측면에 연속해서 9개의 점이 나타나는 경우. (평균의 구조적 시프트 발생)
  • Rule 3 (6 Points in a Row Increasing or Decreasing): 연속해서 6개의 점이 계속 상승하거나 계속 하락하는 경우. (지속적인 추세나 마모 현상 반영)
  • Rule 4 (14 Points Alternating Up and Down): 14개의 점이 연속해서 위, 아래로 번갈아가며 지그재그 움직임을 보이는 경우. (과도 보정 혹은 주기적 간섭 유입)
  • Rule 5 (2 out of 3 Points in Zone A or Beyond): 연속된 3개의 점 중 2개의 점이 같은 쪽 Zone A(또는 그 바깥)에 위치하는 경우.
  • Rule 6 (4 out of 5 Points in Zone B or Beyond): 연속된 5개의 점 중 4개의 점이 같은 쪽 Zone B(또는 그 바깥)에 위치하는 경우.
  • Rule 7 (15 Points in a Row in Zone C): 상하 관계없이 연속된 15개의 점이 모두 Zone C 내부에서 촘촘하게 배열되는 경우. (변산성이 비정상적으로 줄어듦, 계측기 오류 등 의심)
  • Rule 8 (8 Points in a Row on Both Sides but None in Zone C): 연속된 8개의 점이 중심선을 중심으로 상하 분산되어 나타나지만, 정작 Zone C 내부에는 점이 단 하나도 없는 경우. (서로 다른 두 공정 데이터의 혼재 가능성)

3. 통계적 시계열 모델 전처리 및 성분 분해

Statsmodels 라이브러리를 활용하면 원본 시계열 데이터에서 추세,계절성,잔차를 분리해내는 시계열 분해를 수행 할 수 있다.

  • Additive ( 덧셈 모델 ) : 데이터 = 추세 + 계절성 + 잔차
    -  계절성의 크기가 일정한 경우 사용
  • Multiplicative (곱셈 모델)
    • 시간이 지남에 따라 계절적 변동폭이 추세에 비례하여 커지거나 작아지는(비율적으로 증가/감소하는) 데이터에 적합합니다
  • 잔차 (Residuals) 검정
    • 원본에서 추세와 계절성을 빼고 남은 순수한 무작위 변동(White Noise 형태)이어야 합니다. 만약 잔차 데이터에 특정 주기성이나 일정한 경향 패턴이 남아있다면, 분석 모델이 찾아내지 못한 숨겨진 계절성이나 순환 구조가 존재함을 뜻하므로 모델 재설계가 필요

비정상성 데이터와 정상성(Stationarity)의 개념

비정상성(Non-stationary) 데이터란?

  • 시간이 지날수록 평균이 증가하거나 감소하는 추세(Trend)가 있는 데이터.
  • 특정 주기마다 패턴이 달라지는 계절성(Seasonality)이 포함된 데이터.
  • 시간이 흐를수록 흔들리는 진폭(Variance, 분산)이 커지거나 불규칙해지는 데이터.
  • 결론적으로 추세나 계절성 중 하나라도 명확히 존재한다면 비정상성 데이터

 

정상성(Stationary) 데이터란?

시계열이 통계적으로 '안정적이다'라는 의미는 시간이 흘러도 데이터의 구조적 성질이 변하지 않음을 뜻합니다. 정상성 시계열은 수학적으로 다음 세 가지 조건을 만족

  1. 모든 시점 t에 대해 평균(Mean)이 일정하다.
  2. 모든 시점 t에 대해 분산(Variance)이 일정하다.
  3. 자기공분산(Autocovariance)은 시점 자체가 아닌, 두 시점 사이의 시차(Lag)에 의해서만 결정된다.