ケィオスの時系列解析メモランダム

時系列解析,生体情報学,数学・物理などの解説です.

【Rでフラクタル解析】長時間相互相関時系列の生成(ラグ指定あり)

下記の論文"Generalized theory for detrending moving-average cross-correlation analysis: A practical guide"の解説シリーズです.
doi.org

まずは,detrending moving-average cross-correlation analysis (DMCA)で,何をやっているの?ということを少し感じるために,数値的にサンプルの時系列を生成する方法を説明します.
DMCAC言語ファイルはここからダウンロードできます:
https://www.dropbox.com/s/ymugqqan5g6trhl/DMCA.zip?dl=0


ここでは,arfimaパッケージを使います.パッケージをインストールしていない場合は

install.packages("arfima")

を実行してください.

データを保存するフォルダは,事前に各自作成して下さい.
例えば,

D:\Document\時系列解析

の場合は,バックスラッシュ("\",日本語環境では¥マーク)を,"/"に書き直す必要がありますので,下記のRスクリプト1行目にある

DIR <- "...... ここに各自,データを保存したいフォルダへのパスを指定 ......"

の部分を

DIR <- "D:/Document/時系列解析"

に変更してください.

以上の点(パッケージのインストールとDIRの指定)に注意して,このスクリプトを実行してみてください.
FN.OUTで指定した,"samp_series.csv"という名前のファイルが作られます.時系列はその中です.

DIR <- "...... ここに各自,データを保存したいフォルダへのパスを指定 ......"
setwd(DIR)
#######################
FN.OUT <- "samp_series.csv"
######
# install.packages("arfima")
require(arfima)
# 時系列の長さ
n <- 10000
# ラグの指定
lag <- 20
#####################
# パラメタの指定 d1, d2
# ARFIMA(0,d1,0)
d1 <- 0.4
# ARFIMA(0,d2,0)
d2 <- 0.1
#########################
# 時系列の生成
seed <- sample(2^20,1)
set.seed(seed)
sim1 <- arfima.sim(n+lag, model = list(phi = 0, dfrac = d1, dint = 0))
set.seed(seed)
sim2 <- arfima.sim(n, model = list(phi = 0, dfrac = d2, dint = 0))
x1 <- sim1[(1+lag):(n+lag)]
x2 <- sim2[1:n]
write.table(data.frame(x1,x2),FN.OUT, sep = ",", append=FALSE, quote=FALSE, col.names=FALSE,row.names=FALSE)