Application Notes for oneMKL Summary Statistics

ID 772991
Date 3/31/2023
Public
Document Table of Contents

Computing Median Absolute Deviation

Use the VSL_SS_METHOD_FAST method to compute a median absolute deviation estimate in the datasets. The calculation is straightforward and follows the pattern of the example below:

#include "mkl_vsl.h"
 
#define DIM 3      /* dimension of the task */ 
#define N   1000   /* number of observations */
 
int main()
{
    VSLSSTaskPtr task;
    float x[DIM][N];  /* matrix of observations */
    float mdad[DIM];
    MKL_INT p, n, xstorage;
    int status;
  
    /* Parameters of the task and initialization */
    p = DIM;
    n = N;
    xstorage = VSL_SS_MATRIX_STORAGE_ROWS;
 
    /* Create a task */
    status = vslsSSNewTask( &task, &p, &n, &xstorage, (float*)x, 0, 0 );
 
    /* Initialize the task parameters */
    status = vslsSSEditTask( task, VSL_SS_ED_MDAD, mdad );
 
    /* Compute median absolute deviation in observations */
    status = vslsSSCompute(task, VSL_SS_MDAD, VSL_SS_METHOD_FAST );
 
    /* Deallocate the task resources */
    status = vslSSDeleteTask( &task );
 
    return 0;
}

The size of the array to hold median absolute deviation should be sufficient for storing at least p values of the estimate, where p is the dimension of the task.

Computation of median absolute deviation is only possible for data arrays available at once, or in separate blocks of the dataset.