python进行相关性分析

本文介绍了相关性分析中的几种常用方法,如皮尔逊、斯皮尔曼和肯德尔秩相关系数,以及如何计算和解读P值。还讨论了多变量分析如主成分分析和热图在探索变量间关系的应用。
摘要由CSDN通过智能技术生成

相关性分析常用方法

相关系数与P值:相关系数用于衡量两个或多个变量之间的关联程度。常见的相关系数包括皮尔逊相关系数、斯皮尔曼相关系数和肯德尔秩相关系数等。如皮尔逊相关系数,取值范围为 -1 到 1,0 表示没有线性相关性,1 表示完全正相关,-1 表示完全负相关。P值是一个统计量,用于评估观察到的样本数据与一个假设模型的一致性。在相关性分析中,通常用来检验两个变量之间的关系是否是随机发生的。如果p值低于某个预先设定的显著性水平(通常为0.05),则我们可以拒绝零假设,即认为观察到的关系不是偶然发生的。如果p值高于显著性水平,则无法拒绝零假设,即我们不能确定观察到的关系是真实存在的。

  1. 皮尔逊相关系数(Pearson Correlation Coefficient):

    用于衡量两个连续变量之间的线性关系。
    适用于呈线性关系的变量。
    使用scipy.stats.pearsonr()函数计算。
    
    from scipy.stats import pearsonr
    corr, p_value = pearsonr(data['variable1'], data['variable2'])
    
  2. 斯皮尔曼相关系数(Spearman Correlation Coefficient):

    用于衡量两个变量之间的单调关系,不要求变量之间的关系是线性的。
    适用于不满足线性关系假设的数据。
    使用scipy.stats.spearmanr()函数计算。
    
    from scipy.stats import spearmanr
    corr, p_value = spearmanr(data['variable1'], data['variable2'])
    
  3. 肯德尔秩相关系数(Kendall Rank Correlation Coefficient):

    用于衡量两个变量之间的秩次关系。
    类似于斯皮尔曼相关系数,但对于小样本数据更为稳健。
    使用scipy.stats.kendalltau()函数计算。
    
    from scipy.stats import kendalltau
    corr, p_value = kendalltau(data['variable1'], data['variable2'])
    
  4. 多变量相关性:

    当你有多个变量时,你可以使用PCA(主成分分析)或其他多变量分析方法来探索它们之间的关系。
    
    from sklearn.decomposition import PCA
    pca = PCA(n_components=2)
    principal_components = pca.fit_transform(data)
    
  5. 热图分析:

    热图是一种用颜色编码的图形方式,用于可视化矩阵或表格数据的模式和关系。在统计学和数据分析中,热图通常	用于展示变量之间的相关性或样本之间的相似性。
    

示例代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import pearsonr, spearmanr, kendalltau

# 生成一些示例数据
data = {'Variable1': np.random.rand(100),
        'Variable2': np.random.rand(100)}

df = pd.DataFrame(data)

# 使用Pearson相关系数
corr, p_value = pearsonr(df['Variable1'], df['Variable2'])
print(f"Pearson相关系数与p值: {corr},{p_value}")

# 使用Spearman相关系数
corr, p_value = spearmanr(df['Variable1'], df['Variable2'])
print(f"Spearman相关系数与p值: {corr},{p_value}")

# 使用Kendall Tau相关系数
corr, p_value = kendalltau(df['Variable1'], df['Variable2'])
print(f"Kendall Tau相关系数与p值: {corr},{p_value}")

# 创建热图
corr_matrix = df.corr()
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
plt.show()

结果:

Pearson相关系数与p值: 0.005875767472672579,0.9537331455681075
Spearman相关系数与p值: 0.015445544554455444,0.8787747351162334
Kendall Tau相关系数与p值: 0.00686868686868687,0.9193472667217757

在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭博锐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值