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

学習の記録−11

F#

F#コツコツ再開したい。 Visual Studio Express 2012 for web入れてF#ろうとしてた時に「fsi.exeがねぇよ! ヽ(`Д´)ノ 」と思ったら C:\Program Files (x86)\Microsoft SDKs\F#\3.0\Framework\v4.0にあった。リハビリ開始。こんなんいける(いけたんだっけぇ…

タグ・ディスパッチ(tag dispatch)とトレイツ(traits)

C++

ふつーにテンプレート使って型に応じた処理をオブジェクト指向っぽく書くと、静的にポリモーフィズムれるんだけど、そのほかにも掲題の「タグ・ディスパッチ」って手法もあるらしい。 タグ付けして処理をグルーピングさせるために使うイメージ。有名所だとST…

お勉強したことメモ

主に私が良く使うC++と違う点についてハマった点とか、新しく学んだ事をつらつらとメモって置く。 結局、プロパティ(property)はディスクリプタ型の一部つーことらしい。 __new__は__init__(コンストラクタ)より先に呼ばれる 親クラスのコンストラクタは…

データフレーム(data.frame)を作る時、データを縦じゃなくて横に並べたいんです、僕は。

R

意外とよくハマって、毎回思い出してるのでメモっておく。 要するにt関数を使ってベクトルを行列化(1行○列)しておけばよい。 > data.frame(x=Sys.Date(),y = 1:5) x y 1 2012-12-14 1 2 2012-12-14 2 3 2012-12-14 3 4 2012-12-14 4 5 2012-12-14 5 > data…

RStudioでRcpp使えるようになっとった

R C++

基本 RStudio and Rcpp | RStudio Blog を見ればよろしい。 私は環境を更新するついでに、Rに関して一旦全部更地にしてから行った(windows7 64bit)。 まずR本体・Rtools(C++のコンパイラとかが入っている)・RStudioそれぞれを以下よりインストール R本体(2…

隠れマルコフモデルで異常検知(R Advent Calendar2012)

R Advent Calendar2012、2日目です。 Tokyo.R主催者である偉大なる我らがグル(尊師)@yokkunsが Tokyo r15 異常検知入門 from Yohei Sato というトークをしていた事に触発されて、R言語で使える”RHmm"パッケージを用いて異常検知してみましたよっていうお話…

Google Geocoding APIとGoogle Static MAP APIを使って指定した住所(文字列)を地図上に表示をさせる

R

@mikado_hito(若おっさん)の資料 TSP and Geocoding on R from sleipnir002 に触発されて、住所(複数)を地図表示をさせるコードを書いてみたって話。Rやパッケージのバージョン依存性が結構あって、上記スライドのコードのままでは動かなかったので適当に…

ggplot2でヒストグラム+密度関数のオーバープロット

R

良く使うのでメモ。正規分布(平均1)だとこんな感じ。 library(ggplot2) x <- rnorm(1000)+1 #plot qplot(x, geom = "blank") + geom_histogram(aes(y = ..density..),fill="dodgerblue",colour="black") + stat_function(fun=dnorm,color="brown4",size=2…

組み合わせ(コンビネーション)を出力する関数

R

以下のコードで「A,B,C,D,E」から3つ選ぶ組み合わせの全通りが計算される。 > combn(LETTERS[1:5],3) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] "A" "A" "A" "A" "A" "A" "B" "B" "B" "C" [2,] "B" "B" "B" "C" "C" "D" "C" "C" "D" "D" [3…

時系列のラグを計算してくれる関数

R

embed関数のHelpにあるDescriptionを読んでも DescriptionEmbeds the time series x into a low-dimensional Euclidean space. となんのこっちゃいという感じだったが、実際に実行してみると > x <- 1:20 > embed(x,5) [,1] [,2] [,3] [,4] [,5] [1,] 5 4 3 …

レプリカ交換モンテカルロ法(パラレル・テンパリング)による混合ガウス分布に従う乱数の生成

マルコフ連鎖モンテカルロ法(メトロポリス法)による混合ガウス分布に従う乱数の生成 - My Life as a Mock Quant でやった内容の欠点とそれを補うためにもうちょっと高尚な手法である拡張アンサンブル法の1つ「レプリカ交換モンテカルロ法」を用いてやりま…

マルコフ連鎖モンテカルロ法(メトロポリス法)による混合ガウス分布に従う乱数の生成

平均(1,1),(-1,-1)となるような2つのガウシアンを3:7の割合で混ぜ合わせた2次元混合ガウス分布に従う乱数をマルコフ連鎖モンテカルロ法の1つであるメトロポリス法で生成するコードを書いた。 実行すると↓のように混合比率から若干(-1,-1)のガウシアンの方…

モンテカルロ法で条件付期待値計算をする際の試行錯誤−2(Rao-Blackwellization法(条件付きモンテカルロ法))

問題設定 以前試行錯誤した内容 モンテカルロ法で条件付期待値計算をする際の試行錯誤−1 - My Life as a Mock Quant の続き。R言語の書籍「Rによるモンテカルロ法入門」 の4.6「Rao-Blackwellization法と脱条件化」をよく読んでみると私が抱えている問題に…

rbinomのprob引数は複数評価してくれるっぽい

R

以下の二つの書き方は等価っぽい。 x <- rbinom(900, 10, prob = seq(0.001, 0.9, 0.001)) y <- sapply(seq(0.001, 0.9, 0.001), function(x) rbinom(1, 10, prob = x)) 実際、平均と分散はほぼ一致。 > c(mean(x), sd(x)) [1] 4.524444 2.976449 > c(mean(y…

俺なりの事後分布からのサンプリング

事後分布からのサンプリングを、ブートストラップを駆使して「俺なりのやり方☆2012」でやってみましたという話です。 このやり方の手法名とかこの手の話に詳しい書籍等ご存じな親切な方がいらっしゃいましたらTwitter: @teramonagiまたはコメント欄でご連絡…

EMアルゴリズムによる混合分布のパラメーター推定の解析計算&実装例 from 「Rによるモンテカルロ法入門」

問題設定 R言語の書籍「Rによるモンテカルロ法入門」 のEMアルゴリズムに関連した「練習問題5.14」をpthonの練習がてらEMアルゴリズム構築までの数式もメモりながら解いてみたというお話。問題設定としては という混合分布(分布から確率、分布から確率でサン…

モンテカルロ法で条件付期待値計算をする際の試行錯誤−1

問題設定 ここではある時点における、適当な確率変数の条件付期待値を計算する事を考えたい。例えば適当な確率空間を設定し、以下のような条件付き期待値の計算を行うとする*1。 ・・・(A) ここでは確率測度の下で以下の確率微分方程式に従うものとしている…

幾何ブラウン運動に従うモンテカルロのパスを作る

numpyを使って結構美しく書けたのでメモ。結果はmatplotlibを使って描画。 ↓幾何ブラウン運動に従うモンテカルロの生成コード # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt #株価の確率微分方程式に従うサンプルパスを生成 …

同名で返り値のみ異なる関数を作成する

C++

普通にやると出来ない。回避策は二つ templateの特殊化 クラスの変換演算子 #include <iostream> #include <string> using namespace std; //templateの特殊化で対応 template <class T> T SameTypeReturn(); template <> double SameTypeReturn(){return 4.4;} template <> string Same</class></string></iostream>…

QR分解したい

R

行列のQR分解をやりたいと思って調べたら、qr関数ってのがその名の通りあるのでこれだけでやってくれるんじゃないかと期待したがqr関数の結果はqrクラスのオブジェクトになってて、これを qr.Q関数:Q行列の取得 qr.R関数:R行列の取得 のそれぞれの関数に食わ…

plyrパッケージの使い方メモ

R

データの整形・集計に超便利なのでまとめておいた。RPubs - Plyrパッケージの使い方メモ

「Rで学ぶ『構造型モデル de 倒産確率推定』 at 第25回R勉強会@東京」のソースコードはこちらになります

第25回R勉強会@東京(#TokyoR) : ATNDでお話させていただいた で使用したソースコード一式をUPしておきます。コピペ&改変は勿論自由ですが、自己責任でご使用下さい。なお、以下のパッケージ scales reshape2 xts ggplot2 が必要なので別途install.packag…

ggplo2で時系列(単系列・複数系列)を描画したい

R

単系列編 とりあえずのサンプルデータ x <- data.frame(Date=Sys.Date()+1:10, Value=rnorm(10)) これをPLOTするには以下のようにするのが良さげかな。 scalesパッケージは日付のフォーマットいじり(date_format関数)をするのに必要だとの事。 library(sca…

各コンテナ要素の『平均・分散・標準偏差』を計算するコード

たまに必要になるんだけど、毎回書き直しているのでメモっておく。 テストコードの結果はR言語と揃ってるのは確認済。 #include <iostream> #include <cmath> #include <vector> #include <list> #include <numeric> template <template<class T, class Allocator = std::allocator<T> > class Container> double mean(Container<double> & x) { return std::accumula</double></template<class></numeric></list></vector></cmath></iostream>…

確率分布からのサンプリングをヒストグラムで美しく描く

R

この前のエントリーのために作ったグラフが結構気に入ったのでテンプレとして残しておく。例えば対数正規分布するデータを1000個用意して、 x <- exp(rnorm(1000)) これをPLOT。 library(ggplot2) qplot(x, geom="blank") + geom_histogram(aes(y=..density.…

「最大対数尤度のバイアス補正」について from 書籍:データ解析のための統計モデリング入門

データ解析に携わる人間なら確実に読んでおきたい一冊 通称「久保本」・「緑本」をざっと一通り目を通したけど、「読むだけじゃ力にならないよ、ちゃんと手を動かすよ!」というわけで$4.5.2"最大対数尤度のバイアス補正"を実際にコードを書いてやってみた・…

(参照 | 値)を返す関数からの戻り値を(参照 | 値)型で受け取るときにコピーコンストラクタが発動するか否かの表

C++

ポインタだと混乱しないけど、参照だとよく頭がごっちゃになるのでメモっとく。 受取/関数 値返し 参照返し 値 ○ ○ 参照 ○ × (コピーコンストラクタが発動するケース○・しないケース×) 結局オブジェクトのコピーを作りたくないときは”参照戻し”の関数から…

人口密度の高い箇所を明るくした世界地図を作りたい

R

前回「地図をいじりたい - My Life as a Mock Quant」の続き10m-cultural-vectors | Natural Earthにある「Urban Areas」のデータ(人が密集して住んでる都市エリアのデータ)を世界地図の上に重ねてPLOTする方法。まずは毎度のパッケージのロード。 library…

地図をいじりたい

R

やりたいこと Mapping the World’s Biggest Airlines – Spatial.lyにあるような感じで株価の騰落率でも出そうと思ったんだけど、地理情報(地図情報?)の扱いに不慣れ過ぎていきなりは無理だと判断したので、まずは地図情報系の扱いに慣れて行こうと思った…

snowfallパッケージを使って、並列処理をやってみた

R

並列計算用のsnowパッケージをより簡単に使えるようにしたパッケージで、結構前からあったっぽい。私はたまたま最近R-bloggersに上がった記事を見て知りました。このパッケージを使うとsfApply(snowfall Applyの略っぽい)等の関数を用いる事でR言語に元々…