Я хотел бы подогнать кривую логистики c к некоторым данным. Я использовал общее уравнение кривой logisti c, чтобы соответствовать моим данным. Найдите его здесь .
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 - переменные, которые я хотел найти.
Я использовал * Функция 1008 * для получения значений для создания моей кривой.
Это была функция аргумента.
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, для параметра - 5.66. Что эти значения означают? Эти данные действительно показывают, насколько хорошо кривая соответствует данным? Как мне получить такое количество, как аналог p-значения et c.