Uzyskanie standardowych błędów na dopasowanych parametrach za pomocą metody optimize.leastsq w pythonie
Mam zestaw danych (przemieszczenie vs czas), które dopasowałem do kilku równań za pomocą metody optimize.leastsq. Teraz szukam wartości błędów dla dopasowanych parametrów. Przeglądając dokumentację macierz wyprowadzona jest macierzą jacobijską i muszę ją pomnożyć przez macierz resztkową, aby uzyskać moje wartości. Niestety nie jestem statystykiem, więc tonę nieco w terminologii.
Z tego, co rozumiem, wszystko, czego potrzebuję, to macierz kowariancji, która pasuje do moich dopasowanych parametrów, więc mogę przekroić elementy diagonalne, aby uzyskać standardowy błąd w dopasowanych parametrach. Mam mgliste wspomnienie, że macierz kowariancji jest tym, co jest wyprowadzane z metody optimize.leastsq. Czy to jest poprawne? Jeśli nie, to w jaki sposób uzyskać macierz rezydualną, aby pomnożyć wyprowadzony Jacobian przez macierz kowariancji?
Każda pomoc byłaby bardzo mile widziana. Jestem bardzo nowy w pytonie i dlatego przepraszam, jeśli pytanie okaże się podstawowe.
kod dopasowania jest następujący:
fitfunc = lambda p, t: p[0]+p[1]*np.log(t-p[2])+ p[3]*t # Target function'
errfunc = lambda p, t, y: (fitfunc(p, t) - y)# Distance to the target function
p0 = [ 1,1,1,1] # Initial guess for the parameters
out = optimize.leastsq(errfunc, p0[:], args=(t, disp,), full_output=1)
Argumenty t i disp są tablicą wartości czasu i przesunięcia (w zasadzie tylko 2 kolumny danych). Zaimportowałem wszystko, co potrzebne w górnej części kodu. Dopasowane wartości i macierz dostarczone przez dane wyjściowe są następujące:
[ 7.53847074e-07 1.84931494e-08 3.25102795e+01 -3.28882437e-11]
[[ 3.29326356e-01 -7.43957919e-02 8.02246944e+07 2.64522183e-04]
[ -7.43957919e-02 1.70872763e-02 -1.76477289e+07 -6.35825520e-05]
[ 8.02246944e+07 -1.76477289e+07 2.51023348e+16 5.87705672e+04]
[ 2.64522183e-04 -6.35825520e-05 5.87705672e+04 2.70249488e-07]]
Podejrzewam, że w tej chwili dopasowanie jest trochę podejrzane. Zostanie to potwierdzone, gdy będę mógł wyciągnąć błędy.