0

次のような2つの分布を比較しています。

group1 = [ 0, 0, 0, 1, 11, 11, 13, 12]

group2 = [ 0, 0, 0, 0, 5, 11, 18, 14]

私の分布には多くの要素がなく、カイ2乗が最良のアプローチであるかどうかはわかりませんが、私が読んだことから、それは私が見たテストの中でまだ最高だと思います。

問題は、どのカイ2乗を試しても、異なる結果が得られることです。

そのため、私が使用する場合:

import numpy as np

import scipy.stats.mstats as mst
mst.chisquare(np.array(group1), np.array(group2))

答えは次のようになります。(8.874603174603175, 0.26178489290758555)

私が使用する場合:

import scipy.stats as stat
stat.chisquare(np.array(group1), np.array(group2))

私は取得します:(nan, nan)

そして、両方のグループで0であるすべての要素を削除して、グループがそのように見えるようにすると、次のようになります。

group1 = [ 1, 11, 11, 13, 12]

group2 = [ 0, 5, 11, 18, 14]

使用:

mst.chisquare(np.array(group1), np.array(group2))

私に与えるでしょう:(8.874603174603175, 0.06431137995249224)

私はこの曖昧さに非常に混乱しています。私の分布の真のp値は何ですか?

4

1 に答える 1

1

scipy.stats.mstatsモジュールのバグだと思います。mstatsマスクされた配列(無効な値を持つ配列)をより適切に処理することになっていますstats。ただし、この場合、自由度(DOF)の数は正しくカウントされないようです。カイ2乗統計(の最初の戻り値chisquare)は、ゼロを削除する前後で同じであるため、変更できるのはDOFのみです。

両方の配列の0を削除した後でも、カイ2乗統計を計算するには、の頻度で除算する必要があるため、無限大になることに注意してくださいgroup2group2配列では、Wikipediaを参照してください)。mstatこれらの無効な値を削除しますが、それに応じてDOFを適応させません(要素が少ないため、要素の違いによってdofを減らす必要があります)。

それが少し明確になることを願っています。バグレポートをscipyディスカッションリストに送信することを検討してください。

于 2012-12-17T14:18:45.087 に答える