Минимизация Lmfit с 2 независимыми переменными дает несоответствующий результат - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь использовать ограничение с двумя независимыми (x1, x2) переменными. В качестве уравнения используется модифицированная модель баса . Результат минимизации c не соответствует правильной оценке параметра 'q' (отрицательное значение), поэтому график изображен неправильно. Предположительно, я выполнил что-то изношенное, не могли бы вы помочь решить?

import pandas as pd
import numpy as np
from lmfit import Parameters, fit_report, minimize

#Define Data & Variables
x1=np.array(df['cumulative__sales'])
x2=np.array(df['cumulative_sales_2'])
y_p=df['sales']

t1=np.linspace(1,55,(len(yp)))

def b_func(params,x1,x2,yp):   
    p = params['p']
    m = params['m']
    q = params['q']
    b = params['b']
    model= (p*m)+(q-p)*x1+(-q/m)*x1**2+(x2*b)*(m-x1)
    return model - yp

# Define Parameters
params = Parameters()
params.add('m', value=1003)
params.add('p', value=0.03, min=0.0001)
params.add('q', value=0.05,  min=0.001)
params.add('b', value=-0.05)

# For non-linear leastsq algorithm
minner = Minimizer(b_func, params, fcn_args=(x1,x2,yp))
result = minner.minimize()

Отчет показывает, что параметр «q» отрицательный (оценка неверна). если я добавлю границу min = 0.001, то параметр вообще не рассчитывается и равен начальному значению.

# Final result
final = yp + result.residual
report_fit(result)



           m:  1281.66188  (3.58%) (init = 1003)
           p:  0.01251625  (9.86%) (init = 0.03)
Negative - > q: -0.47443242  (37.85%) (init = 0.05)
           b:  3.3332e-04  (36.21%) (init = -0.05)

Но по правилу Басса это не могло быть возможным, потому что покупателей нет. Таким образом, диаграмма неправильно отображает значение Y, она должна располагаться в форме буквы S (идет по касательной). С отрицательным значением P:

введите здесь описание изображения

Типичное уравнение и график без дополнительной переменной x2, только x1 и Y: введите описание изображения здесь

введите описание изображения здесь

Модифицированная версия уравнения: введите описание изображения здесь

График с минимальной границей q = 0,01, но параметр не вычисляется и всегда равен начальному значению.

введите здесь описание изображения

Спасибо за ваше время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...