在spark mllib 1.1版本中增加stat包,里面包含了一些统计相关的函数,本文主要分析其中的卡方检验的原理与实现:
一、基本原理
在stat包中实现了皮尔逊卡方检验,它主要包含以下两类
(1)适配度检验(Goodness of Fit test):验证一组观察值的次数分配是否异于理论上的分配。
(2)独立性检验(independence test) :验证从两个变量抽出的配对观察值组是否互相独立(例如:每次都从A国和B国各抽一个人,看他们的反应是否与国籍无关)
计算公式:
其中O表示观测值,E表示期望值
二、java api调用example
三、源码分析
1、外部api
通过Statistics类提供了4个外部接口
//Goodness of Fit test
def chiSqTest(observed: Vector, expected: Vector): ChiSqTestResult ={
ChiSqTest.chiSquared(observed, expected)
}//Goodness of Fit test
def chiSqTest(observed: Vector): ChiSqTestResult =ChiSqTest.chiSquared(observed)//independence test
d