기본 콘텐츠로 건너뛰기

라벨이 acf인 게시물 표시

[matplotlib]quiver()함수

[time series] 정상성(stationary) 검정

정상성(stationary) 검정 정상성 판단을 위한 일반적인 지침: ACF가 천천히 감소하거나 오랜 기간 유의미한 값을 가지면 비정상적일 가능성이 높습니다. 특히 선형적인 감소는 추세를, 주기적인 스파이크는 계절성을 나타낼 수 있습니다. PACF에서 몇 개의 초기 시차에서만 유의미한 스파이크가 나타나고 이후 급격히 감소하면 정상적일 가능성이 높습니다. import numpy as np import pandas as pd import yfinance as yf import matplotlib.pyplot as plt from statsmodels.tsa.stattools import acf, pacf from statsmodels.graphics.tsaplots import plot_acf, plot_pacf st=pd.Timestamp(2024,1, 1) et=pd.Timestamp(2025, 4,25) trgnme="000660.KS" trg=yf.download(trgnme, st, et) trg.columns=[i[0] for i in trg.columns] close=trg["Close"] 다음은 데이터의 ACF와 PACF를 작성하기 위한 UDF입니다. #ACF, PACF 작성 함수 def acf_pacf_plot(data, lag=10): f, axes=plt.subplots(1,2, figsize=(10, 3), sharey=True) plt.subplots_adjust(wspace=0.1) plot_acf(data, lags=lag, ax=axes[0]) plot_pacf(data, lags=lag, ax=axes[1]) plt.show() #ACF, PACF fig, axes=plt.subplots(1, 2, figsize=(10, 3), sharey=True) plt.subplots_adjust(wspace=0.1) plot_acf(close, lags=30, a...

[time series] ACF와 PACF

ACF(Autocorrelation function)와 PACF(Partial ACF) ACF와 PACF 플롯은 시계열 데이터의 정상성(Statioinary)을 시각적으로 판단하는데 유용한 도구입니다. 정상성 시계열은 시간에 따라 평균, 분산 등 통계적인 속성이 일정하게 유지되는 반면 비정상성인 경우 추세, 계절성 또는 시간에 따라 변동이 존재합니다. ACF ACF는 서로다른 시점의 값들 간의 상관관계를 측정하는 함수입니다. 즉, 특정시점의 값과 그 보다 k 이전(lag k)의 값 사이의 상관계수를 계산하여 시간 순서에 따라 나열되는 데이터들 간의 자기 의존성을 파악하는데 사용합니다. $$\rho(k) = \frac{\text{Cov}(y_t, y_{t-k})}{\sqrt{\text{Var}(y_t) \text{Var}(y_{t-k})}}$$ y t : 시점 t의 시계열 값 Cov(): 공분산 Var(): 분산 정상성을 갖는 다면 평균과 분산이 시간에 따라 변하지 않으므로 Var(y t ) = Var(y t-k )이므로 위 식의 분모는 상수가 됩니다. 즉 자기상관함수는 공분산을 분산으로 정규화한 형대가 됩니다. 계산과정 시계열 평균 $\bar{y} = \frac{1}{n} \sum^n_{t=1} y_t$ 자기공분산 계산 $\gamma_k = \frac{1}{n}\sum^n_{t=k+1} (y_t-\bar{y})(y_{t-k} -\bar{y})$ ACF값 계산: 0차 지연(lag 0)에서의 자기공분산(분산)으로 정규화 $\rho_k =\frac{\gamma_k }{\gamma_0}=\frac{\sum^n_{t=k+1} (y_t-\bar{y})(y_{t-k} -\bar{y})}{\sum^n_{t=1} (y_t-\bar{y})}$ 다양한 k값들을 계산하기 위해 위 과정을 반복합니다. statsmodels.tsa.stattools.acf(x, nlags=None, alpha=None, \hellip;) 함수를 사...

[data analysis] 자기상관분석(Autocorrelation Analysis)

자기상관분석 관련된 내용 회귀모델의 오차에 대해 오차제곱평균(Mean of Square Error) 오차의 분산 상관성(correlation) 은 두 변수간의 관계를 나타내는 것에 반해 자기상관(autocorrelation) 은 한 변수내에 시간 차이에 따른 값들 사이의 관계를 파악하는 것입니다. 다시말하면 행렬의 형태로 표현되는 자료에서 자기상관성은 하나의 열 내에 존재하는 값들 사이의 관계를 나타냅니다. 반면에 상관성은 열(column)들 사이의 관계를 의미합니다. 자기상관의 정도는 식 1과 같이 자기상관 계수(R h )로 나타냅니다. \begin{align}R_h& =\frac{ \text{Autocovariance}}{\text{Variance}}\\ &=\frac{\sum^{N-h}_{t=1} (x_t-\bar{x})(x_{t+h}-\bar{x})}{\sum^N_{i=1}(x_t-\bar{x})^2}\\& n\,:\;\text{자료의 크기}\\& h\,:\;\text{시차(lag time)}\end{align} (식 1) 자기상관계수는 함수 pandas.Series.autocorr(lag=1) 에 의해 계산됩니다. 이 함수는 Series 객체 즉, 1개의 열 또는 행으로 이루어진 1차원의 벡터에서만 적용할수 있으며 지정된 lag의 차이로 두 그룹을 분리하여 pearson 상관계수를 계산하는 것입니다. 또는 statsmodels.tsa.stattools.acf() 함수를 적용하여 보다 상세한 정보를 확인할 수 있습니다. 예 1) kospi 지수의 일일 주가 자료중 시가(Open)을 설명변수로 하여 종가(Close)를 추정하는 회귀모델을 작성하고 오차에 대한 자기상관성을 조사합니다. Open Close 0 2874.50 2944.45 ...