我试图使用lmfit,但得到的参数是零星的结果:import numpy as np
import scipy.stats as sp
from scipy.optimize import curve_fit
from lmfit import minimize, Parameters, Parameter, report_fit
x = [0.01,
0.02,
0.03,
0.04,
0.05,
0.06,
0.07,
0.08,
0.09,
0.1,
0.2,
0.3,
0.4,
0.5,
0.6,
0.7,
0.8,
0.9,
0.99999999,]
#some paramters to try to estimate
sigma1 = 6
scale1 = np.exp(5)
#generate values to use to fit
y = sp.lognorm(sigma1,scale=scale1).ppf(x)
#function set-up to use in lmfit
def invlognorm(params,x,data):
sigma = params['sigma']
mu = params['mu']
model = sp.lognorm(sigma,scale=mu).ppf(x)
return model - data
params = Parameters()
params.add('sigma', value= 1,)
params.add('mu', value= 1, )
# do fit, here with leastsq model
result = minimize(invlognorm,params, method = 'least-squares',args=(x, y))
最后检查结果
^{pr2}$
但这些与原始价值相差甚远。在
这里发生了什么事,有什么帮助吗?我怎样才能解决这个问题,从而得出合理的结果?在