単位根過程とトレンド定常過程の線形トレンドの違い
やりたいこと
下の時系列データを見てみましょう。この時系列データはどちらも同じような右肩上がりのトレンドを持つようなデータです。しかし背後にあるデータの構造は全く異なったものになります。このように同じような見た目でも異なる構造を持つデータがあることを理解し、それがどのような構造なのかを見ていきたいと思います。
単位根過程と自己回帰過程
まず自己回帰過程と単位根過程の違いについて簡単に説明します。詳しくは沖本[2010]にあるのでそちらを参考にしてください。
自己回帰(AR)過程(autoregressive process)
過程が自身の過去に回帰される形で表現される過程である。以下の式は過去の値を一つしか含まないので1次AR過程といい、AR(1)と表現される。$\epsilon$はホワイトノイズである。
$ y_{t} = c + \phi_{1}y_{t-1} + \epsilon_{t} \quad \epsilon_{t} ~ W.N.(\sigma^2) \tag{1}$単位根過程(unit root process)
原系列1が非定常2過程であり、差分系列$\Delta y_{t} = y_{t} - y_{t-1}$が定常過程であるとき、過程を単位根過程という。
ここで、AR(1)は常に定常であるのかというと、そうではありません。AR(1)の定常条件は、AR特性方程式3と呼ばれる方程式を解くことで求められます。この方程式のすべての解の絶対値が1より大きいときAR(1)は定常であるといえます。すなわちAR(1)過程の定常条件は$z = \frac{1}{\phi_{1}}$なので、$\phi_{1}$は1より小さくなけらばなりません。
単位根過程とAR過程の関係について少し触れておくと、単位根過程はAR特性方程式でz=1という解を一つ持つので単位根過程と呼ばれるそうです。AR(1)の定常条件は先ほどもあった通り$\phi_{1} < 1$でした。AR(1)過程で考えると単位根過程は$\phi_{1} = 1$のAR(1)過程とみることができます。
トレンド定常過程
まずは定義です。
- トレンド定常過程 $x_{t}$が定常過程であるとき、$y_{t} = at + x_{t}$と表される過程をトレンド定常過程という。
この定義を見て「あれ?トレンド定常過程って単位根過程に含まれちゃうじゃん。期待値一定じゃないじゃん」って思ったんですけど、同じことを考えている人がいました。詳しくは、ゆるふわクオンツの日常 を見てみてください。
右肩上がりのデータや、右肩下がりのデータはいわゆるトレンドを持つデータは、ぱっと見た感じでは定常性を満たしていないように見えます。しかし、データがトレンド定常過程の場合データは定常性を満たしていることになります。
まとめ
さて、ここで答え合わせですが、時系列データAは定常条件を満たすトレンドAR(1)過程、時系列データBはトレンドを持つ単位根過程です。
実際にはこのように背後にある構造はわからないものです。今回は触れませんが、時系列データの構造を調べるのに、単位根検定という、データが単位根過程であるかどうかを判別する方法があります。時系列データにとって定常性はとても重要な性質です。一見同じような見た目ですが構造が異なるといったことがあるので分析には注意が必要です。
ソースコード
time_series.jl
using Plots
# トレンドなしAR(1)
ar( y, c, ϕ, noise ) = c + ϕ*y + noise
# トレンドありAR(1)
ar_trend( y, c, t, ϕ, noise ) = c*t + ϕ*y + noise
# 初期値
y0 = 0.
# 定数
c1 = 0.1
c2 = 0.005
# 係数
ϕ1 = 0.5
ϕ2 = 1.
data = zeros(100, 4)
data[1, 1] = ar( y0, c1, ϕ1, randn() )
data[1, 2] = ar( y0, c2, ϕ2, randn() )
data[1, 3] = ar_trend( y0, c1, 1, ϕ1, randn() )
data[1, 4] = ar_trend( y0, c2, 1, ϕ2, randn() )
for i in 2:100
# AR(1)
data[i, 1] = ar( data[i-1, 1], c1, ϕ1, randn() )
# 単位根過程
data[i, 2] = ar( data[i-1, 2], c2, ϕ2, randn() )
# トレンドありAR(1)
data[i, 3] = ar_trend( data[i-1, 3], c1, i, ϕ1, randn() )
# トレンドあり単位根過程
data[i, 4] = ar_trend( data[i-1, 4], c2, i, ϕ2, randn() )
end
# トレンドなしAR(1)
plot( 1:100, data[:, 1], label="AR(1)" )
# トレンドなし単位根過程
plot!( 1:100, data[:, 2], label="unit root process")
# 時系列データA
plot( 1:100, data[:, 3], label="AR(1) - trend" )
# 時系列データB
plot( 1:100, data[:, 4], label="unit root process - trend" )
参考文献
using Plots
# トレンドなしAR(1)
ar( y, c, ϕ, noise ) = c + ϕ*y + noise
# トレンドありAR(1)
ar_trend( y, c, t, ϕ, noise ) = c*t + ϕ*y + noise
# 初期値
y0 = 0.
# 定数
c1 = 0.1
c2 = 0.005
# 係数
ϕ1 = 0.5
ϕ2 = 1.
data = zeros(100, 4)
data[1, 1] = ar( y0, c1, ϕ1, randn() )
data[1, 2] = ar( y0, c2, ϕ2, randn() )
data[1, 3] = ar_trend( y0, c1, 1, ϕ1, randn() )
data[1, 4] = ar_trend( y0, c2, 1, ϕ2, randn() )
for i in 2:100
# AR(1)
data[i, 1] = ar( data[i-1, 1], c1, ϕ1, randn() )
# 単位根過程
data[i, 2] = ar( data[i-1, 2], c2, ϕ2, randn() )
# トレンドありAR(1)
data[i, 3] = ar_trend( data[i-1, 3], c1, i, ϕ1, randn() )
# トレンドあり単位根過程
data[i, 4] = ar_trend( data[i-1, 4], c2, i, ϕ2, randn() )
end
# トレンドなしAR(1)
plot( 1:100, data[:, 1], label="AR(1)" )
# トレンドなし単位根過程
plot!( 1:100, data[:, 2], label="unit root process")
# 時系列データA
plot( 1:100, data[:, 3], label="AR(1) - trend" )
# 時系列データB
plot( 1:100, data[:, 4], label="unit root process - trend" )
Author And Source
この問題について(単位根過程とトレンド定常過程の線形トレンドの違い), 我々は、より多くの情報をここで見つけました https://qiita.com/takahashi-ry/items/a50f9808866cc955c7b2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .