I have a couple of questions regarding how the outlier rejection in Iolite works.
I am using Iolite (version 3.65, with Igor Pro 7.08 on a Windows computer) to process U–Pb geochronology data with either the Vizualage or VizualageUcomPbine DRS.
My questions came up looking at a dataset with some very low U and Pb samples. In these analyses, some sweeps would have zero counts on 206Pb. These sweeps give extreme negative spikes in the DC207206 channel (e.g. –100), presumably because the baseline-corrected 206Pb becomes a very small negative number. I have found some problems with the final 207Pb/206Pb for these sample, and my suspicion is that these negative spikes are not being rejected as outliers, and that this is biasing the final 207Pb/206Pb calculated for these analyses. For this reason I am trying to understand how Iolite and/or the VizualAge DRSs remove outliers.
My specific questions are:
(1) Under “General settings” in the DRS tab, for ‘Stats for normal selections’ one can select (for example) ‘Mean with 3 S.D. outlier reject’, or ‘Median with MAD error 3S.D. outlier reject’. From experimenting with integrating different windows of the problem analyses, it seems to me that in the calculated DC207206 for that analysis (as seen in the Results tab), the large negative spikes were not rejected if Mean with 3 S.D. outlier reject is selected, but they are rejected if Median with MAD error 3S.D. outlier reject is selected. Am I correct that this is the case? And if so, what is the reason for not excluding the negative spikes in the former case?
(2) With either Vizualage or VizualageUcomPbine as the active DRS, I find the following code when I select to edit the active DRS:
//NOTE the next line smooths all waves generated at this point. The aim of this is ONLY to remove outliers. averaging should take care of normal data noise. It seems to be currently screening large spikes well, may need to be reduced if it turns out it's not catching all spikes) //next smooth the wave to replace outlier values with NaN. Note this only replaces positive spikes! //Note that "abs()" is used to avoid rare cases containing negative ratios (low counts for an isotope, where some datapoints are 0, combined with a baseline spline above zero produces negative baseline-corrected values) //Smooth/M=(abs(FitOutlierTolerance*(ThisWave[p]+ThisWave[p+1]+ThisWave[p-1])/3))/R=(NaN) 9, ThisWave //aiming at only removing spikes. set here at 1.5 times the average value for this portion of the wave (9 point range centered on this point) ThisWave = (abs(ThisWave[p]-ThisWaveMedian[p]) >= outlierRatioToMedian*ThisWaveMedian[p]) ? NaN : ThisWave[p]
My questions are:
(a) is this an additional outlier rejection specific to Vizualage, and separate to Iolite’s general settings outlier rejection?
(b) The commenting of the code above seems to state that it is explicitly designed NOT to replace negative spikes in cases like mine (zero counts that become negative when baseline corrected). What is the rationale for not rejecting such spikes? At least in terms of DC207206 these clearly give unreasonable numbers that should not be considered, so I would like to have at least the option of filtering them out. That said, from my reading of the above line of (uncommented) code I would have thought that large negative spikes would actually be removed, since the absolute value of a large negative number minus a small positive number [to use an example of DC207206: abs(–40 – 0.6) = 40.6] is still a very large number that, at least in this example, should exceed the threshold.
Any insights into how any or all of these various outlier rejections are operating would be very welcome! I have a screenshot showing an example with many huge negative spikes that I could email if that would help.
University of Bern
You must be logged in to reply to this topic.