微信扫码
添加专属顾问
我要投稿
在上次的spark分析中,我遇到一个问题就是数据预处理,用决策树思维做了特征feature的重要性评估,后续还做了指标间是否独立的验证!今天针对指标间是否相关,即特征选择部分做个快速探索实践来Get!
看效果
这个值按照0.05显著水平,自由度是(6-1)(11-1)= 50,查询的临界值是68.667;而我们计算的卡方统计量大于68.667,则拒绝原假设,即品类和价格是有关联的,不是独立的!
如上下是转了编码后的数据,问题是判断品类、颜色是否存在关联!
话原理
好的,在验证变量的关联性上,我们关注几个点
1)变量是否是连续变量
如上的品类、颜色就不是连续变量,我们认为是分类变量
什么是连续变量?
数值型变量:比如表示某种数量、大小或程度,如身高、体重、温度、时间
时间型变量:它可以被细分为无限个单位
距离型变量:两个地点之间的距离可以被精确地测量
比率型变量:比率、百分比、持续时间等
2)评估方法
卡方分析(平方和):可以用户评估2个分类变量关联程度或独立性,为什么?
因为分类变量是乱序的,他编码后为1或2,并不代表这个特征的数值大小!而卡方分布是通过统计频数,和数值的大小无关!【需要理解】
方差分析:可用于评估比较组别之间的平均值是否关联或独立性
相关系数:用户评估2个连续连续变量关联程度,为什么?
因为分类变量是乱序的,他编码后为1或2,并不代表这个特征的数值大小!而相关系数是通过数值大小趋势来判断的,所以不能用于两个分类变量去评估独立性!如果一个是连续变量,一个是分类的,则用相关系数来评估
3)卡方分析(平方和)
Chi-square test,其中Chi是指χ,有读卡,凯,柴等
卡方检验(Chi-square test)是一种用于评估两个分类变量之间的关联性的统计方法。它的基本思想是比较观察到的频数和期望的频数之间的差异,从而确定这两个变量是否独立。
1. 建立假设:
零假设(H0):两个分类变量之间不存在关联,即它们是相互独立的。
备择假设(H1):两个分类变量之间存在关联,它们不是相互独立的。
2. 计算期望频数:
首先,对每个分类变量进行计数,得到它们在样本中出现的频数。
然后,计算每个分类变量组合的期望频数,这是在零假设成立的情况下,我们期望在每个组合中观察到的频数。期望频数的计算基于样本中的总体比例和每个分类变量的边际频数。
3. 计算卡方统计量:
4. 判断关联性:
最后,通过卡方统计量的大小和对应的显著性水平(通常是显著性水平为0.05),来决定是否拒绝零假设。
如果卡方统计量大于临界值,则拒绝零假设,认为两个分类变量之间存在显著的关联。
如果卡方统计量小于临界值,则无法拒绝零假设,不能得出两个分类变量之间存在关联的结论
1)显著性水平为0.05如何理解?
在零假设成立的情况下进行多次统计,大约会有5%的检验结果和零假设相矛盾
可以理解,如果设置为0.01,则检验结果的置信度会更高即为99%
2)自由度如何理解?
自由度大,则在计算期望频数时粒度更细,更容易接近观察频数,卡方统计量的值也越小,从而表明两个变量之间的关联性越弱!
$(r-1) \times (c-1)$,其中$r$为行数,$c$为列数
3)卡方统计量大于临界值,要拒绝零假设【如何理解】
表示我们观察到的频数和期望频数之前是存在显著差异的,不能归因为随机误差或抽样误差
假设我们正在研究男女性别与对某种产品的购买偏好之间的关联性。我们收集了以下数据:
A 观察到的频数(Observed Frequencies):
| 购买 | 不购买
---------|------|--------
男性 | 30 | 20
女性 | 40 | 10
B 期望频数是在零假设成立的情况下,每个单元格的预期频数。在这种情况下,如果性别与购买偏好是独立的,我们可以根据行列边际总计和总样本量来计算期望频数。
首先,计算行和列的边际总计:
| 购买 | 不购买 | 总计
---------|------|--------|------
男性 | 30 | 20 | 50
女性 | 40 | 10 | 50
总计 | 70 | 30 | 100
然后,计算每个单元格的期望频数。以男性购买为例:
期望频数 = (男性总计 × 购买总计) / 总样本量 = (50 × 70) / 100 = 35
来实践
1、准备数据
2、pyhon代码如下
import pandas as pdfrom scipy.stats import chi2_contingency# 读取CSV文件data = pd.read_csv('purchase.csv')# 提取特征和目标变量X = data[['品类']] # 品类y = data['颜色'] # 颜色# 定义一个函数来计算卡方统计量def calculate_chi2(feature, target):contingency_table = pd.crosstab(feature, target)chi2, _, _, _ = chi2_contingency(contingency_table)return chi2# 计算每个特征与目标变量之间的卡方统计量chi2_scores = {}for feature_name in X.columns:chi2_score = calculate_chi2(X[feature_name], y)chi2_scores[feature_name] = chi2_score# 打印结果print("品类与颜色之间的卡方统计量:")for feature_name, score in chi2_scores.items():print(f"{feature_name}: {score}")
写在最后
好几天没锻炼了,回头想感觉不在状态!Q2已来,快速调整,加油!
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-04-30
通俗易懂的梳理MCP的工作流程(以高德地图MCP为例)
2025-04-30
一文说明 Function Calling、MCP、A2A 的区别!
2025-04-30
MCP很好,但它不是万灵药|一文读懂 MCP
2025-04-30
旅行规划太难做?5 分钟构建智能Agent,集成地图 MCP Server
2025-04-29
10万元跑满血版DeepSeek,这家公司掀了一体机市场的桌子|甲子光年
2025-04-29
谷歌大神首次揭秘Gemini预训练秘密:52页PPT干货,推理成本成最重要因素
2025-04-29
一文说清:什么是算法备案、大模型备案、大模型登记 2.0
2025-04-29
MCP:AI时代的“万能插座”,大厂竞逐的焦点
2024-08-13
2024-06-13
2024-08-21
2024-09-23
2024-07-31
2024-05-28
2024-08-04
2024-04-26
2024-07-09
2024-09-17
2025-04-29
2025-04-29
2025-04-29
2025-04-28
2025-04-28
2025-04-28
2025-04-28
2025-04-28