【数据建模 卡方检验】了解卡方检验

卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,卡方值越大,越不符合;卡方值越小,偏差越小,越趋于符合,若两个值完全相等时,卡方值就为0,表明理论值完全符合。

注意:卡方检验针对分类变量。
(1)提出原假设:
H0:总体X的分布函数为F(x)
如果总体分布为离散型,则假设具体为H0:总体X的分布律为P{X=xi}=pi, i=1,2,…
(2)将总体X的取值范围分成k个互不相交的小区间A1,A2,A3,…,Ak,如可取
A1=(a0,a1],A2=(a1,a2],…,Ak=(ak-1,ak),
其中a0可取-∞,ak可取+∞,区间的划分视具体情况而定,但要使每个小区间所含的样本值个数不小于5,而区间个数k不要太大也不要太小。
(3)把落入第i个小区间的Ai的样本值的个数记作fi,成为组频数(真实值),所有组频数之和f1+f2+…+fk等于样本容量n。
(4)当H0为真时,根据所假设的总体理论分布,可算出总体X的值落入第i 个小区间Ai的概率pi,于是,npi就是落入第i个小区间Ai的样本值的
理论频数(理论值)。
(5)当H0为真时,n次试验中样本值落入第i个小区间Ai的频率fi/n与概率pi应很接近,当H0不真时,则fi/n与pi相差很大。
基于这种思想,皮尔逊引进如下检验统计量(下图公式),在0假设成立的情况下服从自由度为k-1的卡方分布。

这里写图片描述

差异的量化:用卡方检验来衡量某因子对目标变量的偏好。
原理:如果某因子跟目标变量独立,(即该因子对目标变量影响较小)则目标变量在该因子上的分布是均匀的,即卡方值应该较小。用来衡量类别性变量分布的差异性。

这里写图片描述

chisqDf = AllData[['GENDER_CD','CHURN_CUST_IND']]
grouped = chisqDf['CHURN_CUST_IND'].groupby(chisqDf['GENDER_CD'])##以GENDER_CD(性别)对CHURN_CUST_IND(是否流失,0,1)进行分组
count = list(grouped.count()) # 按性别(男,女,未知)分组,计算每组有多少个CHURN_CUST_IND,也就是统计男性人数,女性人数,未知人数
churn = list(grouped.sum()) # 按性别(男,女,未知)分组,对每组内所有的CHURN_CUST_IND求和,也就是统计男性中流失人数,女性中流失人数等
chisqTable = pd.DataFrame({'total':count,'churn':churn})
chisqTable['expected'] = chisqTable['total'].map(lambda x: round(x*0.101))
chisqValList = chisqTable[['churn','expected']].apply(lambda x: (x[0]-x[1])**2/x[1], axis=1)
chisqVal = sum(chisqValList)
print chisqVal

得出同样结果:32.6579
当然可以引入相关的包来计算卡方值:

from scipy.stats import chisquare
print chisquare(chisqTable['churn'],chisqTable['expected'])

首先我们根据之前给出数据总的人群流失率为10.10%,假设性别对目标变量(客户是否流失)没有影响,两者相互独立,那么男性,女性分布的流失率应该也在10.10%左右,即可算出其期望流失数。再根据真实的流失数算出卡方值为32.66,。通过查表,我们得知:在自由度为2,置信度为0.05下的卡方分为点为5.99.其32.66大于5.99,那么可得出结论,性别这个变量对其目标变量差异性显著。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页