You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用曲线拟合所得标准差误差绘制误差棒?

关于用curve_fit参数标准差绘制带误差拟合曲线的解答

你的理解完全正确——curve_fit返回的协方差矩阵确实可以用来计算拟合参数的标准差,并且你完全可以利用这些标准差来展示拟合曲线的不确定性(比如绘制误差棒或误差区间)。

原理简单说明

  • pcov是拟合参数的协方差矩阵,它的对角元素代表每个参数自身的方差,对这些元素开平方得到的perr就是对应参数的标准差,反映了参数估计的不确定性。
  • 参数的不确定性会传递到拟合结果上,我们可以通过让每个参数在参数值±标准差的范围内变动,计算出拟合曲线的上下边界,以此展示拟合结果的误差范围。

修改后的示例代码(实现带误差区间的拟合曲线)

下面是基于你的代码修改后的版本,生成光滑的拟合曲线并填充误差区间:

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

# 原始数据
x = np.arange(0,10)
y = np.array([5,4.8,4.7,4.5,4.4,4.5,4.8,4.9,5,5.1])

# 定义拟合函数
def function(x,a,b,c):
    return a*x**2 + b*x + c

# 绘制原始散点
plt.scatter(x, y, label='原始数据', color='blue')

# 曲线拟合
parameters, pcov = curve_fit(function, x, y)
perr = np.sqrt(np.diag(pcov))
print("各参数标准差:", perr)

# 生成更密集的x值,让拟合曲线更光滑
x_fit = np.linspace(x.min(), x.max(), 100)
# 基准拟合曲线
y_fit = function(x_fit, *parameters)
# 计算参数+标准差对应的拟合曲线上限
y_upper = function(x_fit, *(parameters + perr))
# 计算参数-标准差对应的拟合曲线下限
y_lower = function(x_fit, *(parameters - perr))

# 绘制基准拟合曲线
plt.plot(x_fit, y_fit, label='拟合曲线', color='red')
# 填充误差区间(半透明)
plt.fill_between(x_fit, y_lower, y_upper, color='red', alpha=0.2, label='误差区间')

# 美化图表
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()

补充说明

  • 如果想给离散拟合点加误差棒,可使用plt.errorbar,但对于连续曲线来说,填充误差区间的展示效果更直观。
  • 这里的误差区间基于参数的1σ标准差计算,意味着大约68%的概率下,真实曲线会落在这个区间内。

内容的提问来源于stack exchange,提问作者TryingLearning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 19:43:41