スポンサーサイト
    Kapok の資産運用スポンサー広告
    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。
    --.--.-- / コメント:: - / トラックバック:: - / PageTop↑

    cernのrootの基本文法(1次元ヒストグラムと誤差棒付きグラフ etc.)
    Kapok の資産運用PCLinux・Mac
    解析ソフトのrootの基本事項をメモしておきます。
    自分用の覚書です。

    下記のコードは、株式リターンの季節変化を検証するためのマクロですが、その過程で

    ①1次元ヒストグラムを作る
    ②作ったヒストグラムにデータを入れる
    ③ヒストグラムを表示する
    ④ヒストグラムからパラメータを取得する
    ⑤エラーバー付きグラフの設定・表示

    を行います。




    1 #include<iostream>
    2 #include<fstream.h>
    3 using namespace std;
    4
    5 void month(){
    6
    7 // histogram set up
    8 char hname[16]={0};
    9 TH1D* mhis[12];
    10 for (int ii=0;ii<12;ii++){
    11 sprintf(hname,"h-%02d",ii+1);
    12 mhis[ii]=new TH1D(hname,hname,16,-20,20);
    13 mhis[ii]->GetXaxis()->SetTitle("return [\%]");
    14 }
    15
    16
    17
    18 // read data
    19 char line[256]={0};
    20 int yy,mm;
    21 double rtn; //return
    22 ifstream ifs("nikkei225_monthly_return.txt");
    23 while(ifs.getline(line,256)){
    24 stringstream st;
    25 st << line;
    26 st >> yy >> mm >> rtn;
    27 mhis[mm-1]-> Fill(rtn);
    28 }
    29 ifs.close();
    30
    31
    32
    33 // plot histogram
    34 TCanvas *c1=new TCanvas("c1","c1",0,0,1200,900);
    35 c1->Divide(4,3);
    36 //gStyle->SetOptStat("nerM");
    37 for(int ii=0;ii<12;ii++){
    38 c1->cd(ii+1);
    39 c1->cd(ii+1)->SetGrid();
    40 mhis[ii]->Draw();
    41 //mhis[ii]->Fit("gaus");
    42 }
    43
    44
    45
    46 // get histogram parameters
    47 double rmean[12]={0};
    48 double rerr[12]={0};
    49 double month[12]={0};
    50 double merr[12]={0};
    51 for(int ii=0;ii<12;ii++){
    52 rmean[ii]=mhis[ii]->GetMean();
    53 rerr[ii]=mhis[ii]->GetMeanError();
    54 month[ii]=ii+1;
    55 merr[ii]=0.5;
    56 }
    57
    58
    59
    60 // Graph set up
    61 TGraphErrors *gr = new TGraphErrors(12,month,rmean,merr,rerr);
    62 //gr->SetMarkerStyle(3);
    63 gr->SetTitle("month .VS. stock return");
    64 gr->GetXaxis()->SetTitle("month");
    65 gr->GetYaxis()->SetTitle("return[\%]");
    66
    67
    68 // plot Graph
    69 TCanvas *c2=new TCanvas("c2","c2",0,0,450,450);
    70 c2->cd(1);
    71 c2->cd(1)->SetGrid();
    72 gr->GetXaxis()->SetLimits(0.5,12.5);
    73 gr->Draw("ap");
    74
    75
    76
    77 }
    78


    7-14行目:
    1次元ヒストグラムを作ります。配列を使えば、複数のヒストグラムを同時に作ることができて便利です。12行目で3番目の引数がビンの数、4番目が最小値、5番目が最大値です。

    18-29行目:
    データの読み込みです。27行目で値をヒストグラムに入れています。

    33-42行目:
    ヒストグラムを表示するための枠を作り、分割やグリッド線のセット等の調整をしています。40行目で描いています。

    46-56行目:
    作ったヒストグラムで得られた平均値やその誤差を取得する事ができます。

    60-65行目:
    エラーバー付きグラフのセットアップです。61行目のように配列を突っ込みます。

    68-73行目:
    グラフを描きます。


    rootマクロはmonth.ccと名前をつけて保存し、
    root -l month.ccと打てば、結果は下図のようになります。

    rootsample.png
    ※クリックで拡大します。


    関連記事
    2014.05.08 / コメント:: 0 / トラックバック:: 0 / PageTop↑




    コメント:

    Secret


    Pagetop↑
    トラックバック:
    Pagetop↑
    Pagetop↑
    ブログ内検索
    プロフィール

    Kapok

    Author:Kapok


    個人投資家。1986年生まれのサラリーマンです。将来、資産運用で財産を築き、自由に暮らす事を夢見ています。

    ブログについて
    「資産運用について調べた事・考えたこと」をブログのメイン記事にしています。

    記事の情報の正確さには注意を払っていますが、保証はしません。投資判断は自己責任でお願いします。

    Kapok
    資産運用の方針
    資産運用は、下記の規定の範囲内で行っています。私Kapokが、どのような個人投資家であるかがよく分かるファイルになっています。

    Kapok の資産運用規定

    最近の記事・コメント

    アクセスカウンター
    ↑ポインタを合わせると、1週間のアクセス数推移が確認できます。

    Since Mar.17/2011
    Twitter
    おすすめ書籍
    ウォール街のランダム・ウォーカー 株式投資の不滅の真理
    Kapokの投資哲学に大きな影響を与えた1冊。個人投資家必読の書。

    スポンサー
    相互リンク
    資産運用全般

    株式個別銘柄投資 etc.

    投資信託 etc.

    債券・預貯金

    FX・派生商品 etc.

    その他 有価証券

    資産運用以外
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。