Re: [Ifeffit] nonsensical negative values / restrictions

2017-06-23 Thread Felix E. Feiten

Dear Bruce,

thank you very much for your quick and thorough answer.

I used to do I/V-LEED to do structural characterization of surfaces and 
there it was pretty common to get stuck in local minima. So my fear was 
that this negative R-factor corresponds to a local minimum and that 
there is actually a better minimum with reasonable values.


I have noticed that there is some dependence of the fitting results on 
the start values used. Also, in one of the very useful videos of you 
giving talks about EXAFS you mentioned that the Levenberg-Marquardt 
algorithm can end up in a local minimum. However, I'm starting to get 
the feeling that this is much less of a problem in EXAFS analysis than 
in my previous field. I guess one of the reasons might be that a fit in 
IFEFFIT/Artemis takes seconds whereas a single datapoint (i.e. a fully 
dynamical scattering calculation for one trial structure) in I/V-LEED 
would take ~30 mins.


After having done some systematic variation of parameters with a little 
script I wrote (more on that in the respective thread) I'm starting to 
realize that the hyperspace in EXAFS fitting seems rather shallow (at 
least for my samples).


I don't think that the reason for the physically unreasonable results is 
a systematic error, as I have a number of different samples measured in 
one beamtime and some of them are fine while others have varying issues 
(mostly with too high/low sigma^2 and it's correlation with N).


With kind regards

Felix


On 17/06/2017 00:10, Bruce Ravel wrote:

Felix,

When you fit your EXAFS data using Artemis + Ifeffit or Larch, you are 
using a Levenberg-Marquardt non-llinear, steepest descent algorithm. 
The fit does kn ow anything /at all/ about what you are trying to do. 
It doesn't know what a sensible value for sigma^2 or any other 
parameter is.  All it knows is that you have data and a model that you 
are throwing at the data.


Armed with data and model, the algorithm optimizes the parameters that 
you have flagged as the variables.  It changes those values until it 
makes the sum of the paths look as much like the data as possible.  
It's goal is to make the red line look like the blue line.  That's it. 
That's all it does.  That's how sigma^2 can come out as a negative 
number.


A negative sigma^2 or any other nonsensical parameter doesn't 
represent a failure of Artemis.  It is information that is useful to 
you, the person doing the fit.


A nonsense parameter is trying to tell you about a way that the model 
you have proposed does not represent the data that you have measured. 
And it is a hint about what changes you need to explore in your model 
to more properly represent the data.


An example: suppose you have an unknown oxide phase and you have 
reason to believe it is some sort of highly disordered phase. Just to 
pull an example out of the air, you might think that your sample is 
filled with FeO(OH) when in fact it is filled with FeO. FeO(OH) is 
pretty disordered, whereas FeO is rocksalt.  If you run Feff on 
Feo(OH), you will get a spread of paths at several distances for the 
first shell. When you make the fit with the FeO(OH) model, the 
structural contribution to the disorder is MUCH higher than in the 
actual sample. The fit is likely to use a negative sigma^2 to 
counteract that effect.


That's a simple and contrived "explaining example", but it makes the 
point (I hope).  Artemis didn't fail.  The fit is trying to tell you 
that you assumptions were not realized in the data.


In short, I agree that your results make no sense, but I suggest that 
the problem is that you are making a poor assumption in your fitting 
model.


It also might be the case that there is a problem with the measurement 
of your data that introduces a systematic error that the fit 
compensates for by applying a weird parameter value.


Or maybe you have a sulfide instead of the oxide you were expecting.

Or maybe you ran Feff for the Pt K edge rather than the Pt L3 edge. 
(Oops! I actually do that with embarrassing frequency)


Or something else I haven't thought of

HTH,
B


On 06/16/2017 02:09 AM, Felix E. Feiten wrote:

Dear all,

I have the following problem:

In some fits using Artemis (Demeter 0.9.25) I will get negative 
values for parameters where it makes no sense at all.
For example, when trying to fit two first shell paths, Pt-Pt and 
Pt-O, for a Pt nanoparticle,

sigma^2 for the Pt-O path becomes negative.

Obviously, sigma^2 has to be a positive number.

My questions:

1. Why does the fit algorithm do this?

2. What can I do to avoid this?

I know that there are most likely significant problems with my fit if 
this behaviour occurs.
As far as I know it's possible to impose restrictions in Artemis and 
if anyone could point me
towards a tutorial explaining how to implement restrictions that 
might be a first step in the right direction.
Currently, the chapter "Constraints and restraints" in the Artemis 
documentation is "Coming 

Re: [Ifeffit] nonsensical negative values / restrictions

2017-06-16 Thread Bruce Ravel

Felix,

When you fit your EXAFS data using Artemis + Ifeffit or Larch, you are 
using a Levenberg-Marquardt non-llinear, steepest descent algorithm. The 
fit does kn ow anything /at all/ about what you are trying to do. It 
doesn't know what a sensible value for sigma^2 or any other parameter 
is.  All it knows is that you have data and a model that you are 
throwing at the data.


Armed with data and model, the algorithm optimizes the parameters that 
you have flagged as the variables.  It changes those values until it 
makes the sum of the paths look as much like the data as possible.  It's 
goal is to make the red line look like the blue line.  That's it. That's 
all it does.  That's how sigma^2 can come out as a negative number.


A negative sigma^2 or any other nonsensical parameter doesn't represent 
a failure of Artemis.  It is information that is useful to you, the 
person doing the fit.


A nonsense parameter is trying to tell you about a way that the model 
you have proposed does not represent the data that you have measured. 
And it is a hint about what changes you need to explore in your model to 
more properly represent the data.


An example: suppose you have an unknown oxide phase and you have reason 
to believe it is some sort of highly disordered phase.  Just to pull an 
example out of the air, you might think that your sample is filled with 
FeO(OH) when in fact it is filled with FeO.  FeO(OH) is pretty 
disordered, whereas FeO is rocksalt.  If you run Feff on Feo(OH), you 
will get a spread of paths at several distances for the first shell. 
When you make the fit with the FeO(OH) model, the structural 
contribution to the disorder is MUCH higher than in the actual sample. 
The fit is likely to use a negative sigma^2 to counteract that effect.


That's a simple and contrived "explaining example", but it makes the 
point (I hope).  Artemis didn't fail.  The fit is trying to tell you 
that you assumptions were not realized in the data.


In short, I agree that your results make no sense, but I suggest that 
the problem is that you are making a poor assumption in your fitting model.


It also might be the case that there is a problem with the measurement 
of your data that introduces a systematic error that the fit compensates 
for by applying a weird parameter value.


Or maybe you have a sulfide instead of the oxide you were expecting.

Or maybe you ran Feff for the Pt K edge rather than the Pt L3 edge. 
(Oops! I actually do that with embarrassing frequency)


Or something else I haven't thought of

HTH,
B


On 06/16/2017 02:09 AM, Felix E. Feiten wrote:

Dear all,

I have the following problem:

In some fits using Artemis (Demeter 0.9.25) I will get negative values 
for parameters where it makes no sense at all.
For example, when trying to fit two first shell paths, Pt-Pt and Pt-O, 
for a Pt nanoparticle,

sigma^2 for the Pt-O path becomes negative.

Obviously, sigma^2 has to be a positive number.

My questions:

1. Why does the fit algorithm do this?

2. What can I do to avoid this?

I know that there are most likely significant problems with my fit if 
this behaviour occurs.
As far as I know it's possible to impose restrictions in Artemis and if 
anyone could point me
towards a tutorial explaining how to implement restrictions that might 
be a first step in the right direction.
Currently, the chapter "Constraints and restraints" in the Artemis 
documentation is "Coming soon..".


With kind regards,

Felix


___
Ifeffit mailing list
Ifeffit@millenia.cars.aps.anl.gov
http://millenia.cars.aps.anl.gov/mailman/listinfo/ifeffit
Unsubscribe: http://millenia.cars.aps.anl.gov/mailman/options/ifeffit



--
 Bruce Ravel   bra...@bnl.gov

 National Institute of Standards and Technology
 Synchrotron Science Group at NSLS-II
 Building 743, Room 114
 Upton NY, 11973

 Homepage:http://bruceravel.github.io/home/
 Software:https://github.com/bruceravel
 Demeter: http://bruceravel.github.io/demeter/
___
Ifeffit mailing list
Ifeffit@millenia.cars.aps.anl.gov
http://millenia.cars.aps.anl.gov/mailman/listinfo/ifeffit
Unsubscribe: http://millenia.cars.aps.anl.gov/mailman/options/ifeffit