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

如何利用scipy.optimize.curve_fit输出的协方差矩阵计算R平方?

如何基于scipy.optimize.curve_fit结果计算R平方

关键前提

scipy.optimize.curve_fit输出的协方差矩阵无法直接计算R平方。协方差矩阵仅用于评估拟合参数的不确定性(比如参数的标准差),而R平方是衡量模型拟合优度的指标,计算依赖原始数据和拟合值,与协方差矩阵无关。

R平方的计算方法

R平方的核心公式为:

R² = 1 - (残差平方和 / 总平方和)
其中:

  • 残差平方和(SS_res):真实值与拟合值的差的平方和
  • 总平方和(SS_tot):真实值与自身均值的差的平方和

具体实现代码

import numpy as np
from scipy.optimize import curve_fit

# 定义自定义拟合函数
def fit_func(x, a, b, c):
    return a * np.exp(-b * x) + c

# 准备数据(示例)
x_data = np.linspace(0, 5, 50)
y_true = 3 * np.exp(-0.5 * x_data) + 1
y_data = y_true + np.random.normal(0, 0.2, size=x_data.shape)

# 执行曲线拟合
params, cov_matrix = curve_fit(fit_func, x_data, y_data)

# 计算拟合值
y_fit = fit_func(x_data, *params)

# 计算R平方
ss_res = np.sum((y_data - y_fit) ** 2)
ss_tot = np.sum((y_data - np.mean(y_data)) ** 2)
r_squared = 1 - (ss_res / ss_tot)

print(f"拟合的R平方值: {r_squared:.4f}")

协方差矩阵的用途(补充)

协方差矩阵的对角元素对应各拟合参数的方差,取平方根可得到参数的标准差,用于判断参数的可靠性:

param_std_errors = np.sqrt(np.diag(cov_matrix))
print(f"各参数的标准差: {param_std_errors}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:25:24