【发布时间】: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