저는 안정도를 테스트하기 위해 여러 (~ 500) 시계열에 대해 ADF 테스트를 수행하고 있습니다. 그래서 나는 그들 각각에 대해 정확한 수의 래그를 선택하는 양적 방법이 필요합니다. 가능한 한 접근법은 테스트를 위해 샘플의 80 %를 사용하고 회귀의 매개 변수를 가져 와서 ssr (제곱 회귀의 합)을 계산하고 최소값을 검색하는 것입니다. 그러나 이것이 과도한 피팅으로 이어질 수 있으며 피하기 위해이 회귀를 나머지 20 %에 적용하고이 하위 샘플의 ssr을 계산할 수 있습니다. 이 두 번째 ssr의 최소값으로 이어지는 지연의 수는 올바른 값이어야합니다.통계 모델을 사용하여 Python으로 Dickey Fuller를 테스트했습니다.
문제는 statsmodels 문서가 불완전하지 않다는 것입니다 (최소한 저 같은 초보자에게는!). 예를 들어, 주어진 라인은
res = ts.adfuller(dUs, maxlag=max_lag_, autolag=None, regression='ct', store=True, regresults=True)
이고 회귀 계수는 res [3] .resols.params에 저장되지만 순서는 알 수 없습니다. 나는 누군가에게이 시계를 사용해 시계를 시험해보아야했다.이 시계는 사용 된 수식과 이에 상응하는 계수를 제공한다.
R-output).
매개 변수의 파이썬 순서는 ('ct'회귀) 지연 1, 지연 1, 지연 2, 지연 ... 지연, 절편, 시간 추세 인 것으로 보입니다. 나는, 다음, 다음 코드로 장착 시리즈를 재 - 구성 :
xFit[0:max_lag_ + 1] = dUs[0:max_lag_ + 1]
for i in range (max_lag_ + 1,xFit.size):
xFit[i] = xFit[i-1] + res[3].resols.params[0] * xFit[i-1] + res[3].resols.params[res[3].resols.params.size - 2] + res[3].resols.params[res[3].resols.params.size - 1] * t[i]
for j in range(1,max_lag_ +1):
xFit[i] = xFit[i] + res[3].resols.params[j] * lag[i-1-j]
지연 변수가이
lag = dUs[1:]-dUs[:-1]
처럼 내 DUS 변수로 구성되는 주 있다는 것입니다 그 xFit 시리즈와 res [3] .resols.fittedvalues는 다릅니다! 나는 이것이 최초의 max_lag_ 데이터 포인트의 초기화와 관련이 있다고 생각한다. (실제로 res [3] .resols.fittedvalues는 원래 시리즈보다 max_lag_ + 1 짧다.) : 나는 그것들이 동일하도록 선택했다. 원래 시리즈로. 그러나 정확히 무슨 일이 일어나는지 파악할 수는 없습니다. xFit과 res [3] .resols.params의 차이는 커집니다. time-series-comparison입니다. 또한 지연 횟수를 늘리면 내 피팅이 어느 정도 가치가 올라간다는 것을 알 수 있습니다. 그런 다음 시리즈가 폭발합니다. 이것은 장착 된 값으로는 발생하지 않습니다!
마지막 테스트에서는 xFit에서 ADF 테스트를 실행했습니다. 이것이 내가 이미 가지고있는 res [3] .resols.params로 이어져야한다는 것을 이해합니다.
는 라인res2 = ts.adfuller(xFit, maxlag=max_lag_, autolag=None, regression='ct', store=True, regresults=True)
에게 RES2의 출력을 주어 3
[-1.60231256e + 00 4.23814175e -4.15837300e - 02 - 02 - 02 4.99642618e 된다 .resols.params -6.92483339e 3.89141878e + 02 + 00]
입술 [3] .resols.params하면서
[-1.29269094e 2.11857016e + 00 - 02 - 02 -5.82679110e -2.09614163e-02이다,174,-5.44413351e + 02 2.69502722e + 00]
많은 사람들이 R로 이동하겠다고 제안했지만, a) 사용하지는 않았지만 (배울 수도 있음) b) 직장에 설치된 소프트웨어를 얻는 것이 그리 쉬운 일이 아니며 귀중한 시간을 많이 뺏을 수 있습니다.
아이디어가 있으십니까? 어떤 실수라도 제가 빠졌습니까?(내가 전에 그것을 게시 할 시간이 없었 않았더라도!) 사전에
감사합니다,
C