当前位置: 首页 > news >正文

【Python绘制散点图并添加趋势线和公式以及相关系数和RMSE】

在Python中,绘制散点图并添加趋势线(通常是线性回归线)、公式、以及相关系数(Pearson Correlation Coefficient)和均方根误差(RMSE)可以通过结合matplotlib用于绘图,numpy用于数学运算,scipystatsmodels用于线性回归计算来实现。不过,对于线性回归线和公式的添加,statsmodels提供了更直接的方式来获取回归方程的参数。

以下是一个完整的示例,展示如何完成这些步骤:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import pearsonr
from sklearn.metrics import mean_squared_error
import statsmodels.api as sm# 假设你已经有了一个DataFrame,其中包含两列数据
# 这里我们创建一个示例DataFrame
np.random.seed(0)
x = np.random.rand(100) * 100  # 生成0到100之间的随机数
y = 2 * x + 3 + np.random.randn(100) * 10  # 生成y值,与x线性相关但带有噪声
data = pd.DataFrame({'X': x, 'Y': y})# 计算相关系数
corr, _ = pearsonr(x, y)# 计算RMSE(这里假设x是预测值,y是实际值,但在这种情况下,我们只是用它们来演示)
# 注意:在真实应用中,你可能会有不同的预测值
rmse = np.sqrt(mean_squared_error(y, x))  # 但在这种情况下,这没有实际意义,只是演示# 使用statsmodels进行线性回归,获取趋势线参数
X = sm.add_constant(data['X'])  # 添加常数项以拟合截距
model = sm.OLS(data['Y'], X).fit()
intercept, slope = model.params[0], model.params[1]  # 截距和斜率# 绘制散点图
plt.figure(figsize=(10, 6))
plt.scatter(data['X'], data['Y'], color='blue', alpha=0.5, label='Data Points')# 添加趋势线
x_values = np.array(data['X'])
y_pred = intercept + slope * x_values
plt.plot(x_values, y_pred, color='red', label='Trend Line')# 添加相关系数和RMSE到图中
plt.text(0.02, 0.95, f'Correlation Coefficient: {corr:.2f}', transform=plt.gca().transAxes, fontsize=12, color='green')
plt.text(0.02, 0.90, f'RMSE (for demonstration): {rmse:.2f}', transform=plt.gca().transAxes, fontsize=12, color='red')# 添加趋势线方程到图中
plt.text(0.85, 0.05, f'Y = {slope:.2f}X + {intercept:.2f}', transform=plt.gca().transAxes, fontsize=12, color='black', ha='right')# 设置图例、标题和坐标轴标签
plt.legend()
plt.title('Scatter Plot with Trend Line, Correlation, and RMSE')
plt.xlabel('X')
plt.ylabel('Y')# 显示图形
plt.grid(True)
plt.show()

注意

  1. 在这个示例中,我使用了numpy来生成一些模拟数据,但在实际应用中,你应该从文件、数据库或其他数据源中加载数据。

  2. 我计算了RMSE,但在这个上下文中,它并没有实际意义,因为xy都是实际观测到的数据,而不是预测值与实际值之间的比较。在回归问题中,你通常会有预测值(由模型根据输入数据计算得出)和实际值(观测到的数据),然后计算RMSE来评估模型的性能。

  3. 我使用了statsmodels来执行线性回归,因为它提供了方便的接口来获取回归模型的参数(如截距和斜率),并且可以直接输出回归统计信息。

  4. 在添加文本到图形时,我使用了transform=plt.gca().transAxes来确保文本的位置是相对于整个图形的轴(axes)进行定位的,这样可以避免在图形缩放时文本位置发生变化。

http://www.lryc.cn/news/423348.html

相关文章:

  • linux bridge VLAN
  • Java进阶篇之深入理解多态的概念与应用
  • Linux下的进程调度队列
  • 统计回归与Matlab软件实现上(一元多元线性回归模型)
  • 【项目】基于Vue3.2+ElementUI Plus+Vite 通用后台管理系统
  • 随机生成 UUID
  • 报名表EXCEL图片批量下载源码-CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构
  • SpringBoot 整合 Elasticsearch 实现商品搜索
  • 计算机毕业设计 助农产品采购平台 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • Django后台数据获取展示
  • innodb 如何保证数据的一致性?
  • Oracle-OracleConnection
  • 基于hadoop的网络流量分析系统的研究与应用
  • 【C# WPF WeChat UI 简单布局】
  • 关于docker的几个概念(二)
  • JAVA集中学习第五周学习记录(一)
  • JavaSE 网络编程
  • ubuntu24.04 编译安装PHP7.4
  • Tied and Anchored Stereo Attention Network for Cloud Removal in Optical
  • 云开发微信小程序--即时聊天(单人聊天,多人聊天室)
  • Leetcod编程基础0到1-基础实现内容(个人解法)(笔记)
  • 仲阳天王星运维实习一面
  • 排序算法详解
  • vxe-table树形结构使用setCheckboxRow卡顿--已解决
  • 配置错误和 IAM 弱点是云安全的主要隐患
  • Redis系列之Redis Cluster
  • 网站证书过期导致WordPress后台无法登录问题解决,页面样式丢失
  • LeetCode刷题笔记第191题:位1的个数
  • C语言—函数栈帧
  • IDEA 2022.1.4用前需知