データ解析講習会 2017年春

このページは現在編集中です。参考にしないでください。

2017年春に気象学研究室で実施した、 B4向けデータ解析基礎講習会の補助資料。 文責は納多にあります。 質問、コメントなどはいつでもどうぞ。

電脳Rubyプロジェクト

電脳Rubyプロジェクトホームページ

データ解析、可視化、モデル計算・開発、などなど… 地球流体研究必須ツールたち!

日本発のプログラミング言語である、 オブジェクト指向スクリプト言語 Ruby を使っています。

主な製品

描画ライブラリDCL *1 のruby用ラッパー

RubyDCLよりも、さらに直感的にプログラミングができる!(西本比)

RubyDCLを下で呼んでます。

インストール

地球流体電脳倶楽部謹製品 Debian パッケージ集に沿ってすすめてね。

チュートリアル

すてきなチュートリアルが本家ページにあるのでそれを使って勉強しよー!

GPhys, GGraphチュートリアル (新バージョン)

GPhys, GGraphチュートリアル (旧バージョン)

RubyDCL/GGraphでお絵描きの基本概念

RubyDCLを使うと…

まっさらな作図用紙に手書きでグラフを描くつもりになってみると…

  1. 用紙を持ってくる --- DCL.gropn(1): 1はX-window, 2はPDF-file, 4はGtk
  2. 用紙を取り出す --- DCL.grfrm:図を書く領域を初期化 または DCL.grfig:同じ領域に次の図を書く
  3. 用紙のどこに書くか決める --- DCL.grsvpt(領域左位置,右,下,上)
  4. 縦軸と横軸の値の範囲を決める --- DCL.grswnd(横軸最小値,最大値,縦軸最小値,最大値)
  5. どんな図にするか決める --- DCL.grstrn(地図番号): 1:直交一様座標、2:縦軸対数座標、、、10:円筒地図座標系、、などなど
  6. よっしゃ、ここに書くぞ! --- DCL.grstrf:領域および変換の決定をする。
  7. あ、軸書かなきゃ --- DCL.uxaxdv(..)とか。
  8. ほんならこの値を書くで! --- トーンとか。。
  9. 描けた!図を仕舞う --- DCL.grcls

GPhys/GGraphを使うと…

  • まずは、require "numru/ggraph"; include NumRu
  • 1と9は書く必要がある。
  • 2~7のステップは省略可。もちろん、自分で好きに設定してもよい(特に3や5は決めたくなってくる)。
    • 2の設定は、GGraph.set_fig "new_frame"=>..,"no_new_fig"=>..で書ける
    • 3、4、5の設定は、GGraph.set_fig "viewport"=>[..],"window"=>[..],"itr"=>1とそれぞれ書ける。
    • 7の軸の設定は、GGraph.set_axes ...を使うと簡単にできる。
  • 詳しい設定方法は、NumRu::GGraphを見よう!
  • 自分好みの図を書く場合には、RubyDCLで明示しないといけないこともあります。

おまけ

このような自分好みの設定を、適当な名前(SampleGGraph.rbとか)で保存しておくと便利。

#--
colormap = 13   # カラーマップの選択

psname = "Fig/"+$0.split('.')[0] # PSファイル保存名(rbファイルのベース部分)
p psname

### <=== GGraph
DCL.sgscmn(colormap)  # カラーマップを指定

DCL.swcset 'fname',psname  # 保存するファイル名を指定

iws = (ARGV[0]||(puts 'Workstation ID(I)?'; DCL.sgpwsn; gets)).to_i
DCL.gropn iws

DCLExt.sg_set_params 'lcntl'=>false,'lfull'=>true
DCLExt.uz_set_params 'indext1'=>3,'indext2'=>5\
  ,'indexl1'=>5,'indexl2'=>5,'inner'=>-1

DCL.uzfact 0.6
#DCL.sldiv 'y',2,1

### ===> GGraph

Library References

お役立ちLinks

解析に便利なRubyパッケージ

線形計算数値ライブラリ

関数ライブラリ

  • Ruby/GSL
    • GNU Scientific Library (GSL)のRubyラッパー
    • GSL reference manual Japanese translationも参考に。
    • 使用例
      • 有意性の検定

        #<<< student t test >>>
        # t検定を行なう
        require "gsl"
        
        def student_test(rcor,n,p=0.05)
          nu=n-2
          t0 = (rcor * Math::sqrt( nu /( 1.0 - rcor*rcor ))).abs
          st = GSL::Cdf.tdist_Qinv( p/2.0, nu )
        
          if t0>=st
            state = true
          else
            state = false
          end
        
          return t0,st,state
        end
        
        #<<< significance level >>>
        # 標本数nに対して有意水準pを満す相関係数を求める
        def significance_level(n,p=0.05)
          nu=n-2
          st = GSL::Cdf.tdist_Qinv(p/2.0,nu)
          r = st/Math::sqrt(nu+st**2)
        
          return r
        end
      • スプライン補間

        spline = Spline.alloc("cspline", xa, ya)
        xi = xa[0]
        for i in 0..n2-1
          ya2[i]=spline.eval(xa2[i])
        end

高速フーリエ変換(FFT)

EOF解析

  • GAnalysis::EOF
    • GPhysインストールしたら入っているパッケージ

長期再解析データについて

提供している主な機関とそのデータ

その他

xorg.confの設定(backing storeをonにする)

/etc/X11/xorg.confを開いて(なければ新規作成)、以下の内容を書き込む。 ほんで再起動。

Section "Device"
    Identifier    "Configured Video Device"
EndSection

Section "Monitor"
    Identifier    "Configured Monitor"
EndSection

Section "Screen"
    Identifier    "Default Screen"
    Monitor        "Configured Monitor"
    Device        "Configured Video Device"
    Option        "Backingstore" "on"
EndSection

Footnotes

*1 地球流体電脳倶楽部ライブラリ(Dennou Club Library): 地球流体関係者が長年にわたり蓄積してきたFORTRAN版、データ解析・可視化などのライブラリ。研究お役立ちツールもあるよ。