używam scipy.odr
w celu dokonania dopasowanie z niepewnością na obu xiy po tym pytaniu Correct fitting with scipy curve_fit including errors in x?Jak obliczyć błąd standardowy z wyników ODR?
Po pasowaniu chciałbym obliczyć niepewność na temat parametrów. Tak więc patrzę na pierwiastek kwadratowy z przekątnych elementów macierzy kowariancji. I otrzymujemy:
>>> print(np.sqrt(np.diag(output.cov_beta)))
[ 0.17516591 0.33020487 0.27856021]
Ale w Output
istnieje również output.sd_beta
który jest, według doc on odr
błędy standardowe szacowanych parametrów, kształtu (P,).
Ale to nie daje mi takie same wyniki:
>>> print(output.sd_beta)
[ 0.19705029 0.37145907 0.31336217]
EDIT
To jest przykład na notebooku: https://nbviewer.jupyter.org/github/gvallverdu/cookbook/blob/master/fit_odr.ipynb
z najmniejszym placu
stop reason: ['Sum of squares convergence']
params: [ -1.94792946 11.03369235 -5.43265555]
info: 1
sd_beta: [ 0.26176284 0.49877962 0.35510071]
sqrt(diag(cov): [ 0.25066236 0.47762805 0.34004208]
Z ODR
stop reason: ['Sum of squares convergence']
params: [-1.93538595 6.141885 -3.80784384]
info: 1
sd_beta: [ 0.6941821 0.88909997 0.17292514]
sqrt(diag(cov): [ 0.01093697 0.01400794 0.00272447]
Czy zbieżność ODR była zbieżna? Co to jest "output.reason"? –
atrybut 'output.stopreason' is 'Limit iteracji osiągnięty'. Zrobiłem wyraźny odr z 'fit_type = 0'. Dopasowanie wygląda dobrze, ale może liczba iteracji nie wystarczy! 'output.info' to 4. – Ger
Nie sądzę, że możesz ufać' cov_beta' i 'sd_beta', jeśli ODR nie ma konwergencji na rozwiązaniu. Spróbuj ustawić 'maxiter' na coś dużego lub sprawdź' output.stopreason' i wywołaj 'output = odr.reset ()' jeśli ODR jeszcze się nie połączy. –