今回は,一般に次自己回帰過程
のパラメタと,の分散 (平均は0とします)がわかったときに,そのパワースペクトルを導きます.というか,パワースペクトルをとりあえず式で書きます.
今回は,パワースペクトルのパラメトリック推定を理解するための準備になってます.
これまでの2次自己回帰過程の話で,すでに方法はわかったと思います.まず,基本事項 (使う道具)の確認です.
基本事項の確認
1. ラグオペレータを,時系列に作用させると,
となります.つまり,が1つかかるごとに,時間が1戻ります.
2. 時系列のフーリエ変換をとします.時間の世界でのラグオペレータをフーリエ変換すると,になります.つまり,
となります.フーリエ変換すると,がに変わると覚えてください.
3. 時系列のパワースペクトルの推定量は,長さの時系列のフーリエ変換を (ここで,)として,
です.
パワースペクトルの導出
以下の自己回帰過程
を,ラグオペレータを使って表すと,
ここから,両辺のフーリエ変換をして,両辺の絶対値をとって,両辺を2乗して,両辺をでわると.....
左辺は,
が,になって,になって,になって,になるから,
最後は,のパワースペクトルになります.
左辺は,のパワースペクトルになります.はになります.
ということで,
です.
こんなこと,どの時系列解析の教科書にも書いてあるので,つまらないですが,ここからは,と,の分散が与えられたときのパワースペクトルをRで描いてみます.ポイントは,
とが決まるとパワースペクトルが計算できる
ということです.
下のスクリプトで,
a <- c(2.373596,-2.528090,1.404494)
の部分の数値や長さを変えていろいろと実験してみてください (すいません,この例は不安定で,良くない係数でした).
# 自己回帰過程のパラメタを与える # a <- c(a_1,a_2,...,a_m)とします a <- c(2.373596,-2.528090,1.404494) # 白色ノイズの分散 sig2 <- 1 #################################### m <- length(a) # 周波数の設定 (length.outで点数を指定) f <- seq(0,1/2,length.out=100) n.f <- length(f) # パワースペクトルの計算 Sf <- c() for(k in 1:n.f){ Sf[k] <- 1/Re((c(1,-a) %*% exp(2*pi*f[k]*(0:m)*1i))*(c(1,-a) %*% exp(-2*pi*f[k]*(0:m)*1i))) } # パワースペクトルのプロット par(mfrow=c(1,2)) plot(f,Sf,"l",col=4,lwd=2,xlab="f",ylab="S(f)",main="線形目盛") plot(f[f>0],Sf[f>0],"l",log="xy",col=4,lwd=2,xlab="f",ylab="S(f)",main="両対数目盛")