Am Dienstag, 19. Juni 2007 20:38 schrieb Matt Newville:
Hi Jörg,
On Tuesday 19 June 2007, Jörg Haug wrote:
Dear all,
I have a question regarding the weighting for a multiple data set fitting. I found that there is the parameter Epsilon to do this in Artemis. But in the help file there is no description how to use this parameter. Which value did I have to use to set the weighting to (for example) double or half? Best regards
It's a little bit convoluted -- probably more so than it should be -- to modify the weightings for different data sets in a fit using multiple data sets. It's also poorly documented. It is discussed in some detail in the older Feffit documentation that's on the Ifeffit web site.
The approach is to specify epsilon_r or epsilon_k for each data set. The two values are related and specifying either one is sufficient for the feffit() command to calculate the appropriate one. For fits in R space, epsilon_r is used as the weighting factor: For a single data set, the quantity minimized in the best fit is chi_square = (1 / N ) Sum_i=1^N { [Data_i - Fit_i]^2 / epsilon_r^2 }
where the sum is over N R-space points. The data spacing for chi(R) is set by the Fourier transform range and k-grid, so that points in R space are ~0.03Ang apart. Since we really ought to be careful about how much information is in our data, the sum might be better (though less stable) if the spacing were given by the spectral resolution (see other recent discussions!) of pi/(2*Delta k), which would make the sum go to N_idp instead of N.
We take that into account, and also assume that there is no R dependence of epsilon_r, so that chi_square becomes chi_square = N_idp / (N epsilon_r^2) Sum_i=1^N [ Data_i - Fit_i]^2
for one data set. For multiple data sets, there's an outer sum, so the weighting factors applied actually take N_idp and N (for each data set!) into account. For a fit with M data sets, chi_square = SUM_j=1^M { N_idp_j /(N_j epsilon_r_j^2) Sum_i=1^N_j [ Data_ij - Fit_ij]^2 }
The upshot is that if you want "equal weighting" to spectra with different k- and R-ranges and/or different noise levels, you might have to be a little careful in how you set epsilon_r (or, equivalently epsilon_k) for each data set. For the simplest case of the different data sets having equal k- and R- ranges, you can just double an epsilon_k for a particular data set to mean "accept a fit that's twice as bad for this data set".
Cheers,
--Matt
Thanks Matt and Bruce for the answers. I will try to play with this parameter now a little bit. -- Dr. Jörg Haug Martin-Luther-Universität Halle-Wittenberg Institut für Physik Anorganisch-Nichtmetallische Materialien Friedemann-Bach-Platz 6 D-06108 Halle Telefon: 0345 55 25 529 Fax: 0345 55 27 159 e-mail: joerg.haug@physik.uni-halle.de http://www.physik.uni-halle.de/Fachgruppen/Glas/arbeitsgruppen/anw.htm