python 线性相关 与 线性拟合

2023-11-09

线性相关

线性相关分析是描述两变量间直线相关,常用相关系数来描述。
根据数据的分布特性不同可以分为:皮尔逊相关系数(Pearson correlation coefficient )和斯皮尔曼相关系数(Spearman‘s rank correlation coefficient )

皮尔逊相关系数(stats.pearsonr)

适用条件:变量需要满足正态分布
计算表达式:
r = ∑ ( x − m x ) ( y − m y ) ∑ ( x − m x ) 2 ∑ ( y − m y ) 2 r=\frac{\sum\left(x-m_{x}\right)\left(y-m_{y}\right)}{\sqrt{\sum\left(x-m_{x}\right)^{2} \sum\left(y-m_{y}\right)^{2}}} r=(xmx)2(ymy)2 (xmx)(ymy)
pytho代码,两个返回值,分别返回:相关系数和pvalue。pvalue空假设是两变量相关系数为0,pvalue越小越拒绝原假设,故越线性相关

from scipy import stats
a = np.array([0, 0, 0, 1, 1, 1, 1])
b = np.arange(7)
stats.pearsonr(a, b)

参考
https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.pearsonr.html#scipy.stats.pearsonr

斯皮尔曼相关系数(stats.spearmanr)

适用条件:非参数估计方法,适用于任何分布的数据
计算表达式与pearson,但是需要注意:分布x和y是排序后的编号(秩),非原始数据。计算示例

from scipy import stats
a = np.array([0, 0, 0, 1, 1, 1, 1])
b = np.arange(7)
stats.spearmanr(a, b)

线性拟合/回归

定量描述两个变量间依存关系的统计分析方法。
适用条件:

  1. 两变量变化关系呈线性趋势;
  2. 每个数据样本之间相互独立;
  3. X和Y服从正态分布;

求线性回归方程主要依据最小二乘法(least square method)

最小二乘法(optimize.least_squares)

在曲线拟合问题中, 使得剩余平方和(residual sum of squares) S S r e s = ∑ i ( y i − f i ) 2 SS_{\mathrm{res}}=\sum_{i}\left(y_{i}-f_{i}\right)^{2} SSres=i(yifi)2最小的方法。
f i f_{i} fi为线性函数时,称为线性最小二乘问题;对于线性问题,可以直接通过线性方程组求出使得 S S r e s SS_{\mathrm{res}} SSres最小的系数。
f i f_{i} fi为非线性函数时,称为非线性最小二乘问题。对非线性问题据需要适用不同的优化算法(梯度下降等)进行求解。

这里注意最小二乘法可以看作是求解回归问题的一个loss值

https://en.wikipedia.org/wiki/Least_squares

python代码实现(optimize.least_squares)

from scipy.optimize import least_squares
#待拟合的表达式, x表示待拟合系数,t自变量,y因变量
def fun(x, t, y):
    return x[0] + x[1] * np.exp(x[2] * t) - y
#初始参数
x0 = np.array([1.0, 1.0, 0.0])

res_lsq = least_squares(fun, x0, args=(t_train, y_train))

res_lsq.x返回待拟合系数

scipy参考

R方(sklearn.metrics.r2_score)

注意并不是相关系数的平方
学术名词,决定系数(Coefficient of determination),一个统计量用来评价模型预测量与观测值的变异(variation)
计算表达式:
R 2 = 1 − S S res  S S tot  R^{2}=1-\frac{S S_{\text {res }}}{S S_{\text {tot }}} R2=1SStot SSres 
式中,剩余平方和 S S r e s = ∑ i ( y i − f i ) 2 SS_{\mathrm{res}}=\sum_{i}\left(y_{i}-f_{i}\right)^{2} SSres=i(yifi)2
总的平方和 S S t o t = ∑ ( y i − y ˉ ) 2 S S_{\mathrm{tot}}=\sum\left(y_{i}-\bar{y}\right)^{2} SStot=(yiyˉ)2

代码实现

from sklearn.metrics import r2_score
R_square = r2_score(a, b) 

参考

区别与联系

区别

  1. 统计意义不同:相关反映两变量间的伴随关系,这种关系是相互的,对等的,不一定有因果关系;回归反映两变量间的依存关系(因果或从属关系),有自变量与应变量之分。
  2. 分析目的不同:相关是把两变量间直线关系的密切程度及方向用统计指标表示出来,回归是把自变量与应变量之间的关系用函数公式定量表达出来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 线性相关 与 线性拟合 的相关文章

  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图

随机推荐

  • C# TreeView 控件的综合使用方法

    1 概述 该篇文章开发使用的语言c 环境visualstudio2010 sql数据库 主要内容包括 1 treeView控件添加根节点 子节点的基本方法 节点的删除 2 把treeView控件的节点数据保存到SQL数据包括中 把数据库数据
  • 弱电流源是怎么实现的,咱们来仿个真

    原文来自公众号 工程师看海 在我们电子电路设计中 有两种电源 一种是电压源 另一种是电流源 相比于电压源 电流源的使用场景稍微少一点 今天 结合仿真 介绍下一种基于运放的微弱电流源基本实现原理 理论计算与仿真验证相结合 写的清晰易懂 保证一
  • oracle clob raw 转换,ORA-22835: 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小...

    报错信息 Tue Jan 06 09 34 24 2015 Errors in file ggs oracle log diag rdbms orayy3 oyy3a trace oyy3a ora 10028532 trc ORA 228
  • FastAPI 返回图像

    记录一下 我在网上找了好久都不太管用 from fastapi import FastAPI from fastapi import FastAPI File UploadFile Response from fastapi respons
  • arduino控制28byj48步进电机

    写了一个arduino控制28byj48步进电机的程序 主要用于下面这种五线四相步进电机 代码 include
  • Jmeter(十一) - 从入门到精通 - JMeter逻辑控制器 - 下篇(详解教程)

    1 简介 Jmeter官网对逻辑控制器的解释是 Logic Controllers determine the order in which Samplers are processed 意思是说 逻辑控制器可以控制采样器 samplers
  • 图像去噪小波算法的GUI实现(Matlab源代码)

    介绍 本文将介绍如何使用Matlab实现一个带有图形用户界面 GUI 的图像去噪小波算法 小波算法是一种常用的图像去噪方法 通过对图像的小波变换和逆变换进行处理 可以有效地减少图像中的噪声 通过GUI界面 用户可以方便地选择输入图像 调整去
  • 开启hyper-v的嵌套虚拟化

    有的时候会用到windows自带的hyper v来测试一些系统 如果安装的虚拟机需要启用虚拟化原来是一件很麻烦的事情 现在有个不错的powershell命令执行一下就好 Set VMProcessor VMName NestedVM Exp
  • 卷积神经网络原理解析

    朋友们 如需转载请标明出处 人工智能AI技术的博客 CSDN博客 python系列教程 人工智能 程序人生领域博主 自动驾驶 智能医疗保健和自助零售这些领域直到最近还被认为是不可能实现的 而计算机视觉已经帮助我们达到了这些事情 如今 拥有自
  • 2023年京东618PLUS超级补贴如何领取?

    2023年京东618PLUS超级补贴如何领取 2023年京东618PLUS超级补贴仅部分活动商品可用 且不同的PLUS超级补贴使用商品范围不同 所选商品是否满足超级补贴使用门槛 以及结算页显示为准 京东618PLUS超级补贴入口 领取后5月
  • VsCode+QT5.14.2安装部署详细教程

    文章目录 一 下载 1 下载 QT https download qt io archive qt 5 14 2 下载 VsCode https code visualstudio com 3 下载 Cmake https cmake or
  • Java设计模式 -9- 桥接模式(Bridge模式)

    Java设计模式 9 桥接模式 Bridge模式 前言 桥接模式的定义与特点 优点 缺点 桥接模式的结构与实现 1 模式的结构 2 模式的实现 桥接模式的应用实例 桥接模式的应用场景 桥接模式的扩展 前言 结构型模式描述如何将类或对象按某种
  • Spring boot中使用Jackson ObjectMapper注入

    为什么80 的码农都做不了架构师 gt gt gt 问题 本身spring boot已经集成了Jackson的库 我想自己在Controller中直接使用Spring默认的ObjectMapper 应该怎么做 RestController
  • 配置数据库属性validationQuery

    配置数据库时 属性validationQuery默认值为 select 1 对于oracle值应为 select 1 from dual validationQuery属性 用来验证数据库连接的语句 这个语句至少是返回一条数据的查询语句 每
  • Linux 宝塔面板密码忘记解决方法

    打开远程链接命令窗口或shell窗口 输入一下命令 cd www server panel python tools pyc panel passwd passwd为修改后的密码 返回的就是面板登录用户名 我的为 admin 2 如果提示多
  • 有用的网站

    http blog csdn net column details ms100 html
  • python3下载网页视频_三种下载网页视频的的方法(亲测!非常详细)

    原标题 三种下载网页视频的的方法 亲测 非常详细 大家好 我是莲妈 今天给大家带来三种网页视频的下载方法 公众号 努力的Lotus 里科普资源栏里已经为大家准备好了相关安装包以及命令指令 1 you get 2 IDM Internet D
  • Python爬虫——个股的股价与成交量分析

    一 前言 写在前面 不是人人都是巴菲特 作为普通小韭菜不要幻想一夜暴富 踹开临门一脚 投点小钱 进去冲个浪还是挺有意思的 注意总结经验 最大程度的减少被割的概率 年轻人还是要脚踏实地 股谚云 股市上什么都能骗人 唯有成交量不能骗人 成交量通
  • 商品期货保证金返还吗(期货保证金可以取回吗)

    期货的保证金是否返还 平仓后不管盈亏保证金都会返还给你 只是亏损方会扣除亏损后把剩余部分返还 而盈利方会全额返还还加上盈利部分 期货保证金交了以后 在交割完成以后 还退不退保证金 期货保证金交了以后 在交割完成以后 还退不退保证金要看自己是
  • python 线性相关 与 线性拟合

    文章目录 线性相关 皮尔逊相关系数 stats pearsonr 斯皮尔曼相关系数 stats spearmanr 线性拟合 回归 最小二乘法 optimize least squares R方 sklearn metrics r2 sco