【问题标题】:Covariance numbers from Jacobian Matrix in scipy.optimize.least_squaresscipy.optimize.least_squares 中雅可比矩阵的协方差数
【发布时间】:2020-08-11 00:25:12
【问题描述】:

我想为一些数据拟合一条逻辑曲线。 我使用逻辑曲线的一般方程来拟合我的数据。找到它here

def generate_data(t, A, K, C, Q, B, v):

    y = A+ (K-A)*((C+Q*np.exp(-B*t))**(1/v))

    return y

这里 A、K、C、Q、B 和 v 是我想要找到的变量。

我使用scipy.optimize.least_squares 函数获取值来生成我的曲线。

这是参数函数。

def fun(x, t, y):
    return x[0] + (x[1]-x[0])*((x[2]+x[3]*np.exp(-x[4]*t))**(1/x[5])) - y

这就是我所说的实际优化函数。

res_lsq= least_squares(fun, x0, args=(x_coord, y_coord))

从视觉上看,曲线非常适合数据。

然后我通过这种方法计算了协方差矩阵。

J = res_lsq.jac
cov = np.linalg.inv(J.T.dot(J))

然后使用这种方法的方差。

var = np.sqrt(np.diagonal(cov))

问题在于这些是我的参数的值。

Parameters= [ 1.94624122  5.66832958  5.21005677 -4.87025481  0.02520876  0.15057123 ]

这些是我的方差值。

Variance= [3.38436210e-01 3.94262000e+03 8.30968350e+02 7.76773161e+02
 6.44604446e-05 6.49474460e-04]

一个值为 3942 的参数 rhat 是 5.66 这些值是什么意思?这些数据是否真的显示了曲线与数据的拟合程度?我如何获得这样的数量,例如 p 值的类似物等?

【问题讨论】:

    标签: python numpy scipy least-squares scipy-optimize


    【解决方案1】:

    我也遇到了类似的问题。

    我找到了一个类似的question

    他们解释说,您需要将您提到的 cov 乘以均方误差,即 ``sum[(f(x)-y)^2]/(Nn)```,其中N 是数据的长度,n 是您要拟合的参数数量。它可能会产生一个小数字,并且您的方差可能会减少。

    一切顺利,

    穆里洛

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      • 2017-12-26
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      相关资源
      最近更新 更多