卡方检验的原理作用以及Python、R语言的实现方式

来源:互联网 发布:基于图的推荐算法 编辑:程序博客网 时间:2024/06/11 21:56

卡方检验(chi-square test)

或称X^2检验,主要作用是判定实际统计数据是否符合期望值,之后便可以演变出各种用法,例如:特征选择,变量各类的出现概率,变量是否相互有关联等。

主要公式:


右侧的X^2代表卡方值,卡方值=[(观测值O-期望值E)/期望值E]所有的组别的累加。


例子:


假设一果农场,今年水果产量记为观察值,往年产量记为期望值,所生成的四格表如上图所示。

计算:

卡方值X^2=(28-20)^2/20+(38-30)^2/30+(34-50)^2/50=10.45
因此卡方值的话是10.45
卡方值再与卡方鉴定表相比较,如果卡方值<鉴定表中值可以得到:
H0:行分类变量与列分类变量无关联
如果卡方值>鉴定表中值可以得到:
H1:行分类变量与列分类变量有关联


卡方鉴定表比较:


刚开始学的时候一直觉得这个表要自己算、、、搞了半天,查了半天资料原来表示固定的、、、好了,跑题了。
查这个表,我们首先得要知道自由度K,而K的值和我们的组别数量有关。如上图,我们有 芒果、苹果、水蜜桃 三种水果,也就是三种组别,因此自由度K=组别-1
而概率如果没有特别要求,我们一般使用的是5%,也就是0.05这一档。
查表可得上个例子的鉴定表数值是:5.99
卡方值X^2=10.45>5.99,因此得到H0:行分类变量与列分类变量无关联,可以得出今年产量不同于往年。
如果X^2<比较值,我们能得出H1:行分类变量与列分类变量有关联,也就是今年产量类似于往年。

总结:

卡方检验的一个典型应用场景是衡量特定条件下的分布是否与理论分布一致,比如:特定用户某项指标的分布与大盘的分布是否差异很大,这时通过临界概率可以合理又科学的筛选异常用户。另外,X^2值描述了自变量与因变量之间的相关程度:X^2值越大,相关程度也越大,所以很自然的可以利用X^2值来做降维,保留相关程度大的变量。

R语言卡方检测:

R语言自带卡方检测的方法,只要调用方法chisq.test(),会自行输出X-squared卡方值, df自由度, p-value概率

Python卡方检测:

相对而言就麻烦很多了。


环境搭建:

方法一:在Python下执行 pip install scipy,如果没有意外的话,自动配置一切环境。

方法二:下载相应的numpy.whl, scipy.whl文件,注意!这里的numpy是要+mkl模块的。然后在whl文件目录中打开控制台,输入pip install XXX.whl即可。(虽然本人安装过程跳出一堆红色错误,但是结果依旧能用= =)

问题:

有时候使用方法一时会跳出缺少vcvarsall.bat的提示(方法二不知道会不会),解决方案如下表格:

根据对应的Python版本,对应的包就行。

使用方法:
import scipyfrom scipy.stats import chisquareimport numpyobserv0=numpy.array([25,38,40,20,37,44])test0=scipy.stats.chisquare(observ0)print(test0)

0 0
原创粉丝点击