scipy (scipy.stats.kstest) で Kolmogorov-Smirnov 検定を使用するのに問題があります。オンライン ドキュメント (http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kstest.html) には、scipy の 1 つに名前を付けるオプションと比較するためのサンプル、cdf が必要であると書かれています。 .stats 分布、cdf 引数 (およびいくつかのオプション値)
選択した累積分布関数が追加の引数を必要としない限り、すべて問題ないように見えます
teststat,pval=stats.kstest(sample,'norm')
(ここで、サンプルは値のリストです。)ただし、t、chisquaredなど、追加の引数を必要とする他のディストリビューションでは機能しません。それ以上の引数が与えられていない場合、それは正しく抗議します
teststat,pval=stats.kstest(sample,'t')
TypeError: _cdf() takes exactly 3 arguments (2 given)
引数が与えられた場合、
teststat,pval=stats.kstest(sample,'t',24)
それは文句を言う
TypeError: cdf() argument after * must be a sequence, not int
これが何を意味するのか正確にはわかりませんが、int 24 ではなく、1 つの int のシーケンス (24) が必要なようです。でも:
teststat,pval=stats.kstest(sample,'t',24)
TypeError: cdf() argument after * must be a sequence, not int
ディストリビューションを手動で定義しても、これが呼び出し可能であるとは感じられないため、より良い結果は得られません。
numargs = stats.t.numargs
[ df ] = [0.9,] * numargs
rv = stats.t(df)
teststat,pval=stats.kstest(sample,stats.t.cdf(numpy.linspace(0, numpy.minimum(rv.dist.b, 3)),df))
TypeError: 'numpy.ndarray' object is not callable
機能させるにはどうすればよいですか?(Google で kstest 関数またはさまざまなエラー メッセージを検索しても、この質問に答えるのに役立つ情報は何も見つかりません。)
ありがとう