Why isn't `curve_fit` able to estimate the covariance of the parameter if the parameter fits exactly? Why isn't `curve_fit` able to estimate the covariance of the parameter if the parameter fits exactly? numpy numpy

Why isn't `curve_fit` able to estimate the covariance of the parameter if the parameter fits exactly?


The formula for the covariance of the parameters (Wikipedia) has the number of degrees of freedom in the denominator. The degrees of freedoms are computed as (number of data points) - (number of parameters), which is 1 - 1 = 0 in your example. And this is where SciPy checks the number of degrees of freedom before dividing by it.

With xdata = [1, 2], ydata = [1, 2] you would get zero covariance (note that the model still fits exactly: exact fit is not the problem).

This is the same sort of issue as sample variance being undefined if the sample size N is 1 (the formula for sample variance has (N-1) in the denominator). If we only took size=1 sample out of the population, we don't estimate the variance by zero, we know nothing about the variance.