이 추세 시계열이 고정된 이유는 무엇입니까?

Augmented Dickey-Fuller(ADF)에 대한 연구 이상한 예에서 테스트

님이 촬영 한 사진 얀 후버 on Unsplash

정상성은 시계열 분석의 가장 기본적인 개념 중 하나입니다. 일반적으로 정상성은 다양한 통계 방법을 사용하여 시계열을 모델링하는 데 탁월한 속성을 제공합니다. 증강된 디키-풀러(ADF) 테스트는 아마도 정상성을 확인하는 데 가장 널리 사용되는 방법일 것입니다.

이 주제에 관한 수많은 기사가 온라인에 있습니다. 정상성의 정의, ADF 테스트 수행 방법 등과 같은 기본 소개에 시간을 낭비하지 않겠습니다. 이번 게시물에서는 응용 프로그램에서 이상한 사례를 만난 후 ADF 테스트를 탐색하는 여정을 공유하겠습니다.

제가 보여줄 학습 경로는 데이터 과학 학습의 일반적인 경로입니다. 첫째, 우리는 도구나 개념을 이해하고 있다고 생각하지만 용어를 인정하고 기억할 뿐입니다. 이를 실제 데이터에 적용할 때 예상치 못한 어려운 문제를 발견하여 더 많이 조사하고 더 깊이 이해해야 할 수도 있습니다.

다시 한 번 GitHub에서 내 코드를 공유하겠습니다. 마지막으로 참조 섹션에서 링크를 찾으십시오.

뜻밖의 여행의 시작

저는 일전에 시계열 작업을 하고 있었습니다. 그림 1은 그 중 하나를 보여줍니다. 두 배는 없습니다 상승 추세가 존재하며, 그리고 시간이 지남에 따라 변동도 변합니다.. 이렇게 명확한 시각화를 사용하면 정상성을 테스트할 필요가 없었습니다. 무슨 이유인지 기억이 안나는데 그래도 ADF 테스트로 시도해 봤습니다. 놀랍게도 p-값은 거의 0에 가깝습니다. 이는 귀무 가설을 기각하고 고정 가설을 받아들여야 함을 의미합니다.

그림 1. 추세가 있는 시계열(저자 이미지)

그거 이상 하네. 테스트 결과가 잘못된 것 같습니다. 저는 ADF 테스트 뒤에 무슨 일이 일어나고 있는지 조사하고 싶었습니다. 제가 시도한 첫 번째 단계는 이 문제를 합성 데이터로 재현하는 것이었습니다. 다음 코드를 사용하여 일부 테스트 데이터를 생성했습니다. 코드는 느린 추세의 동작만 모방했지만 계절성은 모방하지 않았습니다.

그림 20,000에는 1개의 관측치가 있는데, 이는 추세가 매우 느리게 상승하고 있음을 의미합니다. 기울기가 0.0005인 시계열을 만듭니다. 시계열 평균값은 0번의 관측 후 약 0.5에서 1000로 증가합니다. 그런 다음 다음의 adfuller() 함수를 사용하여 테스트해 보겠습니다. statsmodels.tsa.stattools 기본 매개변수를 사용합니다. p-값은 0.01이고 "문제"가 다시 발생합니다. 그림 2는 결과를 보여줍니다. 제목을 무시하고 상승 추세에 집중할 수도 있습니다. 세 가지 다른 ADF 테스트에서 p-값이 나오는 이유는 나중에 설명하겠습니다.

그림 2. ADF 테스트 결과가 포함된 합성 시계열(저자 이미지)

DF 테스트의 수학

ADF 테스트가 정확히 무엇을 하는지 알아보려면 깊이 들어가야 합니다. 수학적인 배경이 복잡하지 않은 것으로 밝혀졌습니다. 첫째, ADF 테스트는 ADF 테스트의 고급 버전일 뿐입니다. 디키-풀러 테스트. 있다 DF 테스트의 세 가지 주요 버전 (위키피디아에서):

버전 1 : 단위근 테스트: Δyᵢ = δyᵢ₋₁ + uᵢ

버전 2 : 상수를 사용하여 단위근을 테스트합니다. Δyᵢ = a₀ + δyᵢ₋₁ + uᵢ

버전 3. 일정하고 결정적인 추세를 갖는 단위근 테스트: Δyᵢ = a₀ + a₁*t + δyᵢ₋₁ + uᵢ

각 버전에서는 귀무가설은 단위근 δ=0이 있다는 것입니다.

Statsmodels 패키지는 매개변수를 사용하여 세 가지 버전을 모두 지원합니다. "회귀".

버전 1의 경우 회귀는 'n'(상수 없음, 추세 없음)입니다.

버전 2의 경우 회귀는 'c'(상수만 해당)입니다. 이것이 기본 설정입니다.

버전 3의 경우 회귀는 'ct'(상수 및 추세)입니다.

세 가지 다른 설정으로 테스트를 다시 실행했는데 아래에 새로운 결과가 나와 있습니다.

버전 1의 경우 p-값은 0.09입니다. 우리는 귀무가설을 기각해서는 안 됩니다.

버전 2의 경우 p-값은 0.01입니다. 이것이 기본 설정이기 때문에 이미 문제로 처리했습니다.

버전 3의 경우 p-값은 0.00입니다. 시계열이 실제로 결정론적 추세로 고정되어 있음.

따라서 이 예제 데이터의 경우 버전 1(regression='n')로 테스트하면 고정되어 있다고 말하지 않습니다. 기본 설정을 사용하면 안 됩니다. 하지만 여기서 상수항이 왜 그렇게 큰 차이를 만들어냈는지 궁금할 수도 있습니다. 더 자세히 살펴보겠습니다.

DF 테스트에서 선형 회귀까지

위의 정의에 따르면 DF 테스트는 선형 회귀입니다. 그림 3은 선형 회귀의 모든 지점을 보여줍니다. Y축은 Δyᵢ, X축은 yᵢ₋₁, uᵢ는 잔차입니다. 버전 1은 절편(상수 없음) 없이 선을 맞춰야 함을 의미합니다. 버전 2는 절편(상수)을 사용하여 선을 맞춰야 함을 의미합니다.

그림 3. Δyᵢ 및 yᵢ₋₁ (저자 이미지)

Skitlearn 선형회귀 fit_intercept 매개변수를 사용하여 이 두 가지 옵션을 잘 지원합니다. 그림 4 아래에는 두 개의 적합선이 있습니다. 보시다시피 절편이 있는 선이 절편이 없는 선보다 더 잘 맞습니다. R-제곱 점수 역시 이를 명확하게 확인시켜 주었습니다. 또한 주황색 선의 기울기가 파란색 선의 기울기보다 작다는 점에 유의하세요. 즉, 주황색 선의 기울기가 0에 가깝습니다.

그림 4. 선형 회귀 결과(저자 이미지)

시각화를 통해 생각할 수도 있습니다. 점은 (0,0) 중심에 있지 않으므로 적합 회귀선이 (0,0)을 통과해서는 안 됩니다. 절편은 0보다 커야 합니다. 0이 시작 평균이므로 Δy는 0보다 커야 전체 평균이 증가합니다. 회귀선이 (0,0)을 통과하도록 강제하면 데이터가 과소적합되고 (0)의 영향으로 기울기가 0,0에 가까워집니다.

우리는 절편 영향을 포함하는 것이 선형 회귀에 맞는지 확인했습니다. 선을 맞추는 방식이 ADF 테스트 결과에 영향을 미치는 이유는 무엇이며, p-값은 어디에서 나오나요?

선형 회귀에서 p-값으로

이제 조금 복잡해집니다. DF 검정의 최종 p-값은 선형 회귀 분석의 계수 p-값에서 나온 것이 아닙니다. 기본적으로 통계에는 Dickey-Fuller 테이블이라는 특정 분포가 있습니다. 그런 다음 검정 통계량에 대해 MacKinnon의 대략적인 p-값을 사용합니다. 자세한 내용은 다음에서 확인할 수 있습니다. 통계모델 소스 코드.

귀무 가설이 δ=0이기 때문에 적합선의 기울기 검정이 0이라는 의미입니다. p-값을 얻는 방법에 대해 자세히 설명할 필요가 없습니다. p-값과 기울기(선형 회귀의 δ, 추세 기울기가 아님) 간의 연관 논리 체인은 다음과 같습니다.

일반적으로 기울기가 0에서 멀리 떨어져 있으면 p-값이 더 작아야 하며 귀무 가설을 기각하고 단위근이 없으며 고정적임을 제안할 가능성이 더 높습니다. 기울기가 0이거나 0에 매우 가까운 경우 p-값은 더 높아야 하며 귀무 가설을 채택하고 단위근 및 비정상임을 제안할 가능성이 더 높습니다. 두 번째 시나리오에 대해 Wikipedia에서는 "테스트는 실제 단위 루트 프로세스(δ = 0)와 단위 루트 근처 프로세스(δ가 0에 가까움)를 구별할 수 없다는 점에서 통계적 검정력이 낮습니다"라고 말합니다. 그렇기 때문에 애초에 문제가 있는 것입니다. 우리는 단위 루트에 가까운 프로세스를 다루고 있습니다. 버전 1은 단위 루트를 찾고 버전 2는 단위 루트를 찾을 수 없습니다.

위 예에서 버전 1이 작동하는 이유는 무엇입니까?

버전 1은 기울기를 2에 더 가깝게 만들어 p-값이 더 높기 때문에 그림 0의 데이터에 적합합니다.

그러나 버전 1을 기본 설정으로 사용할 수는 없습니다. 버전 1에는 두 가지 경우가 있습니다(행이 (0,0) 을 통과하도록 강제).

사례 1: (0,0)이 모든 데이터 포인트에 더 가깝습니다. 선이 (0,0)을 통과해야 한다면 선은 더 평평해지고 기울기는 0에 가까워집니다. 그림 4는 이 경우를 보여줍니다. 그림 4의 데모는 하나의 변수 yᵢ₋₁에만 적합하며 실제 ADF는 더 많은 지연 변수에 적합합니다.

사례 2: (0,0)은 모든 데이터 포인트에서 멀리 떨어져 있습니다. 선이 (0,0)을 통과해야 한다면 피팅이 실패할 수 있습니다. 본질적으로 기울기는 0입니다. 즉, 선이 (0,0)을 통과하고 대부분의 데이터 포인트를 포함하는 Δyᵢ 및 yᵢ₋₁의 선형 관계를 찾을 수 없습니다. 따라서 테스트 결과는 루트 단위를 갖는 쪽으로 편향됩니다..

아래 그림 5는 귀무 가설(p-값 1)을 기각하지 못한 버전 0.6 테스트의 예를 보여주며 데이터는 평균 10으로 고정되어 있습니다. 그림 6은 이유를 설명합니다. 보시다시피 절편이 없는 선은 찾을 수 없으므로(R 제곱은 0) 적합선의 기울기는 0입니다(Δyᵢ는 yᵢ₋₁에 의존하지 않음).

그림 5. 버전 1에서는 고정 시계열을 인식하지 못했습니다(작성자 이미지).
그림 6. 선형 회귀는 절편이 없는 선을 찾지 못함((0,0) 전달) (저자 이미지)

DF 테스트부터 ADF 테스트까지

이제 우리는 DF 테스트가 선형 회귀이고 선형 회귀에서 p-값을 얻는 방법을 이해했습니다. ADF로 넘어가겠습니다. ADF의 공식은 다음과 같습니다.

다시 선형 회귀입니다. "증강" 부분은 더 많은 계수를 맞춰야 한다는 것입니다.

statsmodels 패키지를 사용하면 AFT 테스트에 대한 자세한 요약을 표시할 수 있습니다. 그림 7은 그 결과이다.

그림 7. 자세한 요약이 포함된 ADF 테스트(작성자 이미지)

'OLS 회귀'(선형 회귀의 기본 솔루션)와 17개의 계수가 표시됩니다. 최대 지연을 지정하지 않았으므로 테스트에서는 시계열 길이를 기준으로 최대 17까지 시도합니다.

const(절편)도 적합합니다. 값은 0.0596입니다.

Scikit-learn에서 선형 회귀를 사용하여 ADF 테스트를 구현해 보겠습니다. 그림 8은 코드와 출력입니다.

그림 8. Scikit-learn을 사용한 ADF 테스트(선형 회귀 부분만)(작성자 이미지)

절편은 0.0596이고 다른 계수는 그림 7과 동일합니다. Scikit-learn의 선형 회귀는 단순한 OLS입니다. 우리는 같은 일을 하고 있으므로 결과가 동일하다는 것은 놀라운 일이 아닙니다.

여행의 끝

매개 변수를 설정하는 방법을 알아낸 후 버전 1(회귀 ='n')을 사용하여 그림 1의 원래 시계열을 테스트한 결과 p-값이 0.08을 얻었는데 이는 고정되지 않음을 나타냅니다. 그림 1의 데이터는 평균 0,0이므로 (1)이 데이터 포인트 (Δyᵢ, yᵢ₋₁)에 더 가깝다고 상상할 수 있습니다. 버전 XNUMX 테스트를 사용하면 도움이 될 것입니다.

그림 1의 추세 기울기가 최소이기 때문에 기울기를 증가시키는 단계를 사용하여 시계열을 다시 샘플링할 수도 있습니다. 예를 들어, 4단계( value[::0.17] )로 테스트하면 기본 설정(회귀='c'의 경우 p-값은 XNUMX)으로 ADF 테스트를 통과하지 못합니다.

문제 해결됨.

테이크 아웃

ADF 결과를 맹목적으로 신뢰하지 마십시오. 시각화는 당신의 친구입니다.

ADF 테스트는 간단한 선형 회귀이며 통계 모델 구현에서는 OLS를 사용하여 회귀 문제를 해결합니다. 그런 다음 Dickey-Fuller 테이블을 사용하여 적합 회귀 분석의 첫 번째 시차 변수의 계수가 0이라는 Null 가설을 검증하는 p-값을 추출합니다.

ADF 테스트는 단위 루트 프로세스 근처를 테스트할 때 제한 사항이 있습니다(δ는 0에 가깝습니다).

이에 따라 적절한 ADF 버전을 선택해야 합니다. 예를 들어, 일정한 추세를 보고 '추세 정체'를 테스트하려면 매개변수로 'ct'를 선택해야 합니다. 그림 0 및 그림 1와 같이 평균이 2으로 예상되는 신호에 대해 느린 추세를 포착하려면 절편 피팅의 영향을 피하기 위해 매개변수로 'n'을 선택해야 할 수도 있습니다. Statsmodels는 'ctt' 매개변수를 사용하여 정량적 추세도 지원합니다. 이 고급 옵션은 경우에 따라 좋은 선택이 될 수 있습니다. 더 자세히 알아보고 싶다면 다음을 참조하세요. 절편 및 결정론적 시간 추세 항 포함에 대한 불확실성 처리.

ADF 테스트에 대해 뭔가를 배웠기를 바랍니다.

시계열을 재미있게 즐겨보세요!

나에게 연락 링크드인.

추신: 저는 시계열 데이터에 대한 경험과 열정이 있습니다. 이 기사가 마음에 들면 내 다른 기사에도 관심이 있을 것입니다. 시계열 관련 게시물.

참고자료

GitHub의 노트북 파일

이 추세 시계열이 고정된 이유는 무엇입니까? 소스 https://towardsdatascience.com/why-is-this-trending-time-series-stationary-f3fb9447336f?source=rss—-7f60cf5620c9—4에서 https://towardsdatascience.com/feed를 통해 다시 게시됨

<!–

–>

타임 스탬프 :

더보기 블록 체인 컨설턴트