小编Fub*_*ini的帖子

curve_fit拟合高度相关数据的问题

对于我的学士论文,我正在研究一个项目,我想对一些数据进行拟合。问题有点复杂,但我试图在这里最小化问题:

我们有三个数据点(可用的理论数据很少),但这些点高度相关。

使用 curve_fit 来拟合这些点,我们得到了一个可怕的拟合结果,正如您在这张图中看到的那样。(通过手动更改拟合参数可以轻松改善拟合)。

我们的拟合结果具有相关性(蓝色)和被忽略的相关性(橙色):

在此输入图像描述

当我们使用更多参数时,结果会更好(因为那时拟合的行为本质上就像求解一样)。

我的问题:为什么会出现这种行为?(我们使用自己的最小二乘算法来解决我们的特定问题,但它也遇到了同样的问题)。这是一个数值问题,还是有什么充分的理由让 curve_fit 显示这个解决方案?

我很高兴能有一个很好的解释来说明为什么我们不能使用“仅 2 个”参数来拟合这三个高度相关的数据点。

import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
plt.rcParams['lines.linewidth'] = 1

y = np.array([1.1994, 1.0941, 1.0047])
w = np.array([1, 1.08, 1.16])
cor = np.array([[1, 0.9674, 0.8812],[0.9674, 1, 0.9523], [0.8812, 0.9523, 1]])
s = np.array([0.0095, 0.0104, 0.0072])

def f(x, a, b):
    return a + b*x

cov = np.zeros((3,3))
for i in range(3):
    for j in range(3):
        cov[i,j] = cor[i,j] * s[i] * s[j]

A1, …
Run Code Online (Sandbox Code Playgroud)

python physics curve-fitting scipy data-science

3
推荐指数
1
解决办法
1696
查看次数

标签 统计

curve-fitting ×1

data-science ×1

physics ×1

python ×1

scipy ×1