为服从自由度为k的卡方分布,记作:

或者记作

二、卡方检验

χ2检验是以χ2分布为基础的一种假设检验方法,主要用于分类变量之间的独立性检验。

其基本思想是根据样本数据推断总体的分布与期望分布是否有显著性差异,或者推断两个分类变量是否相关或者独立。

一般可以设原假设为 :观察频数与期望频数没有差异,或者两个变量相互独立不相关。

实际应用中,我们先假设原假设成立,计算出卡方的值,卡方表示观察值与理论值间的偏离程度。

卡方值的计算公式为:

其中A为实际频数,E为期望频数。卡方值用于衡量实际值与理论值的差异程度,这也是卡方检验的核心思想。

卡方值包含了以下两个信息:

1.实际值与理论值偏差的绝对大小。 2.差异程度与理论值的相对大小。

上述计算的卡方值服从卡方分布。根据卡方分布,卡方统计量以及自由度,可以确定在原假设成立的情况下获得当前统计量以及更极端情况的概率p。如果p很小,说明观察值与理论值的偏离程度大,应该拒绝原假设。否则不能拒绝原假设。

三、卡方检验实例

某医院对某种病症的患者使用了A,B两种不同的疗法,结果如表1,问两种疗法有无差别?

表1 两种疗法治疗卵巢癌的疗效比较

组别

有效

无效

合计

有效率(%)

A组

19

24

43

44.2

B组

34

10

44

77.3

合计

53

34

87

60.9

可以计算出各格内的期望频数。

第1行1列: 43×53/87=26.2

第1行2列: 43×34/87=16.8

第2行1列: 44×53/87=26.8

第2行2列: 4×34/87=17.2

先建立原假设:A、B两种疗法没有区别。根据卡方值的计算公式,计算:

算得卡方值=10.01。

得到卡方值以后,接下来需要查询卡方分布表来判断p值,从而做出接受或拒绝原假设的决定。

首先我们明确自由度的概念:自由度k=(行数-1)*(列数-1)。 这里k=1.然后看卡方分布的临界概率表,我们可以用如下代码生成:

import numpy as np

from scipy.stats import chi2

import pandas as pd

# chi square distribution

percents = [ 0.95, 0.90, 0.5,0.1, 0.05, 0.025, 0.01, 0.005]

df =pd.DataFrame(np.array([chi2.isf(percents, df=i) for i in range(1, 30)]))

df.columns = percents

df.index =df.index+1

pd.set_option('precision', 3)

df

查表自由度为1,p=0.05的卡方值为3.841,而此例卡方值10.01>3.841,因此 p < 0.05,说明原假设在0.05的显著性水平下是可以拒绝的。也就是说,原假设不成立。

四、ChiMerge分箱算法

ChiMerge卡方分箱算法由Kerber于1992提出。

它主要包括两个阶段:初始化阶段和自底向上的合并阶段。

1.初始化阶段:

首先按照属性值的大小进行排序(对于非连续特征,需要先做数值转换,比如转为坏人率,然后排序),然后每个属性值单独作为一组。

2.合并阶段:

(1)对每一对相邻的组,计算卡方值。

(2)根据计算的卡方值,对其中最小的一对邻组合并为一组。

(3)不断重复(1),(2)直到计算出的卡方值都不低于事先设定的阈值,或者分组数达到一定的条件(如最小分组数5,最大分组数8)。

值得注意的是,小编之前发现有的实现方法在合并阶段,计算的并非相邻组的卡方值(只考虑在此两组内的样本,并计算期望频数),因为他们用整体样本来计算此相邻两组的期望频数。

下图是著名的鸢尾花数据集sepal-length属性值的分组及相邻组的卡方值。最左侧是属性值,中间3列是class的频数,最右是卡方值。这个分箱是以卡方阈值1.4的结果。可以看出,最小的组为[6.7,7.0),它的卡方值是1.5。

如果进一步提高阈值,如设置为4.6,那么以上分箱还将继续合并,最终的分箱如下图:

卡方分箱除了用阈值来做约束条件,还可以进一步的加入分箱数约束,以及最小箱占比,坏人率约束等。

来源|数据分析sas和python

python卡方分箱_Python评分卡建模—卡方分箱相关推荐

  1. python不同时间周期k线_Python量化交易基础讲堂-股票分笔数据跨周期处理

    <Python实战-构建基于股票的量化交易系统>小册子主要侧重于 Python 实战讲解,但在内容设计上提供了前置基础章节帮助读者快速掌握基础工具的使用.同时我们会持续更新一些关于Pyth ...

  2. python snmp采集交换机信息_Python采集12星座信息,分析出12星座的各个特点

    一个微博热搜引发的故事 一.故事从这里开始 二.搞事情第一步:搜集图片 三.搞事情第二步:展示图片 四.搞事情第三步:推广链接 五.搞事情第四步:统计分析 1.数据处理2.数据筛选3.统计各天的频率4 ...

  3. python评分卡建模-卡方分箱(2)之代码实现

    卡方值计算 计算卡方值的函数需要输入numpy格式的频数表.对于pandas数据集,只需使用pd.crosstab计算即可,例如变量"总账户数" 与 目标变量 "是否坏客 ...

  4. 卡方 python_Python评分卡建模—卡方分箱

    原标题:Python评分卡建模-卡方分箱 今天主要给大家讲讲卡方分箱算法ChiMerge.先给大家介绍一下经常被提到的卡方分布和卡方检验是什么. 一.卡方分布 卡方分布(chi-square dist ...

  5. 【菜菜的sklearn课堂笔记】逻辑回归与评分卡-用逻辑回归制作评分卡-分箱

    视频作者:菜菜TsaiTsai 链接:[技术干货]菜菜的机器学习sklearn[全85集]Python进阶_哔哩哔哩_bilibili 分训练集和测试集 from sklearn.model_sele ...

  6. 评分卡模型的种类及流程——数据准备、WOE分箱以及模型评估

    评分卡介绍 评分卡的种类--ABC卡 FICO信用分 1.FICO信用分简介 2.FICO信用分的评判因素 数据准备 1.需要排除异常行为 2.解释指标的选择 3.目标变量的确立 变量分箱--WOE转 ...

  7. python 去除nan inf_Python实现半自动评分卡建模(附代码)

    作者:Summer Memories 个人公众号:风控汪的数据分析之路 知乎专栏:小鑫的数据分析笔记 这次分享一个自己写的python脚本,可以实现半自动化的评分卡建模.运行脚本时需要input已经预 ...

  8. python woe分箱_python数据处理--WOE分箱

    数据分箱的重要性离散特征的增加和减少都很容易,易于模型的快速迭代: 稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展: 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1 ...

  9. 评分卡模型(一)评分卡建模实战

    评分卡模型(一)评分卡建模实战 小P:我看你做的这些数据挖掘,虽然预测结果挺准的,但是完全不知道怎么来的啊 小H:其实在风控领域有个很流行的评分卡模型,可以很直观的告诉你什么特征加分,什么特征减分,每 ...

最新文章

  1. 深度学习-超参数调整总结
  2. 从数据结构角度分析foreach效率比for循环高的原因
  3. java文件与流_Java文件和流深入
  4. 看!闲鱼在ServiceMesh的探索和实践
  5. Android屏幕计算正方形,Android Camera 正方形预览(二)
  6. MySQL深度剖析之数据在磁盘上存储(2021)
  7. Springsecurity之UserDetails
  8. 《JAVA并发编程的艺术》之 Java并发编程实战
  9. EndNote自定义引用格式和参考文献格式
  10. 用u盘装linux系统的操作全程图解,笔者教你用u盘装系统的操作全程图解
  11. 计算机表格斜杠怎么打,excel表格斜杠怎么分隔打字(怎么在excel里一个表格内划斜线并添加文字)...
  12. solr配置索引库启动tomcat报错记录及解决
  13. 中华小子剧情介绍,中华小子在线观看
  14. 轻松玩转“项目管理” 群硕软件PMS正式发布
  15. “神一般存在”的印度理工学院到底有多牛?
  16. Parallels Desktop克隆出来的虚拟机拥有相同的SSH KEY的修改方法
  17. 河南计算机与科学研究生招生,2021年河南理工大学计算机科学与技术(081200)硕士研究生招生信息_考研招生计划和招生人数 - 学途吧...
  18. 图像处理(三)——中国传统工艺画风格的图像转换应用
  19. js根据name值获取元素
  20. 虚拟机无法启用 虚拟化引擎 Inter VT-x/EPT,mumu模拟器报错Hyper-v 开启,无法启动模拟器

热门文章

  1. c语言 mac windows,C语言获取windows系统mac列表
  2. pycharm右侧的竖线是干什么用的?
  3. POJ - 1990 MooFest
  4. 爬取数据是违法的吗_网络爬虫违法吗?
  5. html正则表达式登录验证,用正则表达式验证登录页面的输入内容
  6. Android动画-实现雪花飞舞动画效果
  7. Python实现彩带飘落和“跑马灯”效果
  8. PXE高效批量网络装机实现Kickstart无人值守安装
  9. Unity3D引擎之高级渲染技术
  10. Java---面向对象编程三大特征【封装、继承、多态】及super关键字、方法重写/覆盖(不定期更新补充)---B站韩顺平老师视频总结