您的位置:首页 > 其它

[置顶] 【数据建模 卡方检验】了解卡方检验

2017-11-06 16:47 465 查看
卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,卡方值越大,越不符合;卡方值越小,偏差越小,越趋于符合,若两个值完全相等时,卡方值就为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,那么可得出结论,性别这个变量对其目标变量差异性显著。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: