Rでxlsxを読み書きする

以下のサイトが非常に分かりやすかったです。
R で openxlsx パッケージを用いて xlsx ファイルを扱う - Qiita
http://qiita.com/zero310/items/71b6e5bc0731680d19df

Rで解析:セル体裁!大きなデータも大丈夫!エクセル操作の「openxlsx」パッケージ
http://www.karada-good.net/analyticsr/r-338

マイナス金利に関するまとめ(2016/09/23初稿、09/26修正)

以下、自分用の覚書:

概況:

以下、「超過準備に対するマイナス金利」をマイナス金利政策と呼ぶ。

日本語によるまとめ:

英語によるまとめ:

日銀:

デンマーク国立銀行

欧州中央銀行

スウェーデン中央銀行

スイス国立銀行

ハンガリー国立銀行

GNU Rで月次データを四半期に集約する

時系列解析で月次データを四半期に集約する(3ヶ月の合計や平均を計算する)ことはよくある。以下はstats, zoo, xtsを使った場合。

まず準備:

# 2010年1月から12月までの月次データを生成する
rm(list=ls())
dataLength <- 12
set.seed(1) # to make it reproducible
data1 <- rnorm(dataLength)

statsのtsオブジェクトに対してstatsのaggregateを使う場合:

dataMonthTs <- ts(data1, start=c(2010,1), frequency=12)
dataQuartTs <- aggregate(dataMonthTs, nfrequency = 4, FUN = sum)
dataQuartTs

以上のやり方はzooもxtsもなかった10年以上前にはよく使われていた。ただし、最近は以下のようにzooやxtsを使うほうが一般的かもしれない。

zooオブジェクトに対してzooのaggregateを使う場合:

library(zoo)
dateZoo <- seq(as.Date("2010-01-01"), as.Date("2010-12-01"), by = "month")
dataMonthZoo <- zoo(data1, dateZoo)
dataQuartZoo <- aggregate(dataMonthZoo, as.yearqtr, sum)
dataQuartZoo

zooオブジェクトに対してxtsのapply.quarterlyを使う場合:

library(xts)
dataQuartXts <- apply.quarterly(dataMonthZoo, sum)
dataQuartXts

# ただし、四半期の日付が2010-03-01 2010-06-01等となって日付がふさわしくない。
# たとえば、以下のようにして日付2010-01-01 2010-04-01等と直す。
time(dataQuartZoo) <- as.Date(as.yearqtr(time(dataQuartZoo)))
dataQuartZoo
#それ以外だとto.quarterlyを使う方法も考えられる。

その他にもRmetricsのtimeSeriesの関数を使うなどのやり方もあると思います。よりエレガントなやり方があったらコメントで教えて下さい。

[参考]
R - Set the first month of each quarter as the index after applying apply.quarterly() - Stack Overflow
http://stackoverflow.com/questions/19352828/set-the-first-month-of-each-quarter-as-the-index-after-applying-apply-quarterly
Kobe.R: Kobe.R #10 xts 時系列の簡単操作
http://kobexr.blogspot.jp/2014/10/kober-10-xts.html

Emacsでjulia-mode

ESS (Emacs Speaks Statistics) にはすでにjulia-modeが入っているはずなのですが、OS Xでうまく動かないので、しょうがなくJulia-lang公式のjulia-mode.elを入れてみました。

  1. Julia-lang公式のgithubから julia-mode.el をダウンロード(ページの「RAW」をクリックしてローカル[たとえば~/bin/julia]に保存)
  2. ~/.emacsに以下のように記述

(add-to-list 'load-path "~/bin/julia")
(require 'julia-mode)

ESS (Emacs Speaks Statistics) をgitからインストール

  1. cd ~/bin/
  2. git clone https://github.com/emacs-ess/ESS.git
  3. cd ess
  4. make
  5. ~/.emacsに以下のように記述*1

(add-to-list 'load-path "~/bin/ess/lisp")
(load "ess-site")

以上でemacs上でM-RでRを起動できるようになる*2

*1:~/.emacs.d/init.elに書いておくのが現在の正しいお作法かもしれません。でも矢野がemacs使い始めた25年前にはそんな便利な仕組みはなかったので、今でも~/.emacsを使っています・・・

*2:OS Xの場合:makeでwgetを使う必要があるので、homebrewの場合はbrew install wgetしておくこと。

OS X 10.9とMatlab R2016aでgfortranを使う

(1)OS X 10.9 (Mavericks)にgfortranをインストール

  1. Xcodeをインストール:App Storeの検索窓に"xcode"と入力して、xcodeを探して、インストールする
  2. Xcode 6.1以降ではcommand-line toolsがプレインストールされるようになった模様 [参考] Mac での Xcode コマンド ライン ツールのインストール
  3. gccをダウンロード:"High Performance Computing for Mac OS X" http://hpc.sourceforge.net/ からgcc-4.9-bin.tar.gzをダウンロード*1
  4. gccを解凍:ターミナルでsudo tar -zxvf gcc-4.9-bin.tar.gz -C / と入力*2

[Ref] http://hpc.sourceforge.net/

(2)Matlab R2016aでgfortranを使う
次にOS X 10.9 (Mavericks)上のMatlab r2016aでgfortranを使うには/usr/local/binへのパスを設定する必要があるため、start.mなどに以下のように書いておく。

setenv('PATH', [getenv('PATH') ':/usr/local/bin']);
[Ref] http://www.mathworks.co.jp/matlabcentral/answers/116922-mex-cannot-find-gfortran-compiler-mac-os

最後にgfortranが設定されているか確認する。

mex -setup FORTRAN

(3)Matlab R2016aでFortranコードを確認
/Applications/MATLAB_R2014a.app/extern/examples/refbookからサンプルコードをコピーしてmexを確認する。

[コード例1]
mex timestwo.F
コンパイルが無事に終了)
x = 99;
y = timestwo(x)
[Ref] http://www.mathworks.co.jp/jp/help/matlab/matlab_external/passing-a-scalar_btgcf9p-1.html

[コード例2]
mex matsq.F
コンパイルが無事に終了)
x = [1 2 3; 4 5 6];
y = matsq(x)
[Ref] http://www.mathworks.co.jp/jp/help/matlab/matlab_external/passing-matrices.html

[コード例3]
mex sincall.F fill.F
コンパイルが無事に終了)
sincall
[Ref] http://www.mathworks.co.jp/jp/help/matlab/matlab_external/calling-functions-from-fortran-mex-files.html

[コード例4]
mex yprimef.F yprimefg.F
コンパイルが無事に終了)
yprimef(1, 1:4)

*1:Mathworksの公式サイトには「Intel Fortran Composer XEのみサポート」と書いてあるが、簡単なコードはgcc-4.9でも動く模様(今後要確認)

*2:gccやgfortranがインストールされるのは/usr/local配下