2016-05-19 8 views
2

私はPython spark-mlで正常性テストを行っていましたが、私が何を見たのかはバグです。Kolmogorov Smirnov Spark(Python)でのテストは機能しませんか?

ここにセットアップがあります。データセットは正規化されています(範囲-1、1)。

私はヒストグラムを行うと、私は明らかにデータが正常でないことがわかります。

>>> prices_norm.histogram(10) 

([-1.0, -0.8, -0.6, -0.4, -0.2, 0.0, 0.2, 0.4, 0.6, 0.8, 1.0], 
[226, 269, 119, 95, 52, 26, 8, 2, 2, 5]) 

私はKolmgorov-Smirnov検定を実行すると、私は次のような結果を得る:

>>> testResults = Statistics.kolmogorovSmirnovTest(prices_norm, "norm") 
>>> print testResults 

Kolmogorov-Smirnov test summary: 
degrees of freedom = 0 
statistic = 0.46231145770077375 
pValue = 1.742039845709087E-11 
Very strong presumption against null hypothesis: Sample follows theoretical distribution. 

Kolmgorov-Smirnov検定は、帰無仮説(H0)を次のように定義します。データは指定された分布http://www.itl.nist.gov/div898/handbook/eda/section3/eda35g.htm)に従います。

この場合、p値は非常に低いので、帰無仮説を棄却する必要があります。これは明らかに正常ではないので、理にかなっています。

なぜ、その後、それは言うん:

Sample follows theoretical distribution 

は、この間違っていないですか?サンプルが理論的な分布に従わないと言ってはいけませんか?何か不足していますか?

+1

私は 'サンプルは理論的な分布に従っていると思います.'では帰無仮説を再記述しています。 –

+0

データが実際に正規分布に従っている場合の出力は何ですか? –

+0

@siwica、あなたは正しいです、それはただ帰無仮説を再演していただけです。 –

答えて

1

これは狂気私を運転していたので、私は直接ソースコードを見に行きました:

object NullHypothesis extends Enumeration { 
    type NullHypothesis = Value 
    val OneSampleTwoSided = Value("Sample follows theoretical distribution") 
} 

:コードが正しいある

git://git.apache.org/spark.git 
spark/mllib/src/main/scala/org/apache/spark/mllib/stat/test/KolmogorovSmirnovTest.scala 

、帰無仮説は次のように設定されています文字列メッセージの言葉遣いは、帰無仮説を再掲したです。

Very strong presumption against null hypothesis: Sample follows theoretical distribution. 
               ________________________________________ 
                    H0 

おそらく、言い回しは両方の方法で解釈できるので混乱します。しかし確かに正しいです。

関連する問題