コロモゴロフ検定 ruby 実装 改訂版
include Math
#べき分布の分布関数
def f(x=2,alpha=1,xmin=1)z=1-(xmin**alpha)/(x**alpha)
return z
end#正規分布の分布関数
def f2(x,mean=1,sd=1)
0.5*(1.0+erf*1*exp(-2.0*j*j*x*x);
}
return sum;end
sortData=data.sort()
d=;
i=0;
n=data.length
sortData.each{|tmpdata|d[i]=(f2(x=tmpdata,mean=1.0,sd=2.0)-(i+1.0)/n).abs
i=i+1;
}
puts d.max
puts PD(d.max*sqrt(n));end
srand(100);
alpha=4.0;
xmin=2.0
c=
#1000.times{|i| c[i]=xmin/(rand()**(1.0/alpha)) }
#テスト用の正規分布発生
mu=1
sigma=31000.times{|i| c[i]=sigma*sqrt(-2*log(rand()))*cos(2*PI*rand())+mu; }
#検定
KStest(c)
*1:x-mean)/(sd*sqrt(2.0)))) end #KS test def KStest(data=[]) #Dの分布を定義 def PD(x=1.0) sum=0; 10000.times{|i| j=i+1; sum=sum+2.0*((-1)**(j-1