This function performs the outliergram of a univariate functional dataset, possibly with an adjustment of the true positive rate of outliers discovered under assumption of gaussianity.
1 2 3 
fData 
the univariate functional dataset whose outliergram has to be determined. 
MBD_data 
a vector containing the MBD for each element of the dataset. If missing, MBDs are computed. 
MEI_data 
a vector containing the MEI for each element of the dataset. If not not provided, MEIs are computed. 
q_low 
parameter used in the part where data are shifted toward the center of the dataset. It indicates the quantile to be used to compute the target to compare functions in the secondary check for outliers. Defult is 0, i.e. High MEI functions (lying at the bottom of the dataset) are compared to the minimum of all the remaining functions. 
q_high 
parameter used in the part where data are shifted toward the center of the dataset. It indicates the quantile to be used to compute the target to compare functions in the secondary check for outliers. Defult is 1, i.e. Low MEI functions (lying at the top of the dataset) are compared to the maximum of all the remaining functions. 
p_check 
percentage of observations with either low or high MEI to be checked for outliers in the secondary step (shift towards the center of the dataset). 
Fvalue 
the F value to be used in the procedure that finds the
shape outliers by looking at the lower parabolic limit in the outliergram.
Default is 
adjust 
either

display 
either a logical value indicating wether you want the outliergram to be displayed, or the number of the graphical device where you want the outliergram to be displayed. 
xlab 
a list of two labels to use on the x axis when displaying the functional dataset and the outliergram 
ylab 
a list of two labels to use on the y axis when displaying the functional dataset and the outliergram; 
main 
a list of two titles to be used on the plot of the functional dataset and the outliergram; 
... 
additional graphical parameters to be used only in the plot of the functional dataset 
Even when used graphically to plot the outliergram, the function returns a
list containing a numeric vector with the IDs of observations in
fData
that are considered as shape outliers and the value of
Fvalue
that has been used in determining them.
When the adjustment option is selected, the value of F is optimised for
the univariate functional dataset provided with fData
. In practice,
a number adjust$N_trials
of times a synthetic population
(of size adjust$trial_size
with the same covariance (robustly
estimated from data) and centerline as fData
is simulated without
outliers and each time an optimised value F_i is computed so that a
given proportion (adjust$TPR
) of observations is flagged as outliers.
The final value of F
for the outliergram is determined as an average
of F_1, F_2, …, F_{N_{trials}}. At each time step the optimisation
problem is solved using stats::uniroot
(Brent's method).
ArribasGil, A., and Romo, J. (2014). Shape outlier detection and visualization for functional data: the outliergram, Biostatistics, 15(4), 603619.
fData
, MEI
, MBD
,
fbplot
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47  set.seed( 1618 )
N = 200
P = 200
N_extra = 4
grid = seq( 0, 1, length.out = P )
Cov = exp_cov_function( grid, alpha = 0.2, beta = 0.8 )
Data = generate_gauss_fdata( N,
centerline = sin( 4 * pi * grid ),
Cov = Cov )
Data_extra = array( 0, dim = c( N_extra, P ) )
Data_extra[ 1, ] = generate_gauss_fdata( 1,
sin( 4 * pi * grid + pi / 2 ),
Cov = Cov )
Data_extra[ 2, ] = generate_gauss_fdata( 1,
sin( 4 * pi * grid  pi / 2 ),
Cov = Cov )
Data_extra[ 3, ] = generate_gauss_fdata( 1,
sin( 4 * pi * grid + pi/ 3 ),
Cov = Cov )
Data_extra[ 4, ] = generate_gauss_fdata( 1,
sin( 4 * pi * grid  pi / 3),
Cov = Cov )
Data = rbind( Data, Data_extra )
fD = fData( grid, Data )
outliergram( fD, display = TRUE )
outliergram( fD, Fvalue = 10, display = TRUE )
## Not run:
outliergram( fD,
adjust = list( N_trials = 10,
trial_size = 5 * nrow( Data ),
TPR = 0.01,
VERBOSE = FALSE ),
display = TRUE )
## End(Not run)

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
All documentation is copyright its authors; we didn't write any of that.