2012-01-01から1年間の記事一覧

Interpreter パターン

Interpreter pattern - Wikipedia DSL(Domain Specific Lanuage、ドメイン特化言語)を作るときに良いっぽい。要するにAST(Abstract Syntax Tree)を作るときに使うイメージかな?以下のコードは例の如くwikipediaにあったコードをC++に書きなおしたもの。サ…

fslexとfsyaccを使って字句・構文解析して電卓っぽい計算をしてくれる奴を作成したい

F#

DSL(Domain Specific Language)作成のための第一歩としてよくある電卓的なものを作るぞと。ネットで見かける日本語の情報は不勉強な私の知識を超えている内容なので、ここでは丁寧にまとめておきたい。環境はVisual Studio 2010 Shell版のF#(Not 製品版のV…

2011年・TOPIXのヒートマップを作ってみた

R

ggplot2 Time Series Heatmapsにあるグラフがあまりに美しかったのでやったみた。まずはデータ取得・描画用のライブラリをインストールしておく。 install.packages("ggplot2") install.packages("RFinanceYJ") ここでは2011年のTOPIXのHeatmapを作成し…

RcppSMCパッケージを使って逐次モンテカルロ(Sequential Monte Carlo)・粒子フィルタ(Particle Filter)を実行する

前フリ 逐次モンテカルロ・粒子フィルタというのは状態推定*1をシミュレーションに基づいて実行する技でして、最近は「データ同化」なんてワードと絡めて有名になってきている気がしています。アイディアとしてはカルマンフィルタの非線形拡張&解析ベースで…

グラフのlegendの位置の調整について

R

グラフの凡例は当然描きたいグラフに応じてその”内容”を文字列で設定するわけですが、その凡例の「文字幅」に応じて表示する位置を調整しないといけないわけです。このやり方を最近理解したのでメモ。肝は「legend関数の返り値の$rect$wが凡例の幅になってる…

文字列変数として格納してあるHTMLをファイルに出力したい

R

うぇっぶには疎いのでやり方がよくわからず、有識者の方々にお伺いしたところ @teramonagi 同じことやったことがあるので、参考までに sink(file(paste(filename, "html", sep="."), open="w", encoding="UTF-8"));cat(HTML);sink()2012-04-05 00:17:29 via …

Language objectsまわりのメモ

R

ちょっと某会で「R Language Definition」を読んでて、「6 Computing on the language」担当になったのでそのためのメモ。 Language objectsについて 評価対象/評価式 typeof mode class is.language quote(x + y) language call call TRUE quote(x) symbol …

Windows 7にBemerを入れた時の作業メモ

備忘録。 texのインストール あべのり氏のインストーラを使用してインストール。とりあえず全部デフォルトの設定で。 ・・・としたら、beamerがはいっとった!!!*1以下の話はいらないけど、調べたんで残しておく。”警告消す”技は有効。 Beamerのインストー…

Expression Template(式テンプレート)を使って、遅延評価を実現する

C++

式構造自体を保存し、必要な際に評価するための枠組み。「Expression Template」でググると色々例が出てくるが、大体行列・ベクトルを扱ったものばかりなので、がんばって”スカラー”評価をする用のクラスを書いてみた。正しくなさげ・最適化の余地ありだと思…

型変換演算子を使って、戻り値の型によるオーバーロードを実現する

C++

型変換演算子を使うとC++の言語使用でサポートされていない「戻り値の型によるオーバーロード」を実現することができる。以下のコードではstruct X内にA・Bの両型での型変換演算子を用意しているのがミソ。 #include<iostream> using namespace std; //戻り値の型 stru</iostream>…

型変換演算子を使って、特定の型へのキャストを行う

C++

型変換演算子(Type conversion operator)をオーバーロードして特定の型へのキャストを実現できる。以下では適当に作ったPointer(ポインタ)型クラスのオブジェクトをNULLポインタのときにfalseが返るようにbool型へキャストしている。 #include<iostream> using name</iostream>…

R.NETとExcel-DNAでRで動くExcelアドインを作る

F# R C#

手元にあるVisual StudioがExpress版だと中々作るのが難しいExcelアドインですが、CodePlex Archiveというものを使うと驚くほど簡単にExcelアドインを.NET言語を使って作成できます。またさらに、.NET言語からR言語を呼び出すことを可能にするDLLを、我らが…

Microsoft Visual C# 2010 Express版で「 DLL プロジェクトからデバッグする」

C#

C#で作ったDLL(最終的にExcelから使用したい)をExcelから使用した状態でデバッグしたくて色々調べてたら、 「方法 : DLL プロジェクトからデバッグする」によると Express Edition では、外部の呼び出し元アプリケーションを指定できません。 Express Edit…

CRTP(Curiously recurring template pattern)を使って静的に多態性を実現する

C++

templateを使って静的に(コンパイル時に)仮想関数の仕組みを提供させようというもの。これを使うと仮想関数を呼びだすオーバーヘッドがなくなるので良いらしい。基本クラス(Base)をTemplateクラスとして宣言しておいて、派生クラスで自身を指定するのがミ…

線形・定数で値の補間を行う

R

欠損データを扱う場合や疎らにしか取得できないデータを扱う場合に、補間をしなければならない。そんな時には approx approxfun の関数を使う。名前から判断できるようにapproxfunの方は補間用の関数を返してくれて、これはとても使い勝手が良い。この関数だ…

関数の積分値を数値積分で算出する方法

R

関数の積分値を計算したい場合はその名もずばりの「integrate」関数というものがあるので、これを使う。例えばf(x) = xを0〜2の区間で積分したい場合は integrate(function(x){x}, lower = 0, upper = 2) とする。出力はlistで返却されるので、その中で必要…

Type Erasure(型消去)を使って何でも格納できる型を作成する

C++

要するにVBAでいうVariant型的な物をC++でどう作るのかというお話。この問題に対する設計の定石としては以下のようなクラスを設計することで対応する。 今回は”代入できる”という機能だけ作成。ここにtemplateで指定した型が持つべき関数を規定・制限したり…

テンプレートを使ったポリシー(Policy)による処理の切り替え

C++

コンパイル時に処理を切り替えたい場合に使用。Strategyパターンでは継承により処理を切り替えるが、こちらはテンプレートパラメーターで処理を切り替える。以下のサンプルコードは上述のLINK先のStrategyパターンのをもじって書いた。複数の特徴(戦略)を…

再帰テンプレートでべき乗を計算

C++

タイトル通り、templateを再帰的に使用することで関数チックな動作をさせる。0の場合を特殊化することで計算をうまく終了させている。また2つのtemplate引数がある場合の特殊化の書き方も覚えておきたい。 #include<iostream> using namespace std; //べき乗を計算 t</iostream>…

パラメータ化継承

C++

テンプレート引数で基本クラスを指定する手法らしい。発想としてはデコレーターパターンに近いような気がする。ここでは文字列の出力を太字・イタリック・あるいはその合成に指定できるようなサンプルコードを書く。 #include <string> #include<iostream> using namespace std</iostream></string>…

配列の要素数・最終要素を返す関数

C++

C++のテンプレートに関する本を斜め読みしているので、面白そうな奴だけでもまとめておこうと。 配列の要素数を返す関数 配列の最終要素を返す関数 を作成する。template引数に整数値を使用できるというところがポイント。 #include<iostream> using namespace std; //</iostream>…

Rcpp・inlineパッケージを使ってC++とRを連携させる

R C++

「R単体だと遅いので計算のボトルネックはC++で書くようにすればいいんじゃないか、せっかくそのためのRcppなる便利パッケージもあるし」とずっと思っていたものの毎回インストール方法を調べることすら億劫がってやっていなかったのですが、前回の記事に書…

compilerパッケージ使ってバイトコンパイルすればRでも十分イケる計算速度がでるんじゃないか?

R

最近発刊されたR言語使い必携の書 をパラパラ読んでいるのですが、そこにcompilerパッケージ*1の使い方も書いてあって、これを見た限りcompilerパッケージを使ってコンパイルした関数はコンパイルしてないそのままの関数よりも10倍程度速くなってるっぽい…

クオンツに興味がある人が読んでおくべき本

金融と関係ない業界で働いている方から 「クオンツという仕事があるのはわかったが、実際にどういうことをやっているのかよくわからない。もっとよく知りたいのでお勧めの書籍があれば紹介してほしい」 という旨のご質問を頂いたので私が読んだ中である程度…

コピーコンストラクタ/代入演算子周りのメモ

C++

いつも書く時には忘れてて、そのたびに簡単なサンプルコード書いてるのでいい加減メモっておく。代入演算子の多重定義(オーバーロード)の際にはセオリー通りreturn *thisでオブジェクトの参照を返すのも忘れないようにする。挙動のまとめとしては Hoge x:…

第20回R勉強会@東京(#TokyoR)でのTalk内容

脳みその体操のために指数分布とポアソン分布について第20回R勉強会@東京(#TokyoR) : ATNDで「指数分布とポアソン分布のいけない関係」というタイトルでお話させていただきました。その際の資料は以下です。 指数分布とポアソン分布のいけない関係 View m…

複数系列データを持つxtsクラスのオブジェクトを色付きで描画する方法

R

Twitter上でTwitter / @wdkz: @teramonagi 大仏様、あけましておめでとう ... via kwoutTwitter / @wdkz: @teramonagi 大仏様、あけましておめでとう ... via kwoutという質問をいただいたので、サンプルコード含めてここで回答します。今回は描画したいサン…

インポータンス・サンプリング(importance sampling)の有難味について

R

なんとなーく頭でわかっているつもりになっていたものをちゃんと手を動かしてやっておきたい。 まず、インポータンスサンプリングについて一言で説明しておくと 「ある量の期待値を計算したいという状況において、その確率変数が大きな値を取る個所を重点的*…

Rで2軸PLOT(y軸の左右に値を表記)する方法

R

以下のようにplot⇒par⇒plot⇒axis(4)と関数を順に書けばいいっぽい。 二個目に書いたplotの軸が第二軸としてaxis(4)により描画される。 x <- seq(0,13,0.01) plot(x, dexp(x), type = "l", ylab = "", col = 'red') par(new =T) plot(x, dnorm(x -10), type =…

誘導型モデルを使った信用リスクのある割引債の価格付け−2

前回の記事「誘導型モデルを使った信用リスクのある割引債の価格付け−1 - My Life as a Mock Quant」の続き。前回の記事の最後に書いたように、作成したプログラムのテストをしたいので今回はまず簡単にできるチェックとして デフォルトがないと仮定した場…