文章目录
一、什么是总体皮尔逊Person相关系数
什么是相关系数?
A:衡量两个变量之间的相关性的指标
在《概率论和数理统计》中,定义了总体均值和总体协方差的概念,总体协方差公式如下:
由这个公式可以看到,当X,Y变化方向相同,也就是说X大于X均值时候Y也大于Y均值,协方差为正数;当X,Y变化方向相反,也就是说X大于X均值时候Y小于Y均值,协方差为负数。但此时我们注意到,这个公式计算得到的结果并没有消除量纲的影响,不适合于进行数据的比较。
1、总体皮尔逊Person相关系数的定义:
2、可能存在的理解误区
在运用皮尔逊相关系数时候,必须先确定两个变量是线性相关的,才能用这个系数来衡量两个变量的相关程度。皮尔逊相关系数绝对值越大,相关性越强。
这四幅散点图中:(1)右上图属于非线性相关,直接计算的到的线性相关系数也可能很大;
(2)左下图中,离群点的存在影响了相关系数大小;
(3)右下图显示,两个变量的相关系数很大不等于两者强相关,有可能是因为异常值的影响。
观察这些散点图可以发现,当计算出皮尔逊系数为0时,我们也不能斩钉截铁地说两个变量就是不相关的;事实上,只能说不是线性相关,不排除存在别的相关性的可能。
二、运用皮尔逊相关系数的步骤
例题:
(0)数据描述
导入excel表后,利用python的函数或SPSS进行数据的分析,过程略,贴一下结果:
(1)python
#皮尔逊相关系数的计算
# 导入分析库
import pandas as pd
import openpyxl
import numpy as np
##导入样本数据
df = pd.read_excel(r'C:\Users\25328\Desktop\py\05\data\八年级女生体测数据.xlsx')
# 初始化一个空字典来存储统计量 //?
stats_dict = {}
#计算各列的统计量
for column in df.columns:
print(f"\n{column}列的数据统计:")
stats_dict[column] = {
'最大值': df[column].max(),
'最小值': df[column].min(),
'均值': df[column].mean(),
'中位数': df[column].median(),
'偏度': df[column].skew(),
'峰度': df[column].kurtosis(),
'标准差': df[column].std()
}
# 使用字典创建 DataFrame
stats_df = pd.DataFrame(stats_dict).T # 使用 transpose (.T) 来使列成为原始 DataFrame 的列名
# 设置列名
stats_df.columns = ['最大值', '最小值', '均值', '中位数', '偏度', '峰度', '标准差']
# 写入 Excel 文件
stats_df.to_excel('output_statistics.xlsx', index=True) # 保留索引(原始 DataFrame 的列名)
(2)SPSS:分析->描述统计->描述
1、画出散点图
在SPSS中,选择“图形”——>“旧对话框”——>"散点图/点图“——>”矩阵散点图“
(但实际这个效果不太理想,比较难看出)
2、计算数值
# 计算皮尔逊相关系数
corr_matrix = df.corr() # 这将计算DataFrame中所有列之间的相关系数
# 将相关系数矩阵保存到Excel文件
# 使用to_excel方法,index=False表示不保存行索引
corr_matrix.to_excel(r'C:\Users\25328\Desktop\py\05\data\correlation_matrix.xlsx', index=False)
# 如果你只对'x'和'y'之间的相关系数感兴趣
corr_xy = corr_matrix.loc['身高', '体重']
print(f"皮尔逊相关系数 (身高 和 体重): {corr_xy}")
3、综合分析结果
该图中,颜色越深代表相关系数绝对值越接近于1,由颜色深浅和前面的可视化散点图,可以判断出各个变量两两之间的相关性。
总结
通过本文整理了皮尔逊相关系数的概念和注意点,包括了如何利用SPSS和python来进行数据的可视化和分析,实际运用中要注意皮尔逊系数的适用范围和分析方法。