首页 > 编程语言 >【Mathematical Model】基于Python的相关性/显著性分析&成图

【Mathematical Model】基于Python的相关性/显著性分析&成图

时间:2024-07-10 16:59:26浏览次数:9  
标签:Mathematical 显著性 变量 Python int plt 相关性 np ax


        很久之前编写的代码了,当时是用来分析遥感波段组合对于某地物反演的相关性分析。今天正好整理数据时一块分享出来。

原创作者:RS迷途小书童

博客地址:https://blog.csdn.net/m0_56729804?type=blog

1 相关性的概念

        “相关性”是统计学中的一个基本概念,它用来描述两个或多个变量之间关系的强度和方向。简单来说,如果两个变量之间存在一种可以观测到的、一致性的变化趋势,那么我们就可以说这两个变量是相关的。

2 相关性的类型

  1. 正相关:当一个变量增加时,另一个变量也倾向于增加,或者当一个变量减少时,另一个变量也倾向于减少。这种关系被称为正相关。

  2. 负相关:当一个变量增加时,另一个变量倾向于减少,反之亦然。这种关系被称为负相关。

  3. 零相关:两个变量之间没有明显的变化趋势或关系,即一个变量的变化对另一个变量没有显著影响。

3 相关性的衡量方法

  1. 相关系数:最常用的衡量两个变量之间线性相关程度的方法是计算相关系数,如皮尔逊相关系数(Pearson correlation coefficient)和斯皮尔曼等级相关系数(Spearman's rank correlation coefficient)。皮尔逊相关系数适用于度量两个连续变量之间的线性关系强度和方向,其值介于-1和1之间。值为1表示完全正相关,值为-1表示完全负相关,值为0表示无线性相关。

  2. 散点图:通过绘制两个变量的散点图,可以直观地观察它们之间的关系。如果点呈现出明显的线性排列趋势,则两个变量可能具有相关性。

4 Python代码

        代码中直接通过读取excel表格作相关性分析,具体数据格式为第一行为列名,下面为数据,结果即为每一列之间的相关性。

# -*- coding: utf-8 -*-
"""
@Time : 2024/3/8 11:31
@Auth : RS迷途小书童
@File :Correlation and Significance Analysis.py
@IDE :PyCharm
@Purpose:相关性/显著性分析+出图(表格第一行为列名)
@Web:博客地址:https://blog.csdn.net/m0_56729804
"""
import numpy as np
import pandas as pd
import seaborn as sns
import scipy.stats as stats
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False


def analysis(path_excel):
    """
    :param path_excel: 输入数据表格,格式为:第一行列名(包含x,y)
    :return: None
    data = np.array([[1, 1, 3, 6, 2],
                     [26, 33, 28, 31, 27],
                     [13, 20, 15, 18, 14]])
    print(np.corr coe f(data))
    print(np.corr coe f(data, row var=0))  # 用于计算列之间的相关系数
    """
    df = pd.read_excel(path_excel)
    correlation = df.corr()  # 计算相关性
    # df_coo = df.corr(method=lambda x, y: pearsonr(x, y)[0])
    print(correlation)
    fig, ax = plt.subplots(figsize=(18, 12), facecolor='w')  # 指定颜色带的色系
    mask = np.tril(np.ones(correlation.values.shape, dtype=int))
    mask = np.where(mask == 1, 0, 1)
    # 制作掩膜,去除右上角部分
    sns.heatmap(correlation, annot=True, cmap="coolwarm", mask=mask, vmax=1, vmin=-1, fmt='.2f', ax=ax)
    # annot_kws={"color": "k"}字体颜色。cmap="Blues","RdBu_r"图例颜色
    plt.title('Correlation Matrix Heatmap')
    # for m in ax.get_xticks():
    #     for n in ax.get_yticks():
    #         x = df.iloc[:, int(m)]
    #         y = df.iloc[:, int(n)]
    #         corr_c, p_value = stats.pearsonr(x, y)  # 计算相关性/显著性
    #         # print(int(m), int(n), correlation.values[int(m), int(n)], corr_c, p_value)
    #         if mask[int(m), int(n)] < 1.:
    #             if p_value < 0.001:
    #                 ax.text(n, m - 0.15, '***', ha='center', color='red')
    #             elif p_value < 0.01:
    #                 ax.text(n, m - 0.15, '**', ha='center', color='orange')
    #             elif p_value < 0.05:
    #                 ax.text(n, m - 0.15, '*', ha='center', color='blue')
    plt.show()
    # plt.savefig('Correlation Matrix Heatmap', dpi=500)


if __name__ == "__main__":
    path = r'Z:\彭俊喜/2.xlsx'
    analysis(path)

        代码中注释掉的是显著性分析的可视化效果,可以不要。

5 效果图

标签:Mathematical,显著性,变量,Python,int,plt,相关性,np,ax
From: https://www.cnblogs.com/RSran/p/18294478

相关文章

  • 【案例详解】1. Python实现九九乘法表的24种方法
    【案例详解】1.Python实现九九乘法表的24种方法Python实现九九乘法表的24种方法案例详细讲解一、基础方法(嵌套循环)二、列表推导式三、函数封装四、使用`map`函数五、列表嵌套六、使用`itertools`库七、使用字符串格式化八、使用`format`方法九、递归实现十、使用`for`和......
  • python urllib 基础2
    请求对象的定制importurllib.requesturl=("https://www.baidu.com")heards={'user-agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/128.0.0.0Safari/537.36'}request=urlli......
  • Python教程:Pandas数据转换编码的10种方式
    1.构建测试数据集importpandasaspdimportnumpyasnpdf=pd.DataFrame({'Sex':['M','F','M','M','M','F','M','F','F','F'],'Cou......
  • Python教程:sort和sorted实现排序之对比
    总的来说,sort是应用在列表上的方法,修改原始列表。内建函数sorted可对所有可迭代的对象进行排序操作,返回新的对象。list.sort()方法效率会比sorted(iter)稍微高些。一、sort函数sort()函数用于对原列表进行排序,如果指定参数,则依据指定的函数进行排序。列表才可以进行修......
  • 要将 Python 脚本制作成可执行程序,您可以使用以下几种方法:
    要将Python脚本制作成可执行程序,您可以使用以下几种方法:1.使用PyInstallerPyInstaller是一个非常流行的工具,可以将Python脚本打包成独立的可执行文件,支持Windows、macOS和Linux。您可以按照以下步骤进行操作:安装PyInstaller:复制代码pipinstallpyinstaller......
  • Python实现爬虫并输出
    1.Python爬虫并输出示例下面是一个使用Python编写的简单网络爬虫示例,该爬虫将抓取某个网页(例如,我们假设为https://example.com,但请注意实际使用时我们需要替换为一个真实且允许抓取的网站)的标题(Title)并打印出来。由于直接访问和抓取真实网站可能涉及版权和法律问题,这里我们仅提......
  • 【AI和大模型】AI到底和大模型有什么区别?机器学习,深度学习,python,NPL
    什么是AI?AI是一个广泛的领域,涵盖了模拟和扩展人类智能的多种理论和技术;而大模型是AI领域中的一种具体技术,特别是在自然语言处理(NLP)方面取得了显著进展的深度学习模型。大模型通常指的是具有大量参数的深度学习模型,它们通过在大规模数据集上进行训练,能够学到丰富的数据表示和模......
  • python执行shell并获取结果
    在Python中执行Shell命令并获取其结果,通常可以使用subprocess模块。这个模块允许我们启动新的进程,连接到它们的输入/输出/错误管道,并获取它们的返回码。下面是一个详细的示例,展示了如何使用subprocess.run()函数来执行Shell命令并获取其输出。1.示例一:使用subprocess.run()执行l......
  • 《用Python学数学-2021》 ([美] 彼得 • 法雷尔(Peter Farrell) [Farrell) etc.)
    pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqso一、问题背景高等数学应用非常广,基本上涉及到函数的地方都要用到微积分,还有在几何方面也是如此,计算机的应用让我们能简单快速处理各种高等数学中的计算,比如极限、导数、积分、微分方程等的计算。二、实验目的......
  • pip is configured with locations that require TLS/SSL, however the ssl module in
    使用Ubuntu16.04(已内置python2.7)安装python3.10之后,再使用pip3安装包的时候总是报错:WARNING:pipisconfiguredwithlocationsthatrequireTLS/SSL,howeverthesslmoduleinPythonisnotavailable.Lookinginindexes:https://pypi.tuna.tsinghua.edu.cn/simpleRequi......