文章目录

  • 1.总体Person相关系数
  • 2. 样本Person相关系数
  • 3. 相关系数误区
  • 4. Person总结
  • 5. 相关系数的假设检验
  • 5. Python实现
    • 5.1 程序
    • 5.2 数据

总体——所要考察对象的全部个体叫做望得到总体数据的一些特征(例如均值方差等)
样本——从总体中所抽取的一部分个体叫做总体的一个样本

1.总体Person相关系数

如果两组数据 X:{X1,X2,⋯,Xn}X:\left\{X_{1}, X_{2}, \cdots, X_{n}\right\}X:{X1​,X2​,⋯,Xn​} 和 Y:{Y1,Y2,⋯,Yn}Y:\left\{Y_{1}, Y_{2}, \cdots, Y_{n}\right\}Y:{Y1​,Y2​,⋯,Yn​} 是总体数据
那么总体均值:E(X)=∑i=1nXin,E(Y)=∑i=1nYinE(X)=\frac{\sum_{i=1}^{n} X_{i}}{n}, E(Y)=\frac{\sum_{i=1}^{n} Y_{i}}{n}E(X)=n∑i=1n​Xi​​,E(Y)=n∑i=1n​Yi​​
总协方差:Cov⁡(X,Y)=∑i=1n(Xi−E(X))(Yi−E(Y))n\operatorname{Cov}(X, Y)=\frac{\sum_{i=1}^{n}\left(X_{i}-E(X)\right)\left(Y_{i}-E(Y)\right)}{n}Cov(X,Y)=n∑i=1n​(Xi​−E(X))(Yi​−E(Y))​
直观理解协方差:如果X、Y变化方向相同,即当X大于(小于)其均值时,Y也大于(小于)其均值,在这两种情况下,乘积为正。如果X、Y的变化方向一直保持相同,则协方差为正;同理,如果X、Y变化方向一直相反,则协方差为负;如果X、Y变化方向之间相互无规律,即分子中有的项为正,有的项为负,那么累加后正负抵消。

注意:协方差的大小和两个变量的量纲有关,因此不适合做比较。
总体 Pearson 相关系数: ρXY=Cov⁡(X,Y)σXσY=∑i=1n(Xi−E(X))σX(Yi−E(Y))σYn\rho_{X Y}=\frac{\operatorname{Cov}(X, Y)}{\sigma_{X} \sigma_{Y}}=\frac{\sum_{i=1}^{n} \frac{\left(X_{i}-E(X)\right)}{\sigma_{X}} \frac{\left(Y_{i}-E(Y)\right)}{\sigma_{Y}}}{n}ρXY​=σX​σY​Cov(X,Y)​=n∑i=1n​σX​(Xi​−E(X))​σY​(Yi​−E(Y))​​
其中σX,σY{{\sigma }_{X}},{{\sigma }_{Y}}σX​,σY​ 是 X,YX,YX,Y 的标准差
σX=∑i=1n(Xi−E(X))2n,σY=∑i=1n(Yi−E(Y))2n\sigma_{X}=\sqrt{\frac{\sum_{i=1}^{n}\left(X_{i}-E(X)\right)^{2}}{n}}, \sigma_{Y}=\sqrt{\frac{\sum_{i=1}^{n}\left(Y_{i}-E(Y)\right)^{2}}{n}}σX​=n∑i=1n​(Xi​−E(X))2​​,σY​=n∑i=1n​(Yi​−E(Y))2​​

可以证明, ∣ρXY∣≤1\left|\rho_{X Y}\right| \leq 1∣ρXY​∣≤1, 且当 Y=aX+bY=a X+bY=aX+b 时, ρXY={1,a>0−1,a<0\rho_{X Y}=\left\{\begin{array}{cc}1, & a>0 \\ -1, & a<0\end{array}\right.ρXY​={1,−1,​a>0a<0​

2. 样本Person相关系数

假设有两组数据 X:{X1,X2,⋯,Xn}X:\left\{X_{1}, X_{2}, \cdots, X_{n}\right\}X:{X1​,X2​,⋯,Xn​} 和 Y:{Y1,Y2,⋯,Yn}Y:\left\{Y_{1}, Y_{2}, \cdots, Y_{n}\right\}Y:{Y1​,Y2​,⋯,Yn​} (一般调查得到的数据均为样本数据)
样本均值: Xˉ=∑i=1nXin,Yˉ=∑i=1nYin\bar{X}=\frac{\sum_{i=1}^{n} X_{i}}{n}, \bar{Y}=\frac{\sum_{i=1}^{n} Y_{i}}{n}Xˉ=n∑i=1n​Xi​​,Yˉ=n∑i=1n​Yi​​
样本协方差: Cov⁡(X,Y)=∑i=1n(Xi−Xˉ)(Yi−Yˉ)n−1\operatorname{Cov}(X, Y)=\frac{\sum_{i=1}^{n}\left(X_{i}-\bar{X}\right)\left(Y_{i}-\bar{Y}\right)}{n-1}Cov(X,Y)=n−1∑i=1n​(Xi​−Xˉ)(Yi​−Yˉ)​
样本Pearson 相关系数: rXY=Cov⁡(X,Y)SXSYr_{X Y}=\frac{\operatorname{Cov}(X, Y)}{S_{X} S_{Y}}rXY​=SX​SY​Cov(X,Y)​
其中: SX,SY{{S}_{X}},{{S}_{Y}}SX​,SY​ 是的样本标准差
SX=∑i=1n(Xi−Xˉ)2n−1,SY=∑i=1n(Yi−Yˉ)2n−1S_{X}=\sqrt{\frac{\sum_{i=1}^{n}\left(X_{i}-\bar{X}\right)^{2}}{n-1}},S_{Y}=\sqrt{\frac{\sum_{i=1}^{n}\left(Y_{i}-\bar{Y}\right)^{2}}{n-1}}SX​=n−1∑i=1n​(Xi​−Xˉ)2​​,SY​=n−1∑i=1n​(Yi​−Yˉ)2​​
注:为什么除以n-1? 如果除以n,对样本方差的估计不是无偏估计,比总体方 差要小,要想是无偏估计就要调小分母,所以除以n-1

3. 相关系数误区

  1. 四个散点图对应的数据的皮尔逊相关系数均为0.816(图1-4)

  2. 冰激凌的销量和温度之间的关系,相关系数计算结果为0(图5)blog.csdn

这里的相关系数只是用来衡量两个变量线性相关程度的指标;也就是说,你必须先确认这两个变量是线性相关的,然后这个相关系数才能告诉你他俩相关程度如何。
(1)非线性相关也会导致线性相关系数很大,例如图2。
(2)离群点对相关系数的影响很大,例如图3,去掉离群点后,相关系数为0.98。
(3)如果两个变量的相关系数很大也不能说明两者相关,例如图4,可能是受到了异常值的影响。
(4)相关系数计算结果为0,只能说不是线性相关,但说不定会有更复杂的相关关系(非线性相关),例如图5。

4. Person总结

(1)如果两个变量本身就是线性的关系,那么皮尔逊相关系数绝对值大的就是相关性强,小的就是相关性弱;
(2)在不确定两个变量是什么关系的情况下,即使算出皮尔逊相关系数,发现很大,也不能说明那两个变量线性相关,甚至不能说他们相关,我们一定要画出散点图来看才行。

5. 相关系数的假设检验

在判断样本的 r\mathrm{r}r 是否有意义,需与总体相关系数 ρ=0\rho=0ρ=0 进行比较,看两者的差别有无统计学意义。这就要对进行假设检验,判断不等于 0 是 由于抽样误差所致,还是两个变量之间确实存在相关关系。 步骤:

  1. 提出假设
    H0:P=0H_0:P=0H0​:P=0 无关
    H1:P≠0H_1:P \neq 0H1​:P=0 相关
  2. 确定显著水平 a=0.05\mathrm{a}=0.05a=0.05
    如果从相关系数 ρ=0\rho=0ρ=0 的总体中取得 rrr 值的概率 P>0.05P>0.05P>0.05 ,我们就接受假设,认为此 rrr 值很可能是从此总体中取得的。因此判断两变量间无 显著关系;
    如果取得 rrr 值的概率 P<=0.05P<=0.05P<=0.05 或 P<=0.01P<=0.01P<=0.01 ,我们就在 α=0.05\alpha=0.05α=0.05 或 α=0.01\alpha=0.01α=0.01 水准上拒绝检验假设,认为该 rrr 值不是来自 ρ=0\rho=0ρ=0 的总体,而是来自 ρ≠0\rho \neq 0ρ=0 的另一个总体,因此就判断两变量间有显著关系。
  3. 计算检验统计量,查表得到 PPP 值。拒绝H0H_0H0​,则两变量相关。否则,两变量无关。

t检验法
计算检验统计量trt_rtr​,查界值表,得到 PPP 值
tr=∣r−0∣1−r2n−2t_r=\frac{|r-0|}{\sqrt{\frac{1-r^2}{n-2}}} tr​=n−21−r2​​∣r−0∣​

5. Python实现

5.1 程序

# %%
import numpy as np
import pandas as pd
from scipy.stats import pearsonr
import seaborn as sns
import matplotlib.pyplot as plt
from scipy import stats# 2.0.1无法读取xlsx文件,降低版本到1.2.0 pip install xlrd==1.2.0
test_data = pd.read_excel(r"八年级女生体测数据.xlsx")
# 数据统计
Desc = test_data.describe()
"""
方式一:
Dataframe.corr()   计算两两之间的相似度,返回Dataframe类型
Series.corr(other)  计算该序列与传入序列相关度,返回一个数值
例如:data['身高'].corr(data['体重'])DataFrame.corr(method='pearson', min_periods=1)
参数说明:
method:可选值为{‘pearson’, ‘kendall’, ‘spearman’}
Pearson相关系数样本必须是正态分布,衡量两个数据集合是否在一条线上面,即针对线性数据的相关系数计算,针对非线性数据便会有误差。
kendall:用于反映分类变量相关性的指标,即针对无序序列的相关系数,非正太分布的数据
spearman:非线性的,非正太分布的数据的相关系数
min_periods:样本最少的数据量,最少为1
"""
result_1 = test_data.corr(method='pearson')"""
方式二:
将Dataframe转换为array,array.corrcoef(data),返回相关度二维数组
"""
data = np.array(test_data)
# numpy自带函数,rowvar=False代表以列为变量
result_2 = np.corrcoef(data, rowvar=False)"""
方式三:
scipy.stats中的pearsonr(X,Y)分析两个变量,无法计算相关矩阵
返回值:
r : float,皮尔逊相关系数,[-1,1]之间。
p-value : float,Two-tailed p-value(双尾P值)。
注:p值越小,表示相关系数越显著,一般p值在500个样本以上时有较高的可靠性。可以理解为显著性水平。
"""
result_3 = pearsonr(test_data['身高'], test_data['体重'])"""
数据可视化
"""
# 相关性热力图可视化
ax = sns.heatmap(result_1, vmax=1, cmap='RdYlGn', annot=True)
ax.set_xticklabels(list(test_data))
ax.set_yticklabels(list(test_data))
# 设置中文标签显示
plt.rcParams['font.sans-serif'] = ['Kaitt', 'SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()
# 生成散点图,可以初步判断正态分布
ax_1 = sns.pairplot(test_data)
plt.show()for i in list(test_data):index_i = list(test_data).index(i)plt.subplot(3,2,index_i+1)sns.histplot(test_data[i], kde=True)
plt.show()"""
正态分布KS检验
满足p > 0.05的情况,服从正态分布。
"""
print(Desc)
All_mean = Desc.loc['mean']
All_std = Desc.loc['std']
for i in list(test_data):statistic, pvalue = stats.kstest(test_data[i], 'norm', (All_mean.loc[i], All_std.loc[i]))print(pvalue)

5.2 数据

Person相关分析原理以及python实现相关推荐

  1. 典型相关分析(cca)原理_CCA典型关联分析原理与Python案例

    文章来源于"脑机接口社区" CCA典型关联分析原理与Python案例​mp.weixin.qq.com Rose今天分享一下CCA的相关原理以及Python应用,CCA在EEG等脑 ...

  2. 典型相关分析 python_CCA典型关联分析原理与Python案例

    点击上面"脑机接口社区"关注我们 更多技术干货第一时间送达 Hello,大家好! Rose今天分享一下CCA的相关原理以及Python应用,CCA在EEG等脑电数据的特征提取中使用 ...

  3. 典型相关分析python实现_CCA典型关联分析原理与Python案例

    文章来源于"脑机接口社区"CCA典型关联分析原理与Python案例​mp.weixin.qq.com Rose今天分享一下CCA的相关原理以及Python应用,CCA在EEG等脑电 ...

  4. CCA典型关联分析原理与Python案例

    点击上面"脑机接口社区"关注我们 更多技术干货第一时间送达 Hello,大家好! Rose今天分享一下CCA的相关原理以及Python应用,CCA在EEG等脑电数据的特征提取中使用 ...

  5. python gdbt+fm_GBDT回归的原理及Python实现

    提到GBDT回归相信大家应该都不会觉得陌生(不陌生你点进来干嘛[捂脸]),本文就GBDT回归的基本原理进行讲解,并手把手.肩并肩地带您实现这一算法. 完整实现代码请参考本人的p...哦不是...git ...

  6. 手把手教你EMD算法原理与Python实现(更新)

    Rose今天主要介绍一下EMD算法原理与Python实现.关于EMD算法之前介绍过<EMD算法之Hilbert-Huang Transform原理详解和案例分析>, SSVEP信号中含有自 ...

  7. 信号处理之频谱原理与python实现

    目录 频谱分析 FFT频谱分析原理 下面就用python案例进行说明 案例1 案例2 短时傅里叶变换STFT 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区.QQ交流群:941473018 ...

  8. 倒频谱原理与python实现

    目录 倒频谱定义 倒频谱python案例 本教程为脑机学习者Rose发表于公众号:脑机接口社区 .QQ交流群:903290195 倒频谱定义 倒频谱可以分析复杂频谱图上的周期结构,分离和提取在密集调频 ...

  9. 冲量(momentum)的原理与Python实现

    冲量(momentum)的原理与Python实现 前言 参考:https://www.jianshu.com/p/58b3fe300ecb 梯度下降法(Gradient Descent)是机器学习中最 ...

最新文章

  1. CentOS虚拟机和物理机共享文件夹实现
  2. ADO.NET的连接模式
  3. GitHub 高速上手 ---- 创建密钥,连接
  4. fedora16配制
  5. JAVA多线程学习(一)
  6. 只在堆上或只在栈上定义对象
  7. 数据结构与算法专题——第九题 外排序
  8. java 时间转中文_使用JScript把时间转成中文
  9. 前端开发知识点解答-HTML-面试
  10. PAT1021. 个位数统计
  11. 判定浏览器是否支持原生透明
  12. iis 在站点中新建虚拟目录站点之后,虚拟目录中的 web.config 与 主站点中的 web.config冲突解决方案...
  13. BZOJ - 4568 幸运数字
  14. 欧拉项目(python练习)problem 45
  15. Cesium加载OSGB数据
  16. win7更新_今天,Win7正式终止更新,扫雷成为历史
  17. u盘写保护终极修复方法
  18. SoftIce基础入门
  19. 2019 8 9 STM32F407ADS1526连续转换模式相关配置(采样率达到15000SPS)
  20. 电信10兆指的是多少Mbps

热门文章

  1. 导航网这个最强大吗?
  2. 《青山翠影》叁 爱情的模样 | 似懂非懂
  3. 如何把手机证件照压缩到10K?手机怎么压缩照片到10K?
  4. Word2vec之CBOW 模型
  5. 【ERP】ERP之薪资管理系统部分笔记
  6. Blender PS Zbrush 人物眼球制作1 - 贴图制作、雕刻、渲染
  7. 什么是面向接口编程、面向过程编程、面向对象编程?
  8. 解决No EntityManager with actual transaction available for current thread
  9. 集成学习(voting)
  10. 一文MOS管串联并联驱动应用解析-KIA MOS管