python 卡方检验_特征选择二:卡方检验法

本文介绍了使用Python进行卡方检验来判断类别变量间相关性,并在特征选择中的应用。通过计算卡方统计量和P值,确定特征与目标变量的相关性。文中提供了一个实例,展示了如何在Python中执行卡方检验,并对比了卡方值和P值在选择特征时的差异。最后,讨论了卡方检验与IV值在评估特征重要性上的异同。
摘要由CSDN通过智能技术生成

      卡方检验可以用于判断两个类别变量的相关性是否显著。在分类的应用场景中可以用卡方检验选择特征,特征与目标变量的相关性越显著说明特征越重要,预测力越强。

      一、先简单介绍一下卡方检验的步骤。假设y为目标变量,取值为好和坏,x为特征变量取值为高、中、低。

      1、先计算y和x的实际值列联表,如下图:

0362b67b72d94bd854625e1fef575493.png

      2、假设y和x不相关,总体y中坏占比=254/1831=13.87%。根据原假设,计算出假设值列联表:

a993688ef4054d76b88285832cfeed22.png

      3、计算卡方统计量:

28564bcf161c93c9dcae7155d91045bd.png

      其中,A是实际值,T是假设值,卡方分布的自由度=(x属性个数-1)*(y属性个数-1)=(3-1)*(2-1)&#

Python中,当样本量未知且涉及到项分布的假设检验时,我们通常会遇到泊松比例(Poisson proportion)的情况,比如计算比例的置信区间或做卡方检验(Chi-squared test)。其中最常用的是Agresti-Coull修正(也叫Jeffreys或BCa方)和Clopper-Pearson不调整方。 **Agresti-Coull修正**(通过正态近似): ```python from scipy.stats import norm, binom import numpy as np # 假设观察到的成功次数k和失败次数n-k k = ... # 成功次数 n_k = n - k # 总样本数减去成功次数 # 计算修正后的样本大小 n_corr = n + 4 n_corr = n + (1 / 3) # 置信水平 confidence_level = 0.95 # 使用修正后的样本量和泊松率估计得到置信区间 z_score = norm.ppf((1 + confidence_level) / 2) margin_of_error = z_score * np.sqrt(binom.pmf(k, n_corr, p=0.5) * (1 - binom.pmf(k, n_corr, p=0.5)) / n_corr) p_value = binom_test(k, n, p=0.5, alternative='two-sided', correction=True) ci_lower = p_value / 2 ci_upper = 1 - ci_lower print(f"置信区间: ({ci_lower:.2f}, {ci_upper:.2f})") print(f"P值: {p_value:.4f}") ``` **Clopper-Pearson方**(不使用正态近似): ```python from scipy.stats import beta # 计算Beta分布的上、下界 lower_bound = beta.ppf(alpha=(confidence_level + 0.5) / 2, df1=k + 1, df2=n_k + 1) upper_bound = beta.ppf(alpha=1 - (confidence_level + 0.5) / 2, df1=k + 1, df2=n_k + 1) print(f"Clopper-Pearson置信区间: ({lower_bound:.2f}, {upper_bound:.2f})") ``` 在这里,`alpha`通常对应于置信水平的对角线距离,例如对于95%置信水平,`alpha`是0.025。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值