相关关系的python实现

2022年7月26日 266点热度 0人点赞 0条评论

引言

变量之间相关性的直觉判定通常通过观察变量散点图来进行,数学判定由协方差公式来判断;变量之间相关性的程度由统计学三大相关系数来判定。在不同条件下,适用于不同的相关系数。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt#一次性导入需要的包

读取数据

math = [89,78,79,85,92,70,60]#math 成绩,生成一个list
physics = [92,63,76,88,90,73,62]#physics 成绩,生成一个list
grade = {'math':math,'physics':physics}#根据成绩,生成一个字典
data = pd.DataFrame(grade)#根据字典,生成一个dataframe,方便后面调用pandas的函数

绘制散点图

plt.figure(figsize=(55), dpi=100#画布设置,可设置参数。画布可以不设置。

plt.scatter(math, physics,s=100)  # 第一个参数为横轴。第二个参数为纵轴。 第三个参数为圆点大小,可选参数
#plt.scatter(math, physics,s=100,c='red',alpha=0.5) #红色圆点,半透明,scatter还有其他很多可选参数。感兴趣可以自行查阅官方文档或者相关资料进行学习

plt.xlabel('math')#横轴标签
plt.ylabel('physics')#纵轴标签

plt.title("Grade")#图题

plt.show()

图片

协方差

#np.cov(math,physics)# 输出协方差矩阵

# np.cov(x,y)[0][0] #向量x的样本方差
# np.cov(x,y)[0][1] #向量x与y的协方差
# np.cov(x,y)[1][1] #向量y的样本方差

#data['math'].cov(data['physics'])#输出协方差值
data.cov()#输出协方差矩阵
math physics
math 124.666667 120.000000
physics 120.000000 158.238095

皮尔逊系数

data.corr()
#data.corr("pearson")#默认method 是"pearson",可以指定为“spearman”或者“kendall”
math physics
math 1.000000 0.854379
physics 0.854379 1.000000

斯皮尔曼系数

data.corr("spearman")
math physics
math 1.000000 0.928571
physics 0.928571 1.000000

从这里其实可以看到spearman系数对于异常值是有包容度的。计算得到的数值要比Pearson的值更大一些反映出来的数据相关性更强一些。

德尔系数

data.corr("kendall")
math physics
math 1.000000 0.809524
physics 0.809524 1.000000

54820相关关系的python实现

这个人很懒,什么都没留下

文章评论