2017-01-12 92 views
2

我正在通過示例HypothesisTestingKolmogorovSmirnovTestExample.scala查看spark,並且似乎無法找出CDF方面。Spark mllib.stat.Statistics - kolmogorovSmirnovTest CDF

他們的榜樣:

import org.apache.spark.{SparkConf, SparkContext} 
import org.apache.spark.mllib.stat.Statistics 
import org.apache.spark.rdd.RDD 

val data: RDD[Double] = sc.parallelize(Seq(0.1, 0.15, 0.2, 0.3, 0.25)) // an RDD of sample data 
val myCDF = Map(0.1 -> 0.2, 0.15 -> 0.6, 0.2 -> 0.05, 0.3 -> 0.05, 0.25 -> 0.1) 
val testResult2 = Statistics.kolmogorovSmirnovTest(data, myCDF) 
println(testResult2) 

這將返回:

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

這是有道理的 - 什麼不就是當我試圖把它不拒絕零:

val data: RDD[Double] = sc.parallelize(Seq(0.1, 0.15, 0.2, 0.3, 0.25)) // an RDD of sample data 
val myCDF = Map(0.1 -> 0.1, 0.15 -> 0.15, 0.2 -> 0.2, 0.3 -> 0.3, 0.25 -> 0.25) //CDF matching the data distribution 
val testResult2 = Statistics.kolmogorovSmirnovTest(data, myCDF) 
println(testResult2) 

This ALSO returns:

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

什麼給了? CDF和數據是完全相同的分佈,是不是?爲什麼會被拒絕?我在做什麼/做錯了什麼?

回答

0

什麼情況下,你可以使用KS檢驗:

KS檢驗是數據的擬合分配後要執行的擬合優度試驗之一。

這個測試會告訴你所識別的數據分佈是否正確。我們需要用p值驗證它。

如果p值> 0.05,那麼您爲數據設置的分佈很好。 p值是< 0.05那麼你需要適合不同分佈的數據。

拒絕空指的p值爲< 0.05:數據不適合給定分佈