做数学建模不得不会的数据特征分析---相关性分析
相关性分析是分析连续变量之间的线性相关程度的强弱,我们可以通过图来初步判断,当然了比较权威的是通过Pearson相关系数(皮尔逊相关系数) / Sperman秩相关系数(斯皮尔曼相关系数)来判断
引入相关模块
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats
% matplotlib inline
(1)图示初判
我们生成三组数据,data1为0-100的随机数并从小到大排列,data2为0-50的随机数并从小到大排列,data3为0-500的随机数并从大到小排列
data1 = pd.Series(np.random.rand(50)*100).sort_values()
data2 = pd.Series(np.random.rand(50)*50).sort_values()
data3 = pd.Series(np.random.rand(50)*500).sort_values(ascending = False)
#
绘制散点图看一下data1与data2之间的关系
fig = plt.figure(figsize = (10,4))
ax1 = fig.add_subplot(1,2,1)
ax1.scatter(data1, data2)
plt.grid()
通过散点图我们可以看出,data1与data2基本是呈现线性正相关的
再来绘制散点图观察一下data1余data3之间的关系
ax2 = fig.add_subplot(1,2,2)
ax2.scatter(data1, data3)
plt.grid()
基本呈现线性负相关
还有一种比较常用的方法是通过散点图矩阵来初步判断多变量之间的关系
data = pd.DataFrame(np.random.randn(200,4)*100, columns = ['A','B','C','D'])
pd.scatter_matrix(data,figsize=(8,8),c = 'k',marker = '+',diagonal='hist',alpha = 0.8,range_padding=0.1)
data.head()
数据展示:
矩阵散点图:
(2)计算Pearson相关系数
生成样本数据
data1 = pd.Series(np.random.rand(100)*100).sort_values()
data2 = pd.Series(np.random.rand(100)*50).sort_values()
data = pd.DataFrame({'value1':data1.values,'value2':data2.values})
print(data.head())
样本数据展示:
正态性检验:
u1,u2 = data['value1'].mean(),data['value2'].mean() # 计算均值
std1,std2 = data['value1'].std(),data['value2'].std() # 计算标准差
print('value1正态性检验:\n',stats.kstest(data['value1'], 'norm', (u1, std1)))
print('value2正态性检验:\n',stats.kstest(data['value2'], 'norm', (u2, std2)))
print('------')
制作Pearson相关系数求值表
data['(x-u1)*(y-u2)'] = (data['value1'] - u1) * (data['value2'] - u2)
data['(x-u1)**2'] = (data['value1'] - u1)**2
data['(y-u2)**2'] = (data['value2'] - u2)**2
print(data.head())
求出Pearson相关系数
r = data['(x-u1)*(y-u2)'].sum() / (np.sqrt(data['(x-u1)**2'].sum() * data['(y-u2)**2'].sum()))
print('Pearson相关系数为:%.4f' % r)
|r| > 0.8 → 高度线性相关
当然了强大的Python提供了函数直接计算Pearson相关系数
生成样本数据:
data1 = pd.Series(np.random.rand(100)*100).sort_values()
data2 = pd.Series(np.random.rand(100)*50).sort_valdata:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzU4cHgiIGhlaWdodD0iMzU2cHgiIHZpZXdCb3g9IjAgMCAzNTggMzU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA0OC4xICg0NzI1MCkgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+TG9nby0yPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRlZnM+CiAgICAgICAgPGNpcmNsZSBpZD0icGF0aC0xIiBjeD0iMTc5IiBjeT0iMTc5IiByPSIxNzkiPjwvY2lyY2xlPgogICAgPC9kZWZzPgogICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJMb2dvLTIiPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiPgogICAgICAgICAgICAgICAgPG1hc2sgaWQ9Im1hc2stMiIgZmlsbD0id2hpdGUiPgogICAgICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+CiAgICAgICAgICAgICAgICA8L21hc2s+CiAgICAgICAgICAgICAgICA8dXNlIGlkPSJPdmFsLTMiIGZpbGw9IiMxQTMwRDciIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIwMi41MTI0NDksNDMwLjcyNzYzNiBDMTkxLjQyMjQ2NywzODEuNjM5MjM1IDIxOC4xMDE0MTEsMzA1LjE4NTE3OSAyMzQuODM1NjEzLDI5NC43Mzk5MDkgQzI2My4yOTU3ODMsMjkxLjgyMDc3MSAzMDguMjczOTY3LDI0NC43MjU1NTkgMzA4LjI3Mzk2NywxOTYuNDk2NjEgQzMwOC4yNzM5NjcsMTEzLjE5MjMyNCAyNjYuMTU1MjUxLDYzLjI3MDQyMTQgMjQwLjQzNDQ5Myw0Ni42MjY4OTgyIEMyMzAuNjc4OTcsNDAuMzE0MjQzIDIxOS43OTM5MTEsODMuMzAwMDc1MSAyMjIuNTgwNDc5LDEwMi42NDQ1ODkgQzE1Ni43Nzk4OTcsOTQuMTcxNDU0NyAxMjcuMDU3MzgzLDEzMC4zMDI1IDExNS45NjIyODgsMTM2LjYwMjI4NSBDMTEwLjE4OTYwNCwxMzIuMDM0MTI3IDY1LjE5NzMwOTgsODIuMTQ0NDQyNCA1MS40MTMwNjcxLDk0LjYwNDUwNDQgQzQzLjY1NDExMjYsMTI2LjA3NjM5OCA1OC42NDIyOCwyMjUuMTc4ODA3IDg3Ljc4NDg5MiwyNTEuMTA5MzUgQzc5LjA0NTE5NTMsMjgxLjEyNjY1OCAxMy4zNDgzMzQ1LDMxMy4zMTAwMDYgNiwzMTcuNjkzNDY0IiBpZD0iUGF0aC0xMSIgZmlsbD0iI0ZGRkZGRiIgbWFzaz0idXJsKCNtYXNrLTIpIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjQzLjc1MDE5OSwxODAuMDkxNzgzIEMyNDguNTM1MTYsMTgwLjI0MjYxMyAyNTMuMDYzMjY2LDE3NS42NzA3IDI1My4wNjMyNjYsMTcwLjA3MjMxOSBDMjUzLjA2MzI2NiwxNjQuNDczOTM4IDI0OC42ODg2NSwxNTkuMjEzMzU5IDI0My4xNDIxNzEsMTU5LjA0MTk0MyBDMjM3LjU5NTY5MywxNTguODcwNTI3IDIzMy45NjM0NjIsMTY0Ljc5MDM5OSAyMzMuNzY5MzY3LDE2OS41MjQ2MDcgQzIzMy41NzUyNzEsMTc0LjI1ODgxNSAyMzguOTY1MjM4LDE3OS45NDA5NTIgMjQzLjc1MDE5OSwxODAuMDkxNzgzIFoiIGlkPSJPdmFsLTQiIGZpbGw9IiMxQTMwRDciIG1hc2s9InVybCgjbWFzay0yKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQzLjQxMzc3MCwgMTY5LjU2Njg1Nykgcm90YXRlKC0yNC4wMDAwMDApIHRyYW5zbGF0ZSgtMjQzLjQxMzc3MCwgLTE2OS41NjY4NTcpICI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTE4OS41MzQxMzMsMjA4LjAzODExNyBDMTk1LjMzMzEyMywyMDguMDM4MTE3IDIwMC44ODI3MDgsMjAzLjkzNDk1OSAyMDAuODgyNzA4LDE5OC4xMzU5NjkgQzIwMC44ODI3MDgsMTkyLjMzNjk3OSAxOTQuODgxMTU2LDE4Ni43MDA0MTUgMTg5LjA4MjE2NiwxODYuNzAwNDE1IEMxODMuMjgzMTc2LDE4Ni43MDA0MTUgMTc4LjQ4NTk3OCwxOTEuNTQwNjg3IDE3OC40ODU5NzgsMTk3LjMzOTY3NyBDMTc4LjQ4NTk3OCwyMDMuMTM4NjY3IDE4My43MzUxNDQsMjA4LjAzODExNyAxODkuNTM0MTMzLDIwOC4wMzgxMTcgWiIgaWQ9Ik92YWwtNC1Db3B5IiBmaWxsPSIjMUEzMEQ3IiBtYXNrPSJ1cmwoI21hc2stMikiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4OS42ODQzNDMsIDE5Ny4zNjkyNjYpIHJvdGF0ZSgxMy4wMDAwMDApIHRyYW5zbGF0ZSgtMTg5LjY4NDM0MywgLTE5Ny4zNjkyNjYpICI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzOS4wNjMxNTUsMjE3LjM1NDI5NSBDMjQzLjY5OTE0LDIxMy44NTc0OTcgMjQ0LjU4NDk4NCwyMDYuNDMwMzExIDI0Mi43NjU4MDgsMjAzLjk2Nzc4IEMyMzcuODU5NTE4LDIwMS45MjYxOCAyMjcuODU5MDkzLDIwNC45NTAxNDIgMjI2LjA4ODA3NiwyMTMuNDQxNzM1IEMyMjguNTc5NDg4LDIxNi4zOTU3MjMgMjMyLjgyODY5LDIxNy4yODk0MDkgMjM5LjA2MzE1NSwyMTcuMzU0Mjk1IFoiIGlkPSJPdmFsLTQtQ29weS0yIiBmaWxsPSIjMUEzMEQ3IiBtYXNrPSJ1cmwoI21hc2stMikiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIzNC44Njc1NzcsIDIxMC4zNTQwOTkpIHJvdGF0ZSgtMy4wMDAwMDApIHRyYW5zbGF0ZSgtMjM0Ljg2NzU3NywgLTIxMC4zNTQwOTkpICI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzOCwyMTQgTDI0MSwyMjEiIGlkPSJQYXRoLTMiIHN0cm9rZT0iIzFBMzBENyIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIG1hc2s9InVybCgjbWFzay0yKSI+PC9wYXRoPgogICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xMSIgZmlsbD0iIzFBMzBENyIgb3BhY2l0eT0iMC4xMDE1MDU4ODgiIG1hc2s9InVybCgjbWFzay0yKSIgY3g9IjI1OCIgY3k9IjE5MCIgcj0iNiI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTExLUNvcHkiIGZpbGw9IiMxQTMwRDciIG9wYWNpdHk9IjAuMDc5OTM2NTk0MiIgbWFzaz0idXJsKCNtYXNrLTIpIiBjeD0iMjA4LjUiIGN5PSIyMjIuNSIgcj0iNi41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMDUsMjEwLjk3MTEwMiBMMzE3LjU3NjQ1MiwyMDkiIGlkPSJQYXRoLTE2IiBzdHJva2U9IiNGRkZGRkYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBtYXNrPSJ1cmwoI21hc2stMikiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMDQsMjE0IEwzMTMuODgwNjI4LDIxNS41NjQ5MzgiIGlkPSJQYXRoLTE2LUNvcHkiIHN0cm9rZT0iI0ZGRkZGRiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIG1hc2s9InVybCgjbWFzay0yKSI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTEzNy44NzMwNDgsMTI5LjcxODQyNSBMMTI0LDExMiIgaWQ9IlBhdGgtMTciIHN0cm9rZT0iI0ZGRkZGRiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIG1hc2s9InVybCgjbWFzay0yKSI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTE0Mi41OTc4NzYsMTMyLjQ3MzA1MyBMMTMyLjcxMTg1NSwxMTIuMjU3NDQ5IiBpZD0iUGF0aC0xNy1Db3B5IiBzdHJva2U9IiNGRkZGRkYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBtYXNrPSJ1cmwoI21hc2stMikiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+ues()
data = pd.DataFrame({'value1':data1.values,'value2':data2.values})
print(data.head())
求出Pearson相关系数
data.corr()
# pandas相关性方法:data.corr(method='pearson', min_periods=1) → 直接给出数据字段的相关系数矩阵
# method默认pearson
(3)求Sperman秩相关系数
生成样本数据:
data = pd.DataFrame({'智商':[106,86,100,101,99,103,97,113,112,110],'每周看电视小时数':[7,0,27,50,28,29,20,12,6,17]})
print(data)
“智商”、“每周看电视小时数”重新按照从小到大排序,并设定秩次index
data.sort_values('智商', inplace=True)
data['range1'] = np.arange(1,len(data)+1)
data.sort_values('每周看电视小时数', inplace=True)
data['range2'] = np.arange(1,len(data)+1)
print(data)
求出di,di2
data['d'] = data['range1'] - data['range2']
data['d2'] = data['d']**2
print(data)
求出rs
n = len(data)
rs = 1 - 6 * (data['d2'].sum()) / (n * (n**2 - 1))
print('Pearson相关系数为:%.4f' % rs)
上面真是太麻烦了,我们还是试着用Python中自带函数来实现吧
data = pd.DataFrame({'智商':[106,86,100,101,99,103,97,113,112,110],'每周看电视小时数':[7,0,27,50,28,29,20,12,6,17]})
print(data)
print('------')
# 创建样本数据
data.corr(method='spearman')
# pandas相关性方法:data.corr(method='pearson', min_periods=1) → 直接给出数据字段的相关系数矩阵
# method默认pearson
ok~
关注欢喜,一起进步~
做数学建模不得不会的数据特征分析---相关性分析相关推荐
- 数据特征分析-相关性分析
相关性分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量的相关密切程度. 相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析. 相关系数在[-1,1]之间. 一.图示初判 ...
- R计算两列数据的相关系数_数据特征分析·相关性分析
相关性分析 相关分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个因素的的相关密切程度,相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析. 1. 如何利用相关系数判断数据之间 ...
- python数学建模可视化_数学建模之流程图和数据可视化
数学建模之流程图及数据可视化 前言:数学建模比赛中,最吸引评审老师的就是figure了,figure分为开篇的流程图[模型思路].数据统计图[折线图.柱状图.扇形图.拟合图-].地图[热力分布图].恰 ...
- 做数学建模,学matlab还是python?
大家好,我是北海. 刚开始参与数学建模的同学,往往会面临一个问题:做数模离不开编程,而matlab和python都挺适合做数模的,究竟是学matlab还是python? 本文就给大家分析一下matla ...
- 用 Python 做数学建模
本文由 CDFMLR 原创,收录于个人主页 https://clownote.github.io,并同时发布到 CSDN.本人不保证 CSDN 排版正确,敬请访问 clownote 以获得良好的阅读体 ...
- 2022 高教杯数学建模C题古代玻璃制品的成分分析与鉴别回顾及总结
2022 高教杯数学建模C题古代玻璃制品的成分分析与鉴别回顾及总结 Paper & Code:https://github.com/Fly-Pluche/2022-mathematical-m ...
- Algorithm:数学建模大赛(CUMCM/NPMCM)之全国大学生数学建模竞赛历年考察知识点统计可视化分析、论文评阅标准参考、国内外CUMCM数学建模类参考文献论文集合之详细攻略
Algorithm:数学建模大赛(CUMCM/NPMCM)之全国大学生数学建模竞赛历年考察知识点统计可视化分析.论文评阅标准参考.国内外CUMCM数学建模类参考文献论文集合之详细攻略 目录 全国大学生 ...
- 数学建模常用模型04:灰色关联分析法
数学建模常用模型04:灰色关联分析法 灰色关联分析法 本文所用的资料参考来源:美赛资料网:美赛资料网 与灰色预测模型一样,比赛不能优先使用,灰色关联往往可以与层次分析结合使用.层次分析用在确定权重上面 ...
- 2020年数维杯数学建模A题舆情监测情感倾向分析建模求解全过程文档及程序
2020年数维杯数学建模 A题 舆情监测情感倾向分析建模 原题再现: 公共危机事件爆发时,如拍石击水,相关信息在短时间内迅速传播,引起群众的广泛关注.其中负面报道或者主观片面的一些失实评判常常在一 ...
最新文章
- 82.数据库里的读锁写锁
- Linux 命令之 userdel -- 用于删除给定的用户以及与用户相关的文件
- pat 乙级 1031 查验身份证(C++)
- TortoiseGit的安装使用
- java单一窗体设计模式,JAVA中设计模式之 -- 单例模式
- 32位有符号整数_008. 字符串转换整数 (atoi) | Leetcode题解
- 研究生科研必备!!!2015-2020年各类国际会议基于图像的三维重建论文综述(1)——总览
- pic由c语言和汇编语言,单片机教程:PIC单片机C语言程序设计(二)
- 【数据分析】数据分析在电商精准营销及效果评估中的应用
- 解决在湖北政务服务网注册武汉公积金账户时无法点击下一步的问题
- 汉字读音表GB2312版 (共7809个汉字)
- Win10下安装配置使用WSL2
- 阿里云服务器ftp连接后21端口无法使用的问题
- Mining Hero於ETHDenver峰會提交專案,整合IPFS應用場景
- SpringMVC工作原理 侵立删
- 分享 40 个免费的前端初学者视频教程
- Java 常见设计模式
- 如何利用基于PXI的下一代ATE系统测试平台进行军事/航天/卫星电子设备测试
- 生产周期缩短42%,效率提升28%,申菱展示数据智能成绩单
- 利用springcloud搭建一个简易的分布式简历展示系统
热门文章
- 代码实现全局消息钩子SetWindowsHookExA监视按键记录
- vscode使用remote--ssh进行远程连接报错Resolver error: Error: Connecting with SSH timed out
- 并查集算法 | Union-Find Algorithm
- html标签的默认样式及去除
- USB键盘背后的那些事儿
- Android CardView 不显示阴影
- 腾讯云 视频通话SDK 第一个坑 域名要开https
- hibernate 二级缓存 @cache注解
- 为什么有时 Oracle 数据库不用索引来查找数据
- 一文带你初识RDMA技术——RDMA概念,特点,协议,通信流程