--- title: "Time Series (시계열) Data Analysis" subtitle: "시계열 데이터에 대한 이해, 처리 및 분석" description: "시계열 데이터 분석에 대한 학습 및 정리 " author: Kwangmin Kim date: 2024-07-08 format: html: toc: true code-fold: true code-copy: true code-overflow: wrap number-sections: true number-depth: 3 grid: sidebar-width: 200px body-width: 1150px margin-width: 100px --- ## 시계열 Stduy 목차 * 시계열 데이터란? * 시간에 따른 관측값의 순서 * 시간 간격의 중요성 (일별, 월별, 분기별 등) * 시계열 데이터의 특성 * 시간 독립변수 * 자기 상관 관계 (Autocorrelation) * 추세(Trend) * 계절성(Seasonality) * 주기성(Cyclical) * 불규칙 요소(Irregular component) * 시계열 데이터의 시각화 * 선 그래프 (Line Plot): 시간에 따른 데이터의 변화를 연속적인 선으로 표현 * 영역 그래프 (Area Plot): 여러 시계열을 누적하여 표현할 때 유용 * 막대 그래프 (Bar Plot): 각 시점의 값을 막대로 표현, 불연속적인 시계열이나 빈도 데이터에 적합 * 캔들스틱 차트 (Candlestick Chart): 시가, 고가, 저가, 종가를 한 번에 표현 * 히트맵 (Heatmap): 여러 변수나 범주의 시계열을 동시에 비교할 때 유용 * 상자 그림 (Box Plot): 시간 구간별 데이터의 분포를 요약하여 표현, 이상치 탐지에 유용 * 산점도 (Scatter Plot): 두 시계열 변수 간의 관계를 표현, 상관관계나 패턴을 파악하는 데 유용 * 자기상관 그림 (Autocorrelation Plot): ACF, PACF를 시각화, 시계열의 자기상관 구조를 파악하는 데 사용 * 계절성 분해 그래프 (Seasonal Decomposition Plot): 시계열을 트렌드, 계절성, 잔차로 분해하여 표현 * 스펙트럼 분석 그래프 (Spectral Analysis Plot): 시계열의 주기성을 주파수 도메인에서 분석 * 워터폴 차트 (Waterfall Chart): 시간에 따른 누적 변화를 단계별로 표현 * 리플 그래프 (Ridge Plot): 여러 분포를 시간에 따라 중첩하여 표현, 분포의 변화를 시각적으로 파악하기 좋음 * 시계열 데이터의 처리 * 시간 정보 추출 * 시간 기간 연산 * 시간 반올림 * 시간 그룹핑 (주간, 월간 합계 또는 평균) * 시간 저가 고가 종가 (OHLC) * 시간 롤링 (3일 평균, 5일 합계) * 필터링 * 기간별 증감량 * 기간별 비중 백분율 * 기간별 누적 합계 * 동 기간별 plot * 결측치 처리 (Handling Missing Values) - 선형 보간법 (Linear Interpolation) - 전방/후방 채우기 (Forward/Backward Fill) - 평균/중앙값 대체 (Mean/Median Imputation) - 시계열 예측 모델을 이용한 대체 * 이상치 처리 (Outlier Detection and Treatment) - Z-score 방법 - IQR (Interquartile Range) 방법 - 이동 평균을 이용한 방법 - 시계열 분해를 이용한 방법 * 정규화 및 표준화 (Normalization and Standardization) - Min-Max 정규화 - Z-score 표준화 - 로그 변환 (Log Transformation) * 리샘플링 (Resampling) - 업샘플링 (Upsampling): 더 높은 빈도로 변환 - 다운샘플링 (Downsampling): 더 낮은 빈도로 변환 * 시간 정렬 (Time Alignment) - 시간대 조정 - 날짜/시간 형식 통일 * 차분 (Differencing) - 1차 차분 - 계절 차분 * 이동 평균 (Moving Average) - 단순 이동 평균 - 가중 이동 평균 - 지수 이동 평균 * 윈도잉 (Windowing) - 고정 윈도우 - 슬라이딩 윈도우 * 트렌드 제거 (Detrending) - 선형 트렌드 제거 - 비선형 트렌드 제거 * 계절성 조정 (Seasonal Adjustment) - 계절 분해 - X-11, X-12-ARIMA 방법 * 주기성 변환 (Periodicity Transformation) - 푸리에 변환 (Fourier Transform) - 웨이블릿 변환 (Wavelet Transform) * 특성 추출 (Feature Extraction) - 통계적 특성 (평균, 분산, 왜도, 첨도 등) - 주파수 도메인 특성 - 시간 도메인 특성 * 차원 축소 (Dimensionality Reduction) - 주성분 분석 (PCA) - 동적 시간 워핑 (DTW) * 데이터 증강 (Data Augmentation) - 시간 이동 (Time Shifting) - 스케일링 (Scaling) - 노이즈 추가 (Adding Noise) * 시계열 데이터 기초 개념 * 정상성(stationarity)과 비정상성(non-stationarity) * 지연과 차분 (Lag and Differencing) * ACF와 PACF (ACF and PACF - Autocorrelation Function and Partial Autocorrelation Function) * 적합값과 잔차 (Fitted Values and Residuals) * 백색잡음 (White Noise) * 시계열 분해 (Time Series Decomposition) * 정상성 테스트 (Stationarity Test) * 계절성 검정 (Seasonality Test) * 시계열 예측 모델 * 단순 모델 (Simple Models) - 단순 평균 (Simple Average) - 나이브 방법 (Naive Method) - 계절성 나이브 방법 (Seasonal Naive Method) - 드리프트 방법 (Drift Method) * 지수 평활법 (Exponential Smoothing) - 단순 지수 평활법 (Simple Exponential Smoothing) - 홀트의 선형 추세 방법 (Holt's Linear Trend Method) - 홀트-윈터스 방법 (Holt-Winters Method) * 회귀 기반 모델 (Regression-based Models) - 선형 회귀 (Linear Regression) - 다항 회귀 (Polynomial Regression) - 동적 회귀 (Dynamic Regression) * 자기회귀 모델 (Autoregressive Models) - AR (AutoRegressive) 모델 - MA (Moving Average) 모델 - ARMA (AutoRegressive Moving Average) 모델 - ARIMA (AutoRegressive Integrated Moving Average) 모델 - SARIMA (Seasonal ARIMA) 모델 - ARIMAX (ARIMA with eXogenous variables) 모델 * 고급 통계 모델 (Advanced Statistical Models) - VAR (Vector AutoRegression) - VARMA (Vector AutoRegressive Moving Average) - GARCH (Generalized AutoRegressive Conditional Heteroskedasticity) - 상태 공간 모델 (State Space Models) * 기계학습 모델 (Machine Learning Models) - 랜덤 포레스트 (Random Forest) - 서포트 벡터 머신 (Support Vector Machine) - K-최근접 이웃 (K-Nearest Neighbors) - 그래디언트 부스팅 (Gradient Boosting) * 딥러닝 모델 (Deep Learning Models) - RNN (Recurrent Neural Networks) - LSTM (Long Short-Term Memory) - GRU (Gated Recurrent Units) - CNN (Convolutional Neural Networks) for Time Series - Transformer 모델 * 혼합 및 앙상블 모델 (Hybrid and Ensemble Models) - TBATS (Trigonometric, Box-Cox transform, ARMA errors, Trend, and Seasonal components) - Prophet (Facebook's Time Series Forecasting Model) - 앙상블 방법 (여러 모델의 조합) * 베이지안 모델 (Bayesian Models) - 베이지안 구조적 시계열 모델 (Bayesian Structural Time Series) - 동적 선형 모델 (Dynamic Linear Models) * 특수 목적 모델 (Specialized Models) - 크로스 섹션 시계열 모델 (Cross-sectional Time Series Models) - 계층적 시계열 모델 (Hierarchical Time Series Models) - 간헐적 수요 예측 모델 (Intermittent Demand Forecasting Models) * 시계열 분석 frameworks * 통계 기반 프레임워크 - statsmodels (Python) - forecast (R) - SPSS Time Series Modeler * 머신러닝 기반 프레임워크 - scikit-learn (Python) - MLlib (Apache Spark) - H2O.ai * 딥러닝 기반 프레임워크 - TensorFlow (Google) - PyTorch (Facebook) - Keras * 시계열 특화 프레임워크 - Prophet (Facebook) - tslearn (Python) - tsfresh (Python) * 통합 분석 플랫폼 - Darts (Python) - GluonTS (Amazon) - Kats (Facebook) * 비즈니스 인텔리전스 도구 - Tableau - Power BI (Microsoft) - QlikView * 클라우드 기반 서비스 - Amazon Forecast - Google Cloud AI Platform - Azure Time Series Insights * 특수 목적 프레임워크 - pmdarima (Python, ARIMA 모델링) - PyFlux (Python, 베이지안 추론) - BEAST (R, 베이지안 시계열 분석) * 실시간 처리 프레임워크 - Apache Flink - Apache Kafka Streams - Streamz (Python) * 시각화 특화 프레임워크 - Plotly - Bokeh - Altair