Hi, What happens if you construct the covariance matrix as:
covar = (J^T.X.J)^-1 , Where X is a square matrix of dimension n, the number of data points (here time points). All elements of X are zero except for the diagonal which is equal to the intensity errors squared. I.e. this is the peak intensity covariance matrix, where the covariances are zero as the peak intensity errors are not dependent on each other and diagonal is simply the peak errors squared or the variances. This is from https://en.wikipedia.org/wiki/Propagation_of_uncertainty#Non-linear_combinations : cov(f) = J.cov(x).J^T. The J matrices might be transposed in Wikipedia's definition compared to ours. Maybe this would solve the problem of the errors being too high? Regards, Edward On 27 August 2014 11:41, Troels Emtekær Linnet <tlin...@nmr-relax.com> wrote: > Hi Edward. > > There is no scaling involved when calculating. > > What I meant with scaling is correction to the co-variance matrix. > Related to errors, or similar. > > But I haven't figured it out yet. > > > Best > Troels > > 2014-08-27 11:33 GMT+02:00 Edward d'Auvergne <edw...@nmr-relax.com>: >> Does it give the same small result? Try turning off parameter scaling. >> >> Regards, >> >> Edward >> >> On 27 August 2014 11:29, <tlin...@nmr-relax.com> wrote: >>> Author: tlinnet >>> Date: Wed Aug 27 11:29:24 2014 >>> New Revision: 25330 >>> >>> URL: http://svn.gna.org/viewcvs/relax?rev=25330&view=rev >>> Log: >>> Tried to implement the Jacobian from C-code. >>> >>> This though also report errors which are to small. >>> >>> Maybe some scaling is wrong. >>> >>> task #7822(https://gna.org/task/index.php?7822): Implement user function to >>> estimate R2eff and associated errors for exponential curve fitting. >>> >>> Modified: >>> trunk/specific_analyses/relax_disp/estimate_r2eff.py >>> >>> Modified: trunk/specific_analyses/relax_disp/estimate_r2eff.py >>> URL: >>> http://svn.gna.org/viewcvs/relax/trunk/specific_analyses/relax_disp/estimate_r2eff.py?rev=25330&r1=25329&r2=25330&view=diff >>> ============================================================================== >>> --- trunk/specific_analyses/relax_disp/estimate_r2eff.py (original) >>> +++ trunk/specific_analyses/relax_disp/estimate_r2eff.py Wed Aug 27 >>> 11:29:24 2014 >>> @@ -42,7 +42,7 @@ >>> from specific_analyses.relax_disp.variables import MODEL_R2EFF >>> from specific_analyses.relax_fit.optimisation import func_wrapper, >>> dfunc_wrapper, d2func_wrapper >>> from target_functions.chi2 import chi2_rankN >>> -from target_functions.relax_fit import setup >>> +from target_functions.relax_fit import jacobian, setup >>> >>> >>> # Scipy installed. >>> @@ -734,7 +734,7 @@ >>> E.set_settings_minfx(min_algor=min_algor) >>> >>> # Do C code >>> - do_C = False >>> + do_C = True >>> >>> if do_C: >>> # Initialise the function to minimise. >>> @@ -766,19 +766,27 @@ >>> param_vector, chi2, iter_count, f_count, g_count, h_count, warning = >>> results_minfx >>> >>> # Get the Jacobian. >>> - # First make a call to the Jacobian function, which store it in the >>> class. >>> - E.func_exp_grad(params=param_vector) >>> - jacobian_matrix = deepcopy(E.jacobian_matrix) >>> - >>> + if do_C: >>> + # First make a call to the Jacobian function, which store it in >>> the class. >>> + jacobian_matrix = transpose(asarray( jacobian(param_vector) ) ) >>> + >>> + # Compare with python code. >>> + #E.func_exp_grad(params=param_vector) >>> + #jacobian_matrix2 = deepcopy(E.jacobian_matrix) >>> + #print jacobian_matrix >>> + #print " " >>> + #print jacobian_matrix2 >>> + else: >>> + jacobian_matrix = deepcopy(E.jacobian_matrix) >>> + >>> + # Get the co-variance >>> + pcov = E.multifit_covar(J=jacobian_matrix) >>> + >>> + # To compute one standard deviation errors on the parameters, take the >>> square root of the diagonal covariance. >>> + param_vector_error = sqrt(diag(pcov)) >>> # Set error to inf. >>> #param_vector_error = [inf, inf] >>> >>> - # Get the co-variance >>> - pcov = E.multifit_covar(J=jacobian_matrix) >>> - >>> - # To compute one standard deviation errors on the parameters, take the >>> square root of the diagonal covariance. >>> - param_vector_error = sqrt(diag(pcov)) >>> - >>> # Pack to list. >>> results = [param_vector, param_vector_error, chi2, iter_count, >>> f_count, g_count, h_count, warning] >>> >>> >>> >>> _______________________________________________ >>> relax (http://www.nmr-relax.com) >>> >>> This is the relax-commits mailing list >>> relax-comm...@gna.org >>> >>> To unsubscribe from this list, get a password >>> reminder, or change your subscription options, >>> visit the list information page at >>> https://mail.gna.org/listinfo/relax-commits >> >> _______________________________________________ >> relax (http://www.nmr-relax.com) >> >> This is the relax-devel mailing list >> relax-devel@gna.org >> >> To unsubscribe from this list, get a password >> reminder, or change your subscription options, >> visit the list information page at >> https://mail.gna.org/listinfo/relax-devel _______________________________________________ relax (http://www.nmr-relax.com) This is the relax-devel mailing list relax-devel@gna.org To unsubscribe from this list, get a password reminder, or change your subscription options, visit the list information page at https://mail.gna.org/listinfo/relax-devel