2

私は一連のデータを持っており、対応するヒストグラムに対数正規分布を当てはめました。 まず、対数正規関数の最適なパラメータを計算し、ヒストグラムと対数正規関数をプロットします。これは非常に良好な結果を与える:フィッティング関数対データにコルモゴロフ - スミルノフ検定を実行するときPythonのp値が非常に低いKolmogorov-Smirnov適合テストの良さ

Histogram in blue, fitting function in red.

import scipy as sp 
import numpy as np 
import matplotlib.pyplot as plt 

num_data = len(data) 

x_axis = np.linspace(min(data), 
       max(data),num_data) 

number_of_bins = 240 
histo, bin_edges = np.histogram(data, number_of_bins, normed=False) 

shape, location, scale = sp.stats.lognorm.fit(data) 

plt.hist(data, number_of_bins, normed=False); 


# the scaling factor scales the normalized lognormal function up to the size 
# of the histogram: 
scaling_factor = len(data)*(max(data)-min(data))/number_of_bins 

plt.plot(x_axis,scaling_factor*sp.stats.lognorm.pdf(x_axis, shape, 
       location, scale),'r-') 

# adjust the axes dimensions: 
plt.axis([bin_edges[0]-10,bin_edges[len(bin_edges)-1]+10,0, histo.max()*1.1]) 

はしかし、私はE-のオーダーで(あまりにも低いp値を取得します32):私はミスを犯したところ

lognormal_ks_statistic, lognormal_ks_pvalue = 
     sp.stats.kstest(
     data, 
     lambda k: sp.stats.lognorm.cdf(k, shape, location, scale), 
     args=(), 
     N=len(data), 
     alternative='two-sided', 
     mode='approx') 

print(lognormal_ks_statistic) 
print(lognormal_ks_pvalue) 

我々はフィッティングはかなり正確であるプロットから見るので、これは、正常ではない...誰もが知っているのですか?

ありがとうございます! チャールズ

答えて

1

これは単にデータが正確に対数正規でないことを意味します。ヒストグラムに基づいて、K-S検定のための多くのデータポイントが使用できます。これは、それらのパラメータを使用した対数正規分布に基づいてデータが均等に異なる場合、K-S検定はデータが対数正規から引き出されないことを示します。

データはどこにありますか?それが有機的なソース、または対数正規分布からの乱数を具体的に描く以外のソースからのものであれば、フィットが大きく見えても、私は非常に小さいp値を期待します。これは確かにフィットがあなたの目的に十分に良い限り、問題ではありません。

関連する問題