今回は,サンプリング間隔が1ではなく,のときのパワースペクトルについての説明です.スペクトル解析や時系列解析についての教科書では,サンプリング間隔が1の場合のみ扱っているものが多いので,迷うことがあると思います.
サンプリング間隔の長さ
の時系列
のパワースペクトル密度の推定量(ピリオドグラム)は,
時刻を,時間の長さを
,周波数を
として,
です.この式の,絶対値の中身は,
となるので,サンプリング間隔のことは考えずに,離散フーリエ変換したものと同じです.
つまり,実際の計算では,サンプリング間隔が1のときと同じ方法でまずパワースペクトル密度を推定し,その後,周波数をで割り,パワースペクトル密度に
をかければよいのです.
また,サンプリング周波数をとすれば,
なので,
で考えるときは,周波数に
をかけ,パワースペクトル密度を
でわってください.
上のは,有限の長さの連続信号
のパワースペクトル密度の推定量
を幅の部分区間の和として近似することで導くことができます.
Rのspectrumを使う場合
Rでパワースペクトル密度を計算するコマンドspectrumを使う場合,サンプリング間隔をdtとすれば(以下は,dtが0.1 sの例です),
dt <- 0.1 x <- spectrum(x,plot=FALSE) x$freq <- x$freq/dt x$spec <- x$spec*dt
のようにします.このとき,x$freqが周波数で,x$specはパワースペクトル密度です.ただし,spectrumでは,直線トレンドを除いたり,窓関数をかけたりする処理がされるので,パワースペクトル密度の全面積は,上の定義の値と一致しません.
サンプリング周波数をf.sampとすれば(以下は,f.sampが10 Hzの例です),
f.samp <- 10 x <- spectrum(x,plot=FALSE) x$freq <- x$freq*f.samp x$spec <- x$spec/f.samp
です.