Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I tried to fit a dataset with exp decay, curve_fit raise this error "'Covariance of the parameters could not be estimated' ". Then I followed this link to try another package, still gives weird estimations. scipy curve_fit raises "OptimizeWarning: Covariance of the parameters could not be estimated"

X: array([18827., 18828., 18829., 18830., 18831., 18832., 18833., 18834.,
       18835., 18836., 18837., 18838., 18839., 18840., 18841., 18842.,
       18843., 18844., 18845., 18846., 18847., 18848., 18849., 18850.,
       18851., 18852., 18853., 18854., 18855., 18856., 18857., 18858.,
       18859., 18860., 18861., 18862., 18863., 18864., 18865., 18866.,
       18867., 18868., 18869., 18870., 18871., 18872., 18873., 18874.,
       18875., 18876., 18877., 18878., 18880., 18881., 18882., 18883.,
       18884., 18885., 18886., 18887., 18889., 18891., 18892., 18893.,
       18894., 18895., 18896., 18897., 18898., 18899., 18900., 18901.,
       18902., 18903., 18904., 18905., 18906., 18907., 18908., 18909.,
       18910., 18911., 18912., 18913., 18914., 18915., 18916., 18917.,
       18918., 18919., 18920., 18921., 18922., 18923., 18924., 18925.,
       18926., 18927., 18928., 18929., 18930., 18931., 18932., 18933.,
       18934., 18935., 18936., 18937., 18938., 18939., 18940., 18941.,
       18942., 18943., 18944., 18945., 18946., 18947., 18948., 18949.,
       18950., 18951., 18952., 18953., 18954., 18955., 18956., 18957.,
       18958., 18959., 18960., 18961., 18962., 18963., 18964., 18965.,
       18966., 18967., 18968., 18969., 18970., 18971., 18972., 18973.,
       18974., 18975., 18976., 18977., 18978., 18979., 18980., 18981.,
       18982., 18983., 18984., 18985., 18986., 18987., 18988., 18989.,
       18990., 18991., 18992., 18993., 18994., 18995., 18996., 18997.,
       18999., 19000., 19001., 19002., 19003., 19004., 19005., 19006.,
       19007., 19008., 19009., 19010., 19011., 19012., 19013., 19014.,
       19015., 19016., 19017., 19018., 19019., 19020., 19021., 19022.])
y: array([0.25, 0.24, 0.25, 0.27, 0.27, 0.27, 0.26, 0.26, 0.26, 0.26, 0.26,
       0.3 , 0.3 , 0.3 , 0.3 , 0.3 , 0.3 , 0.31, 0.31, 0.31, 0.31, 0.31,
       0.31, 0.35, 0.35, 0.35, 0.35, 0.35, 0.32, 0.32, 0.32, 0.32, 0.32,
       0.32, 0.32, 0.32, 0.32, 0.32, 0.32, 0.28, 0.28, 0.28, 0.28, 0.29,
       0.28, 0.25, 0.25, 0.25, 0.25, 0.26, 0.25, 0.25, 0.24, 0.24, 0.24,
       0.24, 0.22, 0.22, 0.23, 0.23, 0.23, 0.24, 0.24, 0.24, 0.24, 0.24,
       0.24, 0.25, 0.24, 0.24, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24, 0.24,
       0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24,
       0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24,
       0.23, 0.23, 0.23, 0.25, 0.25, 0.23, 0.23, 0.23, 0.23, 0.23, 0.23,
       0.23, 0.21, 0.21, 0.2 , 0.2 , 0.2 , 0.21, 0.21, 0.21, 0.21, 0.21,
       0.21, 0.21, 0.21, 0.19, 0.19, 0.19, 0.2 , 0.2 , 0.2 , 0.2 , 0.19,
       0.19, 0.2 , 0.2 , 0.2 , 0.2 , 0.2 , 0.2 , 0.2 , 0.2 , 0.2 , 0.2 ,
       0.2 , 0.22, 0.22, 0.22, 0.2 , 0.2 , 0.2 , 0.2 , 0.2 , 0.19, 0.19,
       0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.24, 0.25, 0.25, 0.25,
       0.25, 0.26, 0.26, 0.31, 0.31, 0.31, 0.33, 0.33, 0.33, 0.32, 0.29,
       0.29, 0.29, 0.29, 0.29, 0.29, 0.29, 0.29, 0.29, 0.29, 0.29, 0.29,
       0.29, 0.29, 0.26, 0.26, 0.26])

Could someone guide me through, please?

Guide you through what? You haven't included the code, so what can anybody say about it? Have you provided reasonable start values? – Mr. T Feb 8, 2022 at 0:31 Well, this is the scatter plot of your data. Why would you try to fit this with an exponential decay function? – Mr. T Feb 8, 2022 at 0:36

This warning is telling you that one or more variables are not actually changing the fit. Based on your parameter report and the range of data, the problem is almost certainly because your initial values are so far off as to be useless starting points for refinement. It also seems very likely that the data is not explained well by an exponential decay.

To do curve fitting you must start with plausible initial values for all parameters that are not absurdly far off. Plot your data with your initial model before starting your fit.

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.