用Python的matplotlib绘制残差分析散点误差棒图

本文介绍了一篇关于使用Python进行残差误差棒图的绘制过程,包括数据读取、根据A值分段并计算各段的均值和标准差,以及最后的图表展示。作者详细展示了如何利用matplotlib库创建散点图和误差棒图,并对残差进行了分段统计分析。


前言

残差误差棒图是残差分析中必不可少的图,下面我将介绍一下我画的残差散点图
话不多说先上图:

一、数据读取

import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt

data = pd.read_excel('残差分析数据.xlsx', engine='openpyxl')
print(data)
A = data['A']
r_inter = data['r_inter']
r_intra = data['r_intra']

二、数据分段

根据横坐标A将残差数据分段,计算不同段的均值和标准差

1.数据分段

r_intra2 = []
r_intra3 = []
r_intra4 = []
r_intra5 = []
r_intra6 = []
r_intra7 = []
r_intra8 = []
for i in range(len(r_intra)):
    if 0<=A[i]<50:
        r_intra1.append(r_intra[i])
    elif 50<=A[i]<100
在应用最小二乘法进行线性拟合时,插入误差和选择误差来源是评估模型不确定性和提升拟合结果可信度的重要步骤。误差通常表示数据的不确定性,而误差来源的选择则影响模型参数估计的可靠性。 ### 误差的插入方法 在最小二乘法中,误差通常表示为数据的测量误差或标准差。假设每个数据 $ (x_i, y_i) $ 有一个相关的误差值 $ \sigma_i $,则误差可以在绘图中以垂直线的形式表示,覆盖 $ y_i \pm \sigma_i $ 的范围。例如,在 Python 中使用 `matplotlib` 绘制误差棒图的代码如下: ```python import matplotlib.pyplot as plt # 示例数据 x = [1, 2, 3, 4, 5] y = [2.1, 4.0, 6.2, 8.1, 9.9] errors = [0.2, 0.1, 0.3, 0.2, 0.1] # 绘制误差图 plt.errorbar(x, y, yerr=errors, fmt='o', ecolor='red', capsize=5) plt.xlabel('x') plt.ylabel('y') plt.title('Error Bars in Linear Fit') plt.grid(True) plt.show() ``` ### 误差来源的选择 在最小二乘法中,误差来源的选择通常取决于数据的性质和测量条件。误差可以分为 **测量误差** 和 **模型误差** 两类: - **测量误差**:通常与实验设备的精度或观测条件有关,例如温度传感器的读数误差。 - **模型误差**:由于模型假设不完全符合实际数据分布,例如线性模型用于非线性关系。 在实际应用中,误差来源的选择需要结合数据的背景知识。例如,在实验数据中,测量误差可以通过多次测量取标准差来估算。对于模型误差,则需要通过残差分析来评估。残差 $ e_i = \hat{y}_i - y_i $ 可以用于估计模型的不确定性,进而调整误差的大小。 ### 误差对最小二乘法的影响 在最小二乘法中,误差的平方和被最小化以获得最佳拟合参数,目标函数为: $$ SSE = \sum_{i=1}^n (\hat{y}_i - y_i)^2 $$ 当数据误差较大时,最小二乘法可能会受到异常值的显著影响,导致拟合结果偏离真实趋势。为了减少误差对拟合的影响,可以采用加权最小二乘法(Weighted Least Squares, WLS),其中每个数据的权重与其误差成反比。权重通常选择为 $ w_i = 1/\sigma_i^2 $,从而使得误差较小的数据对拟合结果的影响更大。 加权最小二乘法的目标函数为: $$ SSE_w = \sum_{i=1}^n w_i (\hat{y}_i - y_i)^2 $$ 在 Python 中,使用 `numpy` 的 `polyfit` 函数可以实现加权最小二乘法拟合: ```python import numpy as np # 示例数据 x = np.array([1, 2, 3, 4, 5]) y = np.array([2.1, 4.0, 6.2, 8.1, 9.9]) weights = np.array([1/0.2**2, 1/0.1**2, 1/0.3**2, 1/0.2**2, 1/0.1**2]) # 加权最小二乘法拟合 coefficients = np.polyfit(x, y, deg=1, w=np.sqrt(weights)) print("拟合参数:", coefficients) ``` ### 模型性能评估 在拟合完成后,可以通过以下指标评估模型的性能: - **MAPE(Mean Absolute Percentage Error)**:平均绝对百分比误差,用于衡量预测值与实际值之间的相对误差。 - **RMSE(Root Mean Square Error)**:均方根误差,用于衡量预测值与实际值之间的绝对误差。 - **R²(决定系数)**:表示模型对数据变异的解释程度,值越接近 1 表示模型拟合效果越好。 这些指标可以帮助选择合适的误差来源,并评估拟合结果的可靠性。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值