卡方检验基于sparkml采用Java语言开发
什么是卡方检验
卡方检验,是用途非常广的一种假设检验方法,它在分类资料统计推断中的应用,包括两个率或两个构成比比较的卡方检验;多个率或多个构成比比较的卡方检验以及分类资料的相关分析等。
卡方检验主要有以下两种作用:
1) 皮尔森独立性检验(Pearson’s independence test)
验证从两个变量抽出的配对观察值组是否互相独立。例如:例如:每次都从A国和B国各抽一个人,看他们的反应是否与国籍无关。
2)适度检验(Goodness of Fit test)
实际执行多项式试验而得到的观察次数,与虚无假设的期望次数相比较,称为卡方适度检验,即在于检验二者接近的程度,利用样本数据以检验总体分布是否为某一特定分布的统计方法。
如何进行卡方检验
经典卡方检验计算
分析当前有问题的日期的spec_seq的rowvalue和没有问题的日期的spec_seq的rowvalue的
日期:2020-12-24
spec_seq:687
rowValue1 | rowValue2 | 求和 | 占比 | |
---|---|---|---|---|
坏(observed) | 2000 | 2100 | 4100 | 4100/7976=0.514042 |
好(expected) | 1923 | 1953 | 3876 | 3876/7976=0.485958 |
好和坏和rowvalue无关
预计好坏rowvalue情况分布
rowValue1 | rowValue2 | |
---|---|---|
坏 | (2000+1923*0.514042=2016.587 | (2100+1953)*0.51404213=2083.413 |
好 | (2000+1923)*0.485958=1906.413 | (2100+1953)*0.48595787=1969.587 |
rowValue1 | rowValue2 | |
---|---|---|
坏 | (2000-2016.58728)^2/2016.58728=0.136437 | 0.132061 |
好 | 0.144322 | 0.139693 |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ac7fnsqL-1648018686141)(https://bkimg.cdn.bcebos.com/formula/49d1544c8587743f9184e68ffea96f48.svg)]
卡方值:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zhK1rBjL-1648018686143)(https://bkimg.cdn.bcebos.com/formula/8831b7d7bd338d1ddce4f768286d2044.svg)]=∑(观察-期望)^2/期望=0.136437+ 0.144322+0.132061+0.139693=0.552513
pValue=0.457293【具体计算不知】
和rowValue的值无关
sparkml 默认皮尔森计算方式
scale=4100/3876=1.05779153
// 计算(observed-expected)^2/expected
if (scale == 1.0) {
stat + method.chiSqFunc(obs, exp)
} else {
stat + method.chiSqFunc(obs, exp * scale)
}
}
stat | |
---|---|
rowValue1 | (2000-1923*(4100/3876))^2/(1923*(4100/3876))=0.57276 |
rowValue2 | (2100-1953*(4100/3876))^2/(1953*(4100/3876))=0.563962 |
statistic=0.57276+0.563962=1.136722
/*
shape=1(自由度)/2=0.5 x=1.1367221014568334/1.05779153=1.074618268
代码计算
shape=1(自由度)/2=0.5 x=0.5683610507284167
*/
pValue=0.28634603095173183【具体计算不知】
什么时候用卡方检验
一个定类变量的变化,如性别的变化与另外一个变量的变化(定类或者定序)好像有关系,这个时候要判断到底有没有关系,需要做一个显著性检验,但是这个时候的显著性检验没有办法做T检验,因为这两个变量没有整体分布,无法计算T值,因此要计算卡方值
或者定序)好像有关系,这个时候要判断到底有没有关系,需要做一个显著性检验,但是这个时候的显著性检验没有办法做T检验,因为这两个变量没有整体分布,无法计算T值,因此要计算卡方值