同じDGPから来るデータの分布の平等を拒否:KSおよびカイ二乗検定は、私は次のコードを使用して2つの分布を生成
rand_num1 = 2*np.random.randn(10000) + 1
rand_num2 = 2*np.random.randn(10000) + 1
stats.ks_2samp(rand_num1, rand_num2)
私の質問は、なぜこれらの両方の分布は同じベースであることをテストしていないですkstestとchisquareテストで。
私は私が手2つのディストリビューションでkstest実行します。
Ks_2sampResult(statistic=0.019899999999999973, pvalue=0.037606196570126725)
二つの分布が統計的に異なっていることを意味します。
count1, bins = np.histogram(rand_num1, bins = 100)
count2, _ = np.histogram(rand_num2, bins = bins)
plt.plot(np.cumsum(count1), 'g-')
plt.plot(np.cumsum(count2), 'b.')
This is how the CDF of two distributions looks:私は二つの分布のCDFをプロットするために、次のコードを使用します。
私は次の取得カイ二乗検定を実行すると:CDFは同じに見えるし、なぜデータが同じ分布から来ているにもかかわらず
- :
stats.chisquare(count1, count2) # Gives an nan output stats.chisquare(count1+1, count2+1) # Outputs "Power_divergenceResult(statistic=180.59294741316694, pvalue=1.0484033143507713e-06)"
を、私は以下の3つの質問を持っていますkstestとchisquareは両方とも同じ分布仮説を棄却するか?ここに欠けているという根本的な前提がありますか?
- いくつかのカウントは0なので、最初のchisquare()はエラーを返します。正確な見積もりを得るためにすべてのカウントに0以外の数字を追加するだけでよいのですか?
- 非標準分布に対してテストするkstestがありますか?たとえば、平均が0でなく、std!= 1である法線がありますか?
奇妙な、本当に。私はちょうどK-Sの例を実行し、一貫して '(statistic = 0.011、pvalue = 0.57)'のような値を得ました。 'stats.ks_2samp(rand_num1、rand_num1)'(num2の場合も同様)の値はどれくらいですか?出力は '(0,1)'でなければなりません。 –
私は 'np.random.seed(12345)'を前に置いて、stats.ks_2samp(rand_num1、rand_num1)のPython 3.5.1 x64 Anaconda –
の '(statistic = 0.010、pvalue = 0.61)'でKSを返します。 p値= 1.0(期待値)を得る。あなたは正しいです - ほとんどの場合、私は有意でないp値を得ます。 私は特に私が投稿したケースに関係しています - 配布物のCDFは非常に似ていて、kstestとchisquareの両方のテストが異なっていることを暗示しています。 kstestが同じ(p-val> 0.5)と言っても、chisquareテストはそれらが同じであると拒否します。 – StreetHawk