我有一个关于scipy中使用的拟合算法的问题.在我的程序中,我有一组x和y数据点,只有y个错误,并且想要适合一个函数
f(x) = (a[0] - a[1])/(1+np.exp(x-a[2])/a[3]) + a[1]
Run Code Online (Sandbox Code Playgroud)
它.
问题是我使用两个拟合的scipy拟合例程scipy.odr.ODR(使用最小二乘算法)和scipy.optimize,在参数上得到了非常高的错误,并且得到了拟合参数的不同值和误差.我举个例子:
适合scipy.odr.ODR,fit_type = 2
Beta: [ 11.96765963 68.98892582 100.20926023 0.60793377]
Beta Std Error: [ 4.67560801e-01 3.37133614e+00 8.06031988e+04 4.90014367e+04]
Beta Covariance: [[ 3.49790629e-02 1.14441187e-02 -1.92963671e+02 1.17312104e+02]
[ 1.14441187e-02 1.81859542e+00 -5.93424196e+03 3.60765567e+03]
[ -1.92963671e+02 -5.93424196e+03 1.03952883e+09 -6.31965068e+08]
[ 1.17312104e+02 3.60765567e+03 -6.31965068e+08 3.84193143e+08]]
Residual Variance: 6.24982731975
Inverse Condition #: 1.61472215874e-08
Reason(s) for Halting:
Sum of squares convergence
Run Code Online (Sandbox Code Playgroud)
然后适合scipy.optimize.leastsquares:
适合scipy.optimize.leastsq
beta: [ 11.9671859 68.98445306 99.43252045 1.32131099]
Beta Std Error: [0.195503 1.384838 34.891521 45.950556]
Beta Covariance: …Run Code Online (Sandbox Code Playgroud)