之前已经介绍的变量分析:
①相关分析:一个连续变量与一个连续变量间的关系。
②双样本t检验:一个二分分类变量与一个连续变量间的关系。
③方差分析:一个多分类分类变量与一个连续变量间的关系。
本次介绍:
卡方检验:一个二分分类变量或多分类分类变量与一个二分分类变量间的关系。
如果其中一个变量的分布随着另一个变量的水平不同而发生变化时,那么两个分类变量就有关系。
卡方检验并不能展现出两个分类变量相关性的强弱,只能展现两个分类变量是否有关。
/ 01 / 数据挖掘的技术与方法
数据挖掘的方法分为描述性与预测性两种。
两类方法均是基于历史数据进行分析。
描述性模型用于直观反映历史状况,为后续分析提供灵感。
预测性模型从历史数据中寻找规律,并用于预测未来。
描述性数据挖掘常用算法:聚类分析、关联规则分析。
预测性数据挖掘常用算法:线性回归、逻辑(Logistic)回归、神经元网络、决策树、支持向量机。
/ 02 / 卡方检验
01 列联表
列联表是一种分类汇总表。
将待分析的两分类变量中的一个变量的每一个类别设为列变量。
另一个变量的每一个类别设为行变量,中间对应着不同类别下的频数。
下面以书中的数据为例,即探索分类变量是否违约与分类变量是否破产的关系。
使用的数据可以通过阅读原文去获取。
代码语言:javascript复制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)
输出结果。
这里并不好判断之间的关系,下面转换为频率。
代码语言:javascript复制# div:转换列表为频率数据
cross_table_last = cross_table.div(cross_table['All'], axis=0)
print(cross_table_last)
输出结果。
这里可以看出差异并不是很大,但是我们还不能直接得出结论。
只能说有较大的可能,是否破产与是否违约不相关。
接下来通过卡方检验,来确定结论,使其具有统计学意义。
02 卡方检验
卡方检验在于比较期望频数和实际频数的吻合程度。
实际频数就是单元格内实际的观测数量,实际频率的分母为总样本数。
期望频数为变量相互独立时的频数,通过期望频率计算得来,期望频率由实际频率得来。
卡方检验的原假设是期望频数等于实际频数,即两个分类变量无关,备择假设则是有关。
通过公式计算得出卡方统计量,其值服从卡方分布。
卡方分布图如下,横轴为卡方统计量值,纵轴为P值,n为自由度。
本次案例我个人觉得自由度应该为1,不知为何书中说自由度为2???
下面用Python对数据进行卡方检验。
代码语言:javascript复制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个数就确定了,它不能自由变化。
说实话还是有点晕...