我将拟合与 optimize.curve_fit 和 optimize.least_squares 进行比较。使用曲线拟合,我将协方差矩阵 pcov 作为输出,我可以通过以下方式计算拟合变量的标准偏差误差:
perr = np.sqrt(np.diag(pcov))
Run Code Online (Sandbox Code Playgroud)
如果我使用least_squares 进行拟合,则不会得到任何协方差矩阵输出,并且无法计算变量的标准偏差误差。
这是我的例子:
#import modules
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
from scipy.optimize import least_squares
noise = 0.5
N = 100
t = np.linspace(0, 4*np.pi, N)
# generate data
def generate_data(t, freq, amplitude, phase, offset, noise=0, n_outliers=0, random_state=0):
#formula for data generation with noise and outliers
y = np.sin(t * freq + phase) * amplitude + offset
rnd = np.random.RandomState(random_state)
error = …Run Code Online (Sandbox Code Playgroud)