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

scipy.optimizeのメモ

方程式の根を探したり、目的関数を最少化したり。 一瞬で忘れるのでメモ。特にargsを(10,)みたいに書くのを覚えておけ。 # -*- coding: utf-8 -*- from scipy.optimize import brentq from scipy.optimize import fmin def f(x, a): return (x - a)**2 if __…

第15回R勉強会@東京(Tokyo.R#15)でお話させていただきました

R

第15回R勉強会@東京(Tokyo.R#15) : ATNDでお話させていただきました。Rで時系列をサクサク捌くならxts(zoo)パッケージがいいですよというお話。 xtsパッケージで時系列解析 View more presentations from teramonagi ご参考 xtsライブラリを使ってみる…

コンストラクタ内で例外が起こった場合の処理について

C++

C++でコンストラクタ内で例外が起こった場合、デストラクタが呼ばれないのでコンストラクタ内で確保したメモリはコンストラクタ内できちんと解放しておかないといけない。 C++ではNULL(0)ポインタに対するdeleteが問題ないことになっているのでそれをうまく…

学習の記録−10

F#

アクティブパターン パターンとして使用できる関数を定義する機能。あくまで関数。 let (|Even|Odd|) n = if n % 2 = 0 then Even else Odd let evenOrOdd n = match n with | Even -> printfn "%d is Even" n | Odd -> printfn "%d is Odd" n > evenOrOdd 2…

学習の記録−9

F#

F#でのOOP(クラスの書き方)について プロパティの定義 まずはプロパティの書き方。慣れないと接頭辞のprt.*1が結構気持ち悪い感じ。以下のコードでは性別を判別共有体として作っておいて、それをメンバ変数(sex,F#ではそう呼ばない?)として持たせておく…

bitsetを使う

C++

STLのbitsetの使い方がいまいちよくわからなかったので、動作確認も含めてまとめる。 #include <bitset> #include <iostream> using namespace std; int main() { // initialize 8bit bitset as 1 bitset<8> bs((long) 1); cout << "original : " << bs << endl; //make all bi</iostream></bitset>…

TopCoder用のなんか

C++

自分用。随時更新数値を文字列化 #include <sstream> #include <string> using namespace std; string IntToString(int number) { stringstream ss; ss << number; return ss.str(); } 1文字を数値化 int CharToInt(char x) { return atoi(&x); }</string></sstream>

警告「warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。」を回避する

このエラーの直し方についてはエラーコードでググルといろいろと情報が出てくるが、QuantLibのヘッダーファイルはたくさんあって全部直すのめんどくさいし、置換ミスって動かなくなるのも嫌なので、警告を表示させないようにすることで対応。やり方は【プロ…

学習の記録−8

F#

配列の定義 リスト[]の代わりに[||]と書く。List.toArray関数を使えばリストから生成することも可能。 > let x = [|1..3|];; val x : int [] = [|1; 2; 3|] > List.toArray [1..3];; val it : int [] = [|1; 2; 3|] 配列のアクセス Listと違ってランダムアク…

グラフのX軸に日付を入れる

R

金融系なんで、時系列データ良く扱うわけですがグラフのX軸に日付を入れる方法を毎回忘れるのでメモ。肝はaxis.Date関数。こんな感じでコードを書く。 x <- Sys.Date() + 1:1000 y <- cumsum(rnorm(1000)) par(xaxt="n") plot(x, y, main = "Title",xlab = "…

Cox比例ハザードモデル

R

Cox比例ハザードモデルについて勉強したくなったのでまとめ。パラメーター推計に関心があるので、そこを詳しくやる一方、他の点については省略。パラメーター推計以外にも興味がある場合は参考LINKを参照してください。Cox比例ハザードモデルはハザードレー…

学習の記録−7

F#

リスト F#でのリスト、以下のように書く。List.headで頭、List.tailで頭以外の要素を取得できる。 > let lst = 1::2::3::[];; val lst : int list = [1; 2; 3] > List.head lst;; val it : int = 1 > List.tail lst;; val it : int list = [2; 3] > let f ls…

FKFパッケージを使ってカルマンフィルタ(Kalman Filter)を実行する

R

カルマンフィルタ自体は以下の状態空間モデルを前提としている。...状態方程式 ...観測方程式 (,は標準正規分布に従う乱数)観測可能(取得可能)なデータはで、それを使って状態方程式(状態変数)の推定や,等の各パラメーターを推定したり、状態変数の予…

学習の記録−6

F#

ファイルの内容を読んでリストにするには let contents = Array.toList(System.IO.File.ReadAllLines @"input.txt");; みたいに書く。内容を画面に出したい時は contents |> List.iter (printfn "%s");; contents |> List.iter (fun x -> printfn "%s" x);; …

Memento パターン

Memento パターン - Wikipediaオブジェクトを以前の状態に(ロールバックにより)戻す能力を提供、要するにわかりやすい例だとCtrl+Zですね。Caretakerが戻すための状態(Memento)の保持を行い、Originatorが自分の状態を元に戻す仕事を担当するというように役…

学習の記録−5

F#

モジュールの定義方法について モジュール名とモジュールの計算結果として使用する型の名前が同じ場合を.NETは許さないので、モジュールの箇所に [<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>] を記述する。これで等から利用する場合、[モジュール名+Module]という名前になるので共存できる。モジュ</compilationrepresentation(compilationrepresentationflags.modulesuffix)>…

学習の記録−4

F#

ボクシング 変数を無理やりvariant型に倒すイメージ。関数boxを使う。元の型での演算はできなくなる。応用例としては型調べる関数作るのに使うっぽい。型名を隠した操作をする時に活躍。 > let x = box 42;; val x : obj = 42 > unbox<int> x;; val it : int = 42</int>…

学習の記録−3

F#

再帰はなるべく末尾再帰(引数が大きくなっても展開式の大きさが一定になるような再帰)を使って書く。 //普通の再帰 let rec fact n = if n > 1 then n * fact (n - 1) else n;; //末尾再帰 let fact_tailrec n = let rec fact n res = if n > 1 then fact …

学習の記録−2

F#

F#では二進数を書くときは0bを頭につける。 > 0b111;; val it : int = 7 符号なし8bitの整数を表すbyte型もある。使いたい時は語尾にuyをつける。 > 0b0001uy;; val it : byte = 1uy > 5uy;; val it : byte = 5uy ビットごとの演算は &&&:AND |||:OR ^^^:XOR…

Observer パターン

Observer パターン - Wikipedia観察対象の状態が変化すると、観察者に対して通知される。Mediator パターンと良く似ているが、パターンの目的や視点は異なる。MediatorパターンではColleague役の間を取り持って、いろいろ処理を融通してやるために状態変化の…

学習の記録−1

F#

以下の式は等価 let x = y in z (fun x -> z) y let f = fun x -> x+10 let f x = x + 10 let f x y = x + y let f = fun x y -> x+y let f = fun x -> fun y -> x+y

小技(無名関数をネストした際の挙動)

R

最近F#のお勉強をしているのだが、そこで(fun x -> fun y -> x + y)みたいに書くと二変数関数のような挙動になるのが自分の直感とちょっとあってないなとつぶやいたら「Rでもできるぜ、そういうの」と言われたのでメモがてら書いておく。 > ff <- function(x…

パッケージ作成の私的まとめ

R

基本以下の参考リンク・スライドを見とけって話。 10分で分かるRパッケージの作り方 View more presentations from yokkuns http://www.okada.jp.org/RWiki/index.php?cmd=read&page=%BB%E4%C5%AA%A5%D1%A5%C3%A5%B1%A1%BC%A5%B8%BA%EE%C0%AE%CB%A1&word=bui…

Mediator パターン

Mediator パターン - Wikipediaオブジェクト(Colleague)間の通信を仲介者(Mediator)を通して行うことによって、オブジェクト同士の結合強度を下げる・モジュール間の依存度を下げることができる。以下の例はMediatorとしてチャットルームの管理者的なもの…

Facade パターン

Facade パターン - Wikipediaごちゃごちゃなクラス群を使用するための処理を、Facade(建物の正面の意味らしい)という窓口作ってそこに集約することで見やすくする感じ。あんまりおもしろくない。以下のコードはWikipediaのJAVA版をC++に直したもの。 #inclu…

投資信託「eMAXIS」のデータを分析する−3(ポートフォリオのパフォーマンス編)

R

前回までの記事 投資信託「eMAXIS」のデータを分析する−1(データ取得関数作成編) - My Life as a Mock Quant 投資信託「eMAXIS」のデータを分析する−2(簡単な分析編) - My Life as a Mock Quant 前回までで個別資産クラスのファンドデータを見たので、…

Chain of Responsibility パターン

Chain of Responsibility パターン - Wikipedia複数のオブジェクトを鎖のようにつないでおき、そのオブジェクトの鎖を渡り歩いて目的の処理ができるまでたらいまわしにする。ここではNoSupport→LimitSupport→OddSupportクラスのオブジェクトの順に渡り歩き処…

投資信託「eMAXIS」のデータを分析する−2(簡単な分析編)

R

前回の記事:投資信託「eMAXIS」のデータを分析する−1(データ取得関数作成編) - My Life as a Mock Quant前回書いたeMAXISのデータ取得関数をもうちょっと使いやすいように書き換えた。そしてついでにPerformanceAnalyticsパッケージの使い方を覚えたかっ…

投資信託「eMAXIS」のデータを分析する−1(データ取得関数作成編)

R

「eMAXIS」という手数料の安い素晴らしいインデックスファンドを三菱UFJ投信さんが出しておられてて、サイトをよくみると今までの基準価額がcsvで取得できるようになっているではないか!…ということでそれを自動的に引っ張ってきてRのデータに倒す関数書い…

Visitor パターン

Visitor パターン - Wikipediaデータ構造(Element)と処理(Visitor)の分離を実現。これにCompositeパターンを組み合わせると面白い。 ConcreteVisitorの追加は容易な一方、ConcreteElementの追加は難しい。ダブルディスパッチ - Wikipediaも関係があるので合…