En Scipy, ¿cómo y por qué curve_fit calcula la covarianza de las estimaciones de los parámetros?

he estado usandoscipy.optimize.leastsq para ajustar algunos datos. Me gustaría obtener algunos intervalos de confianza en estas estimaciones, por lo que veo en elcov_x salida, pero la documentación es muy poco clara en cuanto a qué es esto y cómo obtener la matriz de covarianza para mis parámetros a partir de esto.

En primer lugar dice que es un jacobiano, pero en elnotas también dice que "cov_x es una aproximación jacobiana al hessiano "por lo que no es en realidad un jacobiano sino un hessiano que utiliza una aproximación del jacobiano. ¿Cuál de estas afirmaciones es correcta?

En segundo lugar esta frase para mí es confusa:

Esta matriz se debe multiplicar por la varianza residual para obtener la covarianza de las estimaciones de los parámetros.curve_fit.

De hecho, voy a ver el código fuente decurve_fit donde lo hacen

s_sq = (func(popt, *args)**2).sum()/(len(ydata)-len(p0))
pcov = pcov * s_sq

que corresponde a multiplicarcov_x pors_sq pero no puedo encontrar esta ecuación en ninguna referencia. ¿Alguien puede explicar por qué esta ecuación es correcta? Mi intuición me dice que debería ser al revés ya quecov_x se supone que es un derivado (jacobiano o hessiano), así que estaba pensando:cov_x * covariance(parameters) = sum of errors(residuals) dóndesigma(parameters) es lo que quiero.

¿Cómo conecto la cosa que curve_fit está haciendo con lo que veo en, por ejemplo? wikipedia:http://en.wikipedia.org/wiki/Propagation_of_uncertainty#Non-linear_combinations

Respuestas a la pregunta(2)

Su respuesta a la pregunta