## Properties

init
memory

samples
size

## Methods

compress(val)
compress()
kolmogorovStat(distribution)

kolmogorovTest(distribution, alpha)
save(fout)
cdf(vals)

getParams()
quantile(pVals)

## new Gk([arg])

### Example

    // import modules
    var qm = require('qminer');
    var fs = require('qminer').fs;
    var quants = qm.analytics.quantiles;

    // create the Gk object
    var gk = new quants.Gk({
        eps: 0.001,
        autoCompress: true
    });

    // create the data used for calculating quantiles
    var inputs = [10, 1, 2, 8, 9, 5, 6, 4, 7, 3];

    // fit the model
    for (var i = 0; i < inputs.length; i++) {
        gk.insert(inputs[i]);
    }

    // make the estimation for the 0.1 quantile
    var quant = gk.quantile(0.1);
    // save the model
    gk.save(fs.openWrite('gk.bin')).close();
    // open the gk model under a new variable
    var gk2 = new quants.Gk(fs.openRead('gk.bin'));

### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
arg | (module:analytics.quantiles~GkParam or module:fs.FIn) | Yes | Construction arguments. There are two ways of constructing: 1. Using the module:analytics.quantiles~GkParam object, 2. using the file input stream module:fs.FIn.

## Properties

static

### init

Returns the current size of the algorithms summary in number of tuples.

static

### memory

Returns the models current memory consumption.

static

### samples

Returns the number of samples seen by the model.

static

### size

Returns the current size of the algorithms summary in number of tuples.

## Methods

static

### compress(val) → module:analytics.quantiles.Gk

Adds a new value to the summary.

#### Example

    var qm = require('qminer');

    var gk = new qm.analytics.quantiles.Gk();
    gk.insert(1.0);
    gk.insert(2.0);

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
val | number |  | the value

Returns

  `module:analytics.quantiles.Gk`B reference to self

static

### compress()

Manually runs the compression procedure.

Returns

  reference to self

static

### kolmogorovStat(distribution) → number

Compares this distribution to `dist` and returns the Kolmogorov-Smirnov statistic:

D_n,m = sup_x|f1(x) - f2(x)|

where f1 and f2 are cumulative distribution function of this distribution and `dist` respectively.

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
distribution | module:analytics.quantiles.quantiles.Gk |  | the distribution to compare against

Returns

  `number`B - the K-S statistic

static

### kolmogorovTest(distribution, alpha) → boolean

Compares this distribution to `dist` using the Kolmogorov-Smirnov test with significance `alpha`.

#### Parameters

Name | Type | Optional | Description
--- | --- | --- | ---
distribution | module:analytics.quantiles.quantiles.Gk |  | the distribution to compare against
alpha | number |  | the statistical significance

Returns

  `boolean`B - true if the distributions differ

static

### save(fout) → module:fs.FOut

Saves the objects state into the output stream.

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
fout | module:fs.FOut |  | the output stream

Returns

  `module:fs.FOut`B - the output stream

### cdf(vals) → (number or Array)

Provided a given value or array of values it returns the corresponding values of the cumulative distribution function.

#### Example

    var qm = require('qminer');

    var gk = new qm.analytics.quantiles.Gk({
        eps: 0.1
    });
    gk.insert(1.0);
    gk.insert(2.0);
    gk.insert(1.0);
    gk.insert(3.0);
    gk.insert(2.0);

    console.log(gk.cdf(0));   // prints the CDF for x = 0
    console.log(gk.cdf(2));   // prints the CDF for x = 2
    console.log(gk.cdf(4));    // prints the CDF for x = 4

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
vals | (number or Array) |  | the values which we a querying (quantiles)

Returns

  `(number or Array)`B pVals - depending whether the input was a single value or array the method returns a probability or array of probabilities

### getParams() → module:analytics.quantiles~GkParam

Returns the models' parameters as a JavaScript object (JSON). These parameters are the same as are set through the constructor.

Returns

  `module:analytics.quantiles~GkParam`B The construction parameters.

  var analytics = qm.analytics; var gk = new analytics.quantiles.Gk(); var params = gk.getParams();

  console.log(params.eps); console.log(params.autoCompress);

### quantile(pVals) → (number or Array)

Given an input cumulative probability, returns a quantile associated with that probability (e.g. for input 0.5 it will return the median).

#### Example

    var qm = require('qminer');

    var gk = new qm.analytics.quantiles.Gk({
        eps: 0.1
    });
    gk.insert(1.0);
    gk.insert(2.0);
    gk.insert(1.0);
    gk.insert(3.0);
    gk.insert(2.0);

    console.log(gk.quantile(0.01));   // prints the first percentile
    console.log(gk.quantile(0.25));   // prints the first quartile
    console.log(gk.quantile(0.5));    // prints the median

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
pVals | (number or Array) |  | the p-values which we a querying

Returns

  `(number or Array)`B quantiles - depending whether the input was a single value or array the method returns a quantile or array of quantiles