数据特征分析技能—— 相关性检验
相关性分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度
一般常用四种方法:
- 画图判断
- pearson(皮尔逊)相关系数
- sperman(斯皮尔曼)相关系数
- Cosine similarity (余弦相关系数)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats
% matplotlib inline
绘制图形判断
一般对于强相关性的两个变量,画图就能定性判断是否相关
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为0-100的随机数并从小到大排列,data2为0-50的随机数并从小到大排列,data3为0-500的随机数并从大到小排列,
fig = plt.figure(figsize = (10,4))
ax1 = fig.add_subplot(1,2,1)
ax1.scatter(data1, data2)
plt.grid()
# 正线性相关
ax2 = fig.add_subplot(1,2,2)
ax2.scatter(data1, data3)
plt.grid()
# 负线性相关
# (2)散点图矩阵初判多变量间关系
data = pd.DataFrame(np.random.randn(200,4)*100, columns = ['A','B','C','D'])
pd.plotting.scatter_matrix(data,figsize=(8,8),
c = 'k',
marker = '+',
diagonal='hist',
alpha = 0.8,
range_padding=0.1)
data.head()
A | B | C | D | |
---|---|---|---|---|
0 | 83.463300 | 108.208281 | -16.441879 | -69.039664 |
1 | -114.341786 | -176.341932 | -64.282506 | 54.378911 |
2 | -108.781464 | 116.223511 | 11.996554 | 4.445215 |
3 | -124.358401 | -74.357458 | -46.089528 | -73.539092 |
4 | 87.330398 | 205.767923 | 59.964420 | 137.955811 |
pearson(皮尔逊)相关系数
要求样本满足正态分布
- 两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商,其值介于-1与1之间
公式:
协方差:
sxy=1n−1∑nk=1(xk−x¯)(yk−y¯) s x y = 1 n − 1 ∑ k = 1 n ( x