|
Calling Sequence
|
|
Hampel( signal )
Hampel( signal, radius )
Hampel( signal, radius, numstddevs )
|
|
Parameters
|
|
signal
|
-
|
1-D rtable or list of data.
|
radius
|
-
|
(optional) positive integer which defines the radius, in number of sample points, of each window used to determine if a point is an outlier. The default is 3.
|
numstddevs
|
-
|
(optional) positive numeric value which specifies the number of standard deviations a sample point must be within the median to not be considered an outlier. The default is 3.0.
|
|
|
|
|
Options
|
|
•
|
output : The type of output. The supported options are:
|
–
|
hampelsignal: 1-D Array or Vector of the Hampel-filtered signal. This is the default.
|
–
|
medians: 1-D Array or Vector containing the medians for each sample point of the original signal.
|
–
|
outliers: Vector containing the indices for the outlier sample points of the original signal.
|
–
|
standarddeviations: 1-D Array or Vector containing the standard deviations for each sample point of the original signal.
|
–
|
record: Returns a record with the previous options.
|
–
|
list of any of the above options (excluding record): Returns an expression sequence with the corresponding outputs, in the same order.
|
|
|
Description
|
|
•
|
The Hampel command takes a 1-D data set, and replaces outlier sample points with the median value with respect to neighboring points.
|
•
|
To determine if a given sample point, say with index i, is an outlier, a window of neighboring points is considered:
|
1.
|
Define the window to be the points signal[max(a,i-r)..min(b,i+r)], where a and b are, respectively, the lower and upper indices of signal, and r=radius.
|
2.
|
Compute the median mu and median absolute deviation mad of the window.
|
3.
|
Approximate the standard deviation of the window as sigma=rho*mad, where rho=-1/sqrt(2)/inverfc(3/2) and inverfc() is the inverse of the complementary error function. The value of rho is approximately 1.483.
|
4.
|
If abs(signal[i]-mu)>numstddevs*sigma, that is, the sample point is more than numstddevs standard deviations from the median, the point is labeled an outlier.
|
•
|
The filtered signal is formed by taking the original signal, and replacing the outliers their respective medians.
|
•
|
Maple will attempt to coerce the provided signal to a 1-D Array or Vector of float[8] datatype, and an error will be thrown if this is not possible. For this reason, it is most efficient for the input to already be a float[8] 1-D Array or Vector.
|
•
|
The input signal cannot have an indexing function, and must use rectangular storage.
|
•
|
The Hampel command is not thread safe.
|
|
|
Examples
|
|
>
|
|
|
Example 1
|
|
>
|
|
| (1) |
>
|
|
| (2) |
|
|
Example 2
|
|
•
|
Consider the following signal:
|
>
|
|
>
|
|
•
|
Now, compute the Hampel-filtered signal Z of X with, say, radius of 3 sample points and 2.0 standard deviations. Here, we return the full record:
|
>
|
|
•
|
For the plot, we require only the filtered signal:
|
>
|
|
•
|
Finally, plot all three signals:
|
>
|
|
|
|
|
Compatibility
|
|
•
|
The SignalProcessing[Hampel] command was introduced in Maple 2021.
|
|
|
|