ファイナンス機械学習:分数次差分をとった特徴量 練習問題 IIDガウス過程時系列と正弦関数時系列

メモリーのない定常時系列であるIIDガウス過程の時系列を作成し、ADF検定を行う。

def printADF(process):
    adf, p_value, _, _, _ = adfuller(process, maxlag=1,regression='c', autolag=None)
    print(f'ADF statistics: {adf}')
    print(f'p-value: {p_value}')

# generate 10000 IID random numbers 
num = 10000
mu = 0
sd = 1
GX = np.random.normal(mu, sd, nsample)
printADF(GX)
IID Gauss過程時系列のADF検定結果

 検定量は負であり、p値も低いので、ADFの帰無仮説単位根の存在は棄却され、この時系列は定常である。

累積時系列を作成し、同様にADF検定を行う。累積時系列は一次の和分である。

IID Gauss過程の累積時系列のADF検定

検定量はマイナスではあるが、p値は5%より高く、時系列は単位根を持ち、非定常である。
この累積時系列の差分を2回取り、ADF検定を行う。

IID Gauss過程の累積時系列の2回差分のADF検定

一次和分の時系列を2回差分し、過度差分させたADF検定は定常である。

正弦関数に従う時系列を作成し、ADF検定を行う。

num = 10000

x = np.linspace(0, 10, num)
sinX = pd.Series(np.sin(2.*x+0.5))
printADF(sinX)

p値より、定常時系列である。
 この時系列を$${+1}$$シフトし、累計を取った時系列は、メモリーを持つ非定常時系列である。ADF検定からそれを確かめる。

正弦関数従う時系列をシフトさせた累積時系列とそのADF検定

ADF値は正でp値は1となり、明らかに非定常である。
これに拡大ウィンドウ法分数次差分を、$${\tau=1e-2}$$として適用し、ADF検定のp値が5%を下回る最小のd値を求める。

d,outEx=plotMinFFD(sinXsf_cumsum,False,thres=.01)
fdmin=fracDiff(pd.DataFrame(sinXsf_cumsum),d,thres=.01)
printADF(fdmin)
plt.plot(fdmin)
分数次差分により定常となる最小のdとADF検定量
最小次数d=0.15で差分を行った時系列とそのADF検定の結果

同じ時系列を固定ウィンドウ法分数次差分で、最小dを求めADF検定を行う。

d,outFx=plotMinFFD(sinXsf_cumsum,True,thres=1e-5)
fdmin=fracDiff_FFD(pd.DataFrame(sinXsf_cumsum),d,thres=1e-5)
printADF(fdmin)
plt.plot(fdmin)
ADF検定のp値が5%を切るdの値とADF検定量
得られた最小のd=0.25による固定ウィンドウ法分数次差分による時系列とADF検定


この記事が気に入ったらサポートをしてみませんか?