GSLとrubyで統計計算 (要約等計量とヒストグラム)

参考
http://rb-gsl.rubyforge.org/ref.html

とても便利そう。

要約統計量の計算

require 'rubygems'
require 'narray'
require 'gsl'

#ベクトル型
v=GSL::Vector[1..6]
v[2]=10
puts v

#平均
puts v.mean

#分散
puts v.sd

#最大値
puts v.max

#最小値
puts v.min

#中央値
puts v.sort.median_from_sorted_data

#中央値 ?
puts v.median

#25%点
puts v.sort.quantile_from_sorted_data(0.25)

#y=GSL::Stats::mean(x,1,x.length)
#puts GSL::Stats::mean(x)
#puts GSL::Stats::sd(x)

ヒストグラムの出力

 require 'rubygems'
 require 'narray'
 require 'gsl'

#乱数の初期化
#メルセンヌツイスタ、種は0 
 rng=GSL::Rng.alloc
#種を3に変えたい場合
 #rng=Rng.alloc(3)
 #rag=Rng.alloc(GSL::Rng::MT19937,3)

#正規分布発生
 data2=rng.gaussian(sigma=1,10000)
 puts data2 

#一様分布を発生したい場合
 #data1=rng.uniform(10)
 #puts data1

#ヒストグラムを作成
#箱の数50, -3から3の範囲
 h=GSL::Histogram.alloc(50,[-3,3])
 d= h.increment(data2)

#グラフを出力 xterm
 h.graph()


#フィッティングまでする場合。
 #sigma,mean,height,=h.fit_gaussian
 #x=GSL::Vector.linspace(-3,3,30)
 #y=height*GSL::Ran::gaussian_pdf(x-mean,sigma)
 #GSL::graph(h,[x,y])