数据预处理——相关性分析详解

什么是相关性分析?

在数据预处理阶段,相关性分析是一项关键任务。它帮助我们理解特征之间的关系,从而为后续建模提供指导。本篇文章将详细介绍 卡方测试皮尔逊相关系数协方差,并结合案例逐步解析每种方法的应用。

1. 相关性分析的意义

相关性分析用于衡量数据特征之间的关联程度。高相关性可能表明一个特征可以解释另一个特征的变化,而低相关性或无相关性意味着两者之间缺乏统计关系。

  • 正相关:一个特征增加,另一个特征也增加。
  • 负相关:一个特征增加,另一个特征减少。
  • 无相关:特征间无显著关系。
相关性与因果性

需注意,相关性不等于因果性。即使两个变量相关,也不一定存在直接因果关系。

2.常见的相关性分析方法:

  • 卡方( χ 2 \chi^2 χ2)测试:分析离散变量之间是否存在显著关系。
  • 皮尔逊相关系数:衡量连续变量之间的线性相关性。
  • 协方差:分析两个变量的变化方向是否一致。

相关性分析的作用

相关性分析的主要目的是通过特征之间的关联性来帮助决策,例如:

  1. 特征选择

    • 去除冗余特征,简化数据结构。
    • 提高模型的训练效率和性能。
  2. 数据降维

    • 当特征间相关性较强时,可通过主成分分析(PCA)等方法将高维特征降至低维,减少数据维度。
  3. 识别异常

    • 通过相关性分析,发现数据中存在的不合理关联或异常模式。

方法一:卡方测试(Chi-Square Test)

1. 什么是卡方测试?

卡方测试是一种非参数统计检验,用于判断两个离散变量之间是否存在显著关系。
例如,我们可以用卡方测试来分析“性别”和“是否喜欢某款游戏”是否相关。

2. 公式解释

卡方( χ 2 \chi^2 χ2)统计量的公式为:
χ 2 = ∑ ( O − E ) 2 E \chi^2 = \sum \frac{(O - E)^2}{E} χ2=E(OE)2

  • ( χ 2 \chi^2 χ2):卡方统计量,表示实际观测值和期望值之间的差异程度。
  • ( O O O):实际观测值(Observed Value)。
  • ( E E E):期望值(Expected Value),计算公式为:
    E = 行合计总计 × 列合计总计 总样本数 E = \frac{\text{行合计总计} \times \text{列合计总计}}{\text{总样本数}} E=总样本数行合计总计×列合计总计

当( χ 2 \chi^2 χ2)值越大,表明实际观测值与期望值之间的差距越大,两变量的关联性越强。

3. 案例分析

问题:性别(男/女)与是否喜欢某款游戏(是/否)是否存在显著关系?

数据如下:

性别喜欢不喜欢总计
250200450
5010001050
总计30012001500
第一步:计算期望值

使用公式 E = 行合计总计 × 列合计总计 总样本数 E = \frac{\text{行合计总计} \times \text{列合计总计}}{\text{总样本数}} E=总样本数行合计总计×列合计总计计算:

  • 男且喜欢:
    E = 450 × 300 1500 = 90 E = \frac{450 \times 300}{1500} = 90 E=1500450×300=90
  • 男且不喜欢:
    E = 450 × 1200 1500 = 360 E = \frac{450 \times 1200}{1500} = 360 E=1500450×1200=360
  • 女且喜欢:
    E = 1050 × 300 1500 = 210 E = \frac{1050 \times 300}{1500} = 210 E=15001050×300=210
  • 女且不喜欢:
    E = 1050 × 1200 1500 = 840 E = \frac{1050 \times 1200}{1500} = 840 E=15001050×1200=840

期望值表格如下:

性别喜欢不喜欢
90360
210840
第二步:计算卡方统计量

χ 2 = ( 250 − 90 ) 2 90 + ( 200 − 360 ) 2 360 + ( 50 − 210 ) 2 210 + ( 1000 − 840 ) 2 840 \chi^2 = \frac{(250 - 90)^2}{90} + \frac{(200 - 360)^2}{360} + \frac{(50 - 210)^2}{210} + \frac{(1000 - 840)^2}{840} χ2=90(25090)2+360(200360)2+210(50210)2+840(1000840)2

Python实现
import numpy as np
from scipy.stats import chi2_contingency# 实际观测值
observed = np.array([[250, 200], [50, 1000]])# 卡方检验
chi2, p, dof, expected = chi2_contingency(observed)print(f"卡方统计量: {chi2:.2f}") #504.77
结果解读
  • χ 2 \chi^2 χ2 = 504.77:值很大说明性别与游戏喜好存在显著关系。

方法二:皮尔逊相关系数(Pearson Correlation Coefficient)

1. 什么是皮尔逊相关系数?

皮尔逊相关系数是衡量两个连续变量之间线性相关程度的指标,其值介于 − 1 -1 1 1 1 1 之间:

  • ( r > 0 r > 0 r>0):正相关,值越接近 (1),正相关越强。
  • ( r < 0 r < 0 r<0):负相关,值越接近 (-1),负相关越强。
  • ( r = 0 r = 0 r=0):两个变量之间没有线性相关。

注意:皮尔逊相关系数只衡量线性相关性,不适用于非线性关系。

2. 公式及解释

皮尔逊相关系数的公式为:
r = ∑ ( X i − X ˉ ) ( Y i − Y ˉ ) ∑ ( X i − X ˉ ) 2 ⋅ ∑ ( Y i − Y ˉ ) 2 r = \frac{\sum (X_i - \bar{X})(Y_i - \bar{Y})}{\sqrt{\sum (X_i - \bar{X})^2 \cdot \sum (Y_i - \bar{Y})^2}} r=(XiXˉ)2(YiYˉ)2 (XiXˉ)(YiYˉ)

  • ( r r r):皮尔逊相关系数。
  • ( X i X_i Xi)、( Y i Y_i Yi):变量 ( X X X) 和 ( Y Y Y) 的样本值。
  • ( X ˉ \bar{X} Xˉ)、( Y ˉ \bar{Y} Yˉ):变量 ( X X X) 和 ( Y Y Y) 的均值。
  • 分子:两个变量的中心化偏差的乘积之和,表示变量之间的协同变化。
  • 分母:变量 ( X X X) 和 ( Y Y Y) 的标准差乘积,用于归一化,确保结果在 ( [ − 1 , 1 ] [-1, 1] [1,1]) 范围内。

简化理解:皮尔逊相关系数描述了变量 ( X X X) 和 ( Y Y Y) 偏离均值的方向和程度是否一致。如果 ( X X X) 和 ( Y Y Y) 同时偏高或偏低,相关系数趋近于 ( 1 1 1);若 ( X X X) 偏高时 ( Y Y Y) 偏低,则趋近于 ( − 1 -1 1)。

3. 案例分析

问题:学生的数学成绩和物理成绩是否存在线性相关性?

数据如下:

学生数学物理
A8590
B9288
C7885
D8082
E9592
第一步:计算均值

X ˉ = 85 + 92 + 78 + 80 + 95 5 = 86 \bar{X} = \frac{85 + 92 + 78 + 80 + 95}{5} = 86 Xˉ=585+92+78+80+95=86
Y ˉ = 90 + 88 + 85 + 82 + 92 5 = 87.4 \bar{Y} = \frac{90 + 88 + 85 + 82 + 92}{5} = 87.4 Yˉ=590+88+85+82+92=87.4

第二步:计算分子部分

∑ ( X i − X ˉ ) ( Y i − Y ˉ ) = ( 85 − 86 ) ( 90 − 87.4 ) + ( 92 − 86 ) ( 88 − 87.4 ) + ⋯ \sum (X_i - \bar{X})(Y_i - \bar{Y}) = (85 - 86)(90 - 87.4) + (92 - 86)(88 - 87.4) + \cdots (XiXˉ)(YiYˉ)=(8586)(9087.4)+(9286)(8887.4)+

第三步:计算分母部分

∑ ( X i − X ˉ ) 2 ⋅ ∑ ( Y i − Y ˉ ) 2 \sqrt{\sum (X_i - \bar{X})^2 \cdot \sum (Y_i - \bar{Y})^2} (XiXˉ)2(YiYˉ)2

4. 用 Python 实现

import numpy as np# 数据
math = [85, 92, 78, 80, 95]
physics = [90, 88, 85, 82, 92]# 计算均值
mean_math = np.mean(math)
mean_physics = np.mean(physics)# 计算分子
numerator = sum((x - mean_math) * (y - mean_physics) for x, y in zip(math, physics))# 计算分母
denominator = np.sqrt(sum((x - mean_math)**2 for x in math) * sum((y - mean_physics)**2 for y in physics))# 计算皮尔逊相关系数
r = numerator / denominatorprint(f"皮尔逊相关系数: {r}") #0.80
结果解读
  • ( r = 0.80 r = 0.80 r=0.80):数学成绩与物理成绩之间具有强正相关性。

方法三:协方差(Covariance)

1. 什么是协方差?

协方差用于衡量两个变量的变化方向是否一致:

  • 协方差 ( > 0 > 0 >0):两个变量同向变化。
  • 协方差 ( < 0 < 0 <0):两个变量反向变化。
  • 协方差 ( = 0 = 0 =0):两个变量无相关性。

2. 公式解释

协方差的计算公式为:
Cov ( X , Y ) = ∑ ( X i − X ˉ ) ( Y i − Y ˉ ) n − 1 \text{Cov}(X, Y) = \frac{\sum (X_i - \bar{X})(Y_i - \bar{Y})}{n - 1} Cov(X,Y)=n1(XiXˉ)(YiYˉ)

  • ( Cov ( X , Y ) \text{Cov}(X, Y) Cov(X,Y)):协方差。
  • ( X i , Y i X_i, Y_i Xi,Yi):变量 ( X X X) 和 ( Y Y Y) 的具体取值。
  • ( X ˉ , Y ˉ \bar{X}, \bar{Y} Xˉ,Yˉ):变量 ( X X X) 和 ( Y Y Y) 的均值。
  • ( n n n):样本数量。

3. 案例分析

Python实现
# 计算协方差
cov_matrix = np.cov(math, physics)
print(f"协方差矩阵:\n{cov_matrix}") #协方差矩阵:[[54.5 23.5][23.5 15.8]]
print(f"协方差:\n{cov_matrix[0, 1]}") #协方差: 23.5

np.cov() 是同时处理多组数据,计算所有变量两两之间的协方差。因此,它返回的是一个协方差矩阵。

  • 如果输入是两个变量(如 ( X X X) 和 ( Y Y Y)),那么结果是 ( 2 × 2 2 \times 2 2×2) 的矩阵:
    Cov = [ Var ( X ) Cov ( X , Y ) Cov ( Y , X ) Var ( Y ) ] \text{Cov} = \begin{bmatrix} \text{Var}(X) & \text{Cov}(X, Y) \\ \text{Cov}(Y, X) & \text{Var}(Y) \end{bmatrix} Cov=[Var(X)Cov(Y,X)Cov(X,Y)Var(Y)]
结果解读

协方差矩阵的非对角线元素即为数学和物理成绩的协方差。正值表示同向变化,负值表示反向变化。
协方差: 23.5,表示数学成绩提升的同时,物理成绩也会提升。


总结

方法适用场景输出结果
卡方测试分类变量( χ 2 \chi^2 χ2) 值
皮尔逊系数连续变量( r r r) 值 [ − 1 , 1 -1, 1 1,1]
协方差连续变量协方差值,表示变化方向一致性

通过这些方法,我们可以有效分析变量之间的关系,为特征选择、降维和建模提供科学依据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/61769.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

408代码类复习--图类

图类 Author&#xff1a;Joanh_Lan Personal Blog Links&#xff1a;Joanh_LanのCSDN博客 备注&#xff1a; 个人复习版本 不保证完全正确&#xff0c;理性参考&#xff08;不背锅i哦&#xff09; &#xff08;&#xff1a;&#xff08;&#xff1a;&#xff08;&#xff…

Maven的安装——给Idea配置Maven

一、什么是Maven? Maven是一个开源的项目管理工具&#xff0c;它主要用于Java项目的构建、依赖管理和项目生命周期管理。 二、准备环境 maven安装之前&#xff0c;我们要先安装jdk&#xff0c;确保你已经安装了jdk环境。可以通过【win】【r】打开任务管理器&#xff0c;输入…

linux 常用命令指南(存储分区、存储挂载、docker迁移)

前言&#xff1a;由于目前机器存储空间不够&#xff0c;所以‘斥巨资’加了一块2T的机械硬盘&#xff0c;下面是对linux扩容的一系列操作&#xff0c;包含了磁盘空间的创建、删除&#xff1b;存储挂载&#xff1b;docker迁移&#xff1b;anaconda3迁移等。 一、存储分区 1.1 …

OpenCvSharp Demo 饱和度、明度、对比度、锐化、阴影、高光、色温实现滤镜效果

目录 效果 风景-天空滤镜 人像—酷感冷艳滤镜 美食—鲜美滤镜 美食—巧克力滤镜 项目 代码 参考 下载 效果 风景-天空滤镜 人像—酷感冷艳滤镜 美食—鲜美滤镜 美食—巧克力滤镜 项目 代码 using OpenCvSharp; using System; using System.Diagnostics; using Syst…

Easyexcel(4-模板文件)

相关文章链接 Easyexcel&#xff08;1-注解使用&#xff09;Easyexcel&#xff08;2-文件读取&#xff09;Easyexcel&#xff08;3-文件导出&#xff09;Easyexcel&#xff08;4-模板文件&#xff09; 文件导出 获取 resources 目录下的文件&#xff0c;使用 withTemplate 获…

迁移学习理论与应用

迁移学习&#xff08;Transfer Learning&#xff09;是一种机器学习技术&#xff0c;旨在将一个任务&#xff08;源任务&#xff09;上学到的知识迁移到另一个相关但不完全相同的任务&#xff08;目标任务&#xff09;上&#xff0c;从而提高目标任务的学习效果。这种方法的核心…

近期两篇NeRF/3DGS-based SLAM方案赏析:TS-SLAM and MBA-SLAM

原文链接&#xff1a;近期两篇NeRF/3DGS-based SLAM方案赏析&#xff1a;TS-SLAM and MBA-SLAM paper1&#xff1a;TS-SLAM: 基于轨迹平滑约束优化的神经辐射场SLAM方法 导读 本文提出了TS-SLAM&#xff0c;一种改进的基于神经辐射场&#xff08;NeRF&#xff09;的SLAM方法…

游戏引擎学习第20天

视频参考:https://www.bilibili.com/video/BV1VkBCYmExt 解释 off-by-one 错误 从演讲者的视角&#xff1a;对代码问题的剖析与修复过程 问题的起因 演讲者提到&#xff0c;他可能无意中在代码中造成了一个错误&#xff0c;这与“调试时间标记索引”有关。他发现了一个逻辑问题…

《鸿蒙系统:开启智能新时代的璀璨之星》

一、鸿蒙系统&#xff1a;崛起之路 鸿蒙系统的发展历程堪称一部科技创新的传奇。2012 年&#xff0c;华为前瞻性地启动鸿蒙系统研发项目&#xff0c;彼时或许很少有人能预见到它未来的辉煌。2019 年&#xff0c;鸿蒙系统首个开发者预览版的发布&#xff0c;如同夜空中的一颗璀…

SQL注入--DNSlog外带注入--理论

什么是DNSlog? DNS的作用是将域名解析为IP 而DNSlog就是存储在DNS服务器上的域名信息&#xff0c;它记录着用户对域名访问信息。可以理解为DNS服务器上的日志文件。 多级域名 比如blog.csdn.net&#xff0c;以点为分隔&#xff0c;从右向左依次是顶级域名、二级域名、三级域…

python: Serialize and Deserialize complex JSON using jsonpickle

# encoding: utf-8 # 版权所有 2024 ©涂聚文有限公司 # 许可信息查看&#xff1a;言語成了邀功盡責的功臣&#xff0c;還需要行爲每日來值班嗎 # Serialize and Deserialize complex JSON in Python # 描述&#xff1a;pip install jsonpickle https://github.com/jsonpi…

基于图的去中心化社会推荐过滤器

目录 原论文研究背景与研究意义概述论文所提出算法的主要贡献GDSRec算法原理与流程问题定义去中心化图&#xff08;decentralized graph&#xff09;所提出方法(三种并行建模)用户建模&#xff08;user modelling&#xff09; 模版代码讲解main.py顶层文件&#xff1a;用于集成…

计算机的错误计算(一百六十三)

摘要 四个算式“sin(0.00024/2)^2”、“(1-cos(0.00024))/2”、“(1-sqrt(1-sin(0.00024)^2))/2”以及“sin(0.00024)^2/(22*sqrt(1-sin(0.00024)^2))”是等价的。但是&#xff0c;在 MATLAB 中计算它们&#xff0c;输出不完全一致&#xff1a;中间两个算式的输出中含有错误数…

递归算法专题一>Pow(x, n)

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; public double myPow(double x, int n) {return n < 0 ? 1.0 / pow(x,-n) : pow(x,n); }private double pow(double x, int n){if(n 0) return 1.0;double tmp pow(x,n / 2);return n % 2 0 ? tmp * tmp : tmp …

论文阅读 SimpleNet: A Simple Network for Image Anomaly Detection and Localization

SimpleNet: A Simple Network for Image Anomaly Detection and Localization 摘要&#xff1a; 该论文提出了一个简单且应用友好的网络&#xff08;称为 SimpleNet&#xff09;来检测和定位异常。SimpleNet 由四个组件组成&#xff1a;&#xff08;1&#xff09;一个预先训练的…

实战分享:如何在HP-UX上高效扩容Oracle 12c RAC ASM磁盘

文章目录 Oracle 12c RAC ASM磁盘扩容 for HP-UX一、扩容原因二、扩容前信息三、扩容详细步骤3.1 存储划分LUN&#xff0c;映射到Oracle 12c RAC相关主机组3.2 扫描查看磁盘3.3 检查两节点间的磁盘盘符是否一致3.4 以一个节点为准同步磁盘盘符3.5 更改磁盘属主、权限3.6 查看AS…

如何使用 Matlab 制作 GrabCAD 体素打印切片

本教程适用于已经对 Matlab 和 J750 操作有所了解的用户。 它不是有关如何使用 Matlab 软件或 PolyJet 打印机的全面课程。 Stratasys 为您提供以下内容&#xff1a; 第 1 步&#xff1a;什么是体素&#xff1f; 就像 2D 数字图像由像素组成一样&#xff0c;您可以将 3D 数字形…

CNN—LeNet:从0开始神经网络学习,实战MNIST和CIFAR10~

文章目录 前言一、CNN与LeNet介绍二、LeNet组成及其名词解释2.1 输入2.2 卷积层2.3池化层2.4 全连接层2.5 总结 三、MNIST实战3.1 构建神经网络3.2 数据处理3.3 &#xff08;模板&#xff09;设置优化器&#xff0c;损失函数&#xff0c;使用gpu(如果是N卡有cuda核心)&#xff…

SpringBoot集成Dynamo(3)集成远程dynamo

按照推荐的AWS IAM SSO模式&#xff0c;以文件存储凭证的方式&#xff0c;看下代码是如何访问的。 pom依赖&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"…

半导体、晶体管、集成电路、芯片、CPU、单片机、单片机最小系统、单片机开发板-概念串联辨析

下面概念定义从小到大串联&#xff1a; 半导体&#xff08;semiconductor&#xff09;&#xff1a; 是一类常温下导电性能介于导体与绝缘体之间的材料&#xff0c;这种材料的导电性可以随着外部环境比如电压、温度、光照的变换而改变。常见的半导体材料有硅、锗、砷化镓等。 晶…