コロモゴロフ-スミルノフ検定 ruby 実装 改訂版

コロモゴロフ検定 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=3

1000.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