我正在查看spark的示例HypothesisTestingKolmogorovSmirnovTestExample.scala,但似乎无法弄清楚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.这是有意义的-当我试图让它不拒绝Null时,这是有意义的:
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)这也会返回:
Very strong presumption against null hypothesis: Sample follows theoretical distribution.怎么回事?CDF和数据是完全相同的分布,不是吗?为什么Null会被拒绝?我假设/做错了什么?
发布于 2018-01-11 22:21:59
在什么场景下,您可以使用KS测试:
KS检验是对数据进行拟合分布后要进行的优度拟合检验之一。
这个测试将告诉你数据的识别分布是否正确。我们需要用p值来验证这一点。
如果p值> 0.05,那么您为数据设置的分布就很好。P值小于0.05,则需要用不同的分布来拟合数据。
拒绝Null意味着,p值< 0.05:数据不适合给定的分布
https://stackoverflow.com/questions/41618289
复制相似问题