Python数据科学:卡方检验
之前已经介绍的变量分析:
①相关分析:一个连续变量与一个连续变量间的关系。
②双样本t检验:一个二分分类变量与一个连续变量间的关系。
③方差分析:一个多分类分类变量与一个连续变量间的关系。
本次介绍:
卡方检验:一个二分分类变量或多分类分类变量与一个二分分类变量间的关系。
如果其中一个变量的分布随着另一个变量的水平不同而发生变化时,那么两个分类变量就有关系。
卡方检验并不能展现出两个分类变量相关性的强弱,只能展现两个分类变量是否有关。
/ 01 / 数据挖掘的技术与方法
数据挖掘的方法分为描述性与预测性两种。
两类方法均是基于历史数据进行分析。
描述性模型用于直观反映历史状况,为后续分析提供灵感。
预测性模型从历史数据中寻找规律,并用于预测未来。
描述性数据挖掘常用算法:聚类分析、关联规则分析。
预测性数据挖掘常用算法:线性回归、逻辑(Logistic)回归、神经元网络、决策树、支持向量机。
/ 02 / 卡方检验
01 列联表
列联表是一种分类汇总表。
将待分析的两分类变量中的一个变量的每一个类别设为列变量。
另一个变量的每一个类别设为行变量,中间对应着不同类别下的频数。
下面以书中的数据为例,即探索分类变量是否违约与分类变量是否破产的关系。
使用的数据可以通过阅读原文去获取。
import pandas as pd
df = pd.read_csv('accepts.csv')
# crosstab:交叉表,margins:显示总和
cross_table = pd.crosstab(df['bankruptcy_ind'], df['bad_ind'], margins=True)
print(cross_table)
输出结果。
这里并不好判断之间的关系,下面转换为频率。
# div:转换列表为频率数据
cross_table_last = cross_table.div(cross_table['All'], axis=0)
print(cross_table_last)
输出结果。
这里可以看出差异并不是很大,但是我们还不能直接得出结论。
只能说有较大的可能,是否破产与是否违约不相关。
接下来通过卡方检验,来确定结论,使其具有统计学意义。
02 卡方检验
卡方检验在于比较期望频数和实际频数的吻合程度。
实际频数就是单元格内实际的观测数量,实际频率的分母为总样本数。
期望频数为变量相互独立时的频数,通过期望频率计算得来,期望频率由实际频率得来。
卡方检验的原假设是期望频数等于实际频数,即两个分类变量无关,备择假设则是有关。
通过公式计算得出卡方统计量,其值服从卡方分布。
卡方分布图如下,横轴为卡方统计量值,纵轴为P值,n为自由度。
本次案例我个人觉得自由度应该为1,不知为何书中说自由度为2???
下面用Python对数据进行卡方检验。
from scipy import stats
# chi2_contingency:卡方检验,chisq:卡方统计量值,expected_freq:期望频数
print('chisq = %6.4fn p-value = %6.4fn dof = %in expected_freq = %s' %stats.chi2_contingency(cross_table))
输出结果。
卡方值为2.9167,P值为0.5719,取显著性水平为0.05,表明没有理由拒绝原假设。
即两个分类变量无关,是否违约与是否破产无关系。
/ 03 / 总结
这里总结一下有关自由度的知识。
作为一个学机械的,自由度对我而言应该就只有6个。
三个旋转和三个移动,对于X、Y、Z轴。
但是统计学上却并不是这样的。
①自由度是指当以样本的统计量来估计总体参数时,样本中独立或能自由变化的数据的个数。
②自由度就是能独立变化的数据数目,只要n-1个数确定,第n个数就确定了,它不能自由变化。
说实话还是有点晕...
- Ubuntu 17.04 x64 安装 Docker CE 初窥 Dockerfile 部署 Nginx
- 基于Metronic的Bootstrap开发框架经验总结(4)--Bootstrap图标的提取和利用
- WebView 的 input 上传照片的兼容问题
- 在 Linux 上搭建Jekyll静态博客
- 基于Metronic的Bootstrap开发框架经验总结(5)--Bootstrap文件上传插件File Input的使用
- 网易严选 App 感受 Weex 开发
- MBR勒索木马再度来袭:GoldenEye分析
- Docker Compose 1.18.0 之服务编排详解
- 基于Metronic的Bootstrap开发框架经验总结(6)--对话框及提示框的处理和优化
- 基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理
- Ubuntu 17.04 x64 安装 Docker CE
- 这是一篇清晰易懂的 Rxjava 入门教程
- 可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI
- 简单好用的阴影库 ShadowLayout
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法