RでX-13ARIMA-SEATSを使う(2019年6月版)

自分用の覚書
CRANにあるx13binaryが使えるようになったので、自分でX-13ARIMA-SEATSをコンパイルする必要がなくなり、MacとWinの違いもなくなりました。

 

[インストール]GNU Rで二つのパッケージをインストール

  1. install.packages("seasonal"); install.packages("x13binary")

[GNU Rのパッケージseasonalからx13asを実行する]

  1. パッケージの読み込み
    library(x13binary); library(seasonal)
  2. checkX13()を実行して、"Congratulations! 'seasonal' should work fine!"と表示されれば問題なし
  3. m <- seas(AirPassengers)
  4. plot(m)
  5. 季節調整済み系列(s11)の取り出し
    m$series$s11
  6. プロットの一例
  • plot(AirPassengers) #元のデータ
  • lines(m$series$s11, col="red") #季節調整値
  • lines(m$series$s12, col="blue") #トレンド

seasonalの使い方についてvignettesを参照されたい

https://cran.ism.ac.jp/web/packages/seasonal/vignettes/seas.pdf

 

[注意すべき点]

  1. X-13ARIMA-SEATSから季節調整済み系列はs11となった模様(X-12-ARIMAのd11。プログラムする人はお気をつけ下さい)
    http://www.census.gov/ts/x13as/docX13ASHTML.pdf
[s10等のまとめ]

s10: 季節成分(seasonal component

s11: 季節調整値(seasonal adjustment component

s12:トレンド成分(trend component

s13:不規則成分(irregular component

詳しくは以下のTable 7.13を参照

https://www.census.gov/ts/x13as/docX13AS.pdf

[Predefined regression variables]

外れ値やレベルシフトの調整にはregression.variablesを使う。使い方は以下のTable 7.28を参照

https://www.census.gov/ts/x13as/docX13AS.pdf

 

 

 

GNU R (Windows10)にR Interface to 'Keras'をインストールする

GNU R (実際の作業はRstudio)でKerasをインストールしたときの覚書。基本的には(1)Anacondaインストール、(2)Anacondaでtensorflowインストール、(3)R上でdevtoolsインストール、(4)devtoolsでkerasインストール、(5)Windows上でRtoolsインストールと言う手順になる。

 

[Anacondaとtensorflowのインストール]

最初にAnaconda(Python 3.*)をインストールし、Anaconda Navigatorを起動してtensorflowをインストールする。以下のURLを参照。

miyabi-lab.space

 

[keras: R Interface to 'Keras'のインストール]

Rstudioでの導入は以下の通り。

  1. Rstudioを管理者として実行する
  2. install.packages('devtools')(devtoolsをインストールする)
  3. コンソールに devtools::install_github("rstudio/keras") と入力
  4. インストール中に"Please download and install Rtools *.*"とRtoolsをインストールするように言われるので、指定されたバージョンのRtoolsをインストールする

[R Interface to 'Keras']

R Interface to 'Keras'の使い方は以下のURL等を参照。

cran.ism.ac.jp

Rstudio (Windows10)でRのでパッケージをインストールする

Rstudio (Windows10)でRのでパッケージ(devtoolsなど)をインストールするとき、パスに日本語がある場合、Rstudioが認識できない(日本語パスの部分が????になる)。

 

libpathsでパスを指定する方法もあるが、一番簡単なのはRstudioを管理者権限で起動してインストールする方法かもしれない(もっと簡単な方法があれば誰か教えてください)。

 

  1. Win10のスタートメニューでrstudioを入力し、Rstudioが表示されたら、右クリックして「管理者として実行」を選択
  2. Rstudioが起動したらコンソールでinstall.packages('devtools')を実行する

 

matlab 警告: 名前が存在しないか、ディレクトリではありません

Windows10でDynareをインストールしたあとに「matlab 警告: 名前が存在しないか、ディレクトリではありません」という警告がでる問題の解決方法。

cd C:\dynare\4.5.7\contrib\ms-sbvar\TZcode\MatlabFiles\

edit startup.m

 

ms-sbvarを使わない場合は、以下の2つの行をコメントアウトすればよい。

path(path,'/Users/tzha/ZhaData/Git/TZcode/MatlabFiles')
path(path,'/Users/tzha/ZhaData/Git/TZcode/MatlabFiles/MSV')

 

シンボリック関数を関数ハンドルに直して、arrayfunを適用する

arrayfunの使い方 - ハリ・セルダンになりたくて(はてダから移行中)

Matlabのシンボリック式を無名関数(関数ハンドル)に変換する関数 - ハリ・セルダンになりたくて(はてダから移行中)

の合わせ技。

sf(x,y)というシンボリック関数があった場合、それにarrayfunを適用するには関数ハンドル(無名関数)に変換する必要がある。手順は以下の通り。

arrayfun(sf, [1 2], [3 4])

はエラーになる。
hf = matlabFunction(sf)
arrayfun(hf, [1 2], [3 4])

ある数字の繰り返しである行列を作成するのに効率的方法は?

たとえば、7が単に並んだ列ベクトルをつくるとき、Matlabで一番効率的な方法はなにか?

 

tic; repmat(7, 1000000,1); toc;
経過時間は 0.006551 秒です。
tic; ones(1000000,1) * 7; toc;
経過時間は 0.008067 秒です。

 

repmatの方が微妙に早い?のか?

arrayfunの使い方

Matlabに詳しい人には当たり前の話だと思うがarrayfunの使い方を自分用にメモ(Rではapply系の関数に該当するのがarrayfun、cellfun、bsxfunだと思えばいいのかな・・・):

 

plusFun = @(x, y) x + 2 * y
plusFun(1,2)
arrayfun(plusFun, [1 2], [3 4])
arrayfun(plusFun, [1; 2], [3; 4])

 

GPUのあるPCでPCTを契約していると、GPU arrayfunを使うと高速化できるそうです。

[参考]

jp.mathworks.com

jp.mathworks.com