Skip to main content
Documentation

Statistics

The Function Development Kit (FDK) provides access to many statistical built-in functionalities.

Descriptive Statistics

The type 'Value' provides descriptive functions for selections, table cells, attributes, ...

Value


Minimum
var min = selections.min();

Maximum
var max = selections.max();

Range
var range = selections.range();

Arithmetic mean
var mean = selections.mean();

Geometric mean
var geometricMean = selections.geometricMean();

Harmonic mean
var harmonicMean = selections.harmonicMean();

Quadratic mean
var min = selections.quadraticMean();

Median
var min = selections.median();

Quartile
var firstQuartile = selections.quartile(1);

Decile
var firstDecile = selections.decile(1);

Percentile
var firstPercentile = selections.percentile(1);

Sum
var sum = selections.sum();

Product
var product = selections.product();

Sum of squares
var sumOfSquares = selections.sumOfSquares();

Sum of logs
var sumOfLogs = selections.sumOfLogs();

Variance
var variance = selections.variance();

Standard deviation
var standardDeviation = selections.standardDeviation();

Skewness
var skewness = selections.skewness();

Kurtosis
var kurtosis = selections.kurtosis();

Correlation

Three correlation coefficents are supported: Pearson, Spearman and Kendall

Pearson's Correlation
var pearsonsCorrelation = selections.pearsonsCorrelation("xKey","yKey");

Spearman's Correlation
var spearmansCorrelation = selections.spearmansCorrelation("xKey","yKey");

Kendall's Correlation
var kendallsCorrelation = selections.kendallsCorrelation("xKey","yKey");

Covariance

The covariance of two variables within selections can be computed quite easily:

Covariance
var covariance = selections.covariance("xKey", "yKey");

Regression

Simple linear regression with direct observations:

Simple linear regression
var regression = diafunc.analyze()
    .regress()
    .linear()
    .simple()
    .observe(1, 1)
    .observe(2, 2)
    .observe(3, 3)
    .build();
var prediction = regression.predict(4);


Simple linear regression on selections:

Simple linear regression on selections
var regression = selections.analyze()
    .regress()
    .linear()
    .simple()
    .x("xKey")
    .y("yKey")
    .build();
var prediction = regression.predict(42);


Multiple linear regression with direct observations:

Multiple linear regression
var regressionBuilder = diafunc.analyze()
    .regress()
    .linear()
    .multiple();
for(var i=1;i<=100;i++){
    regressionBuilder = regressionBuilder.observe(diafunc.create().tuple().add(i).add(i).add(i), i);
}
var regression = regressionBuilder.build();
regression.predict(diafunc.create().tuple().add(101).add(101).add(101));


Multiple linear regression on selections:

Multiple linear regression on selections
var regression = selections.analyze()
    .regress()
    .linear()
    .multiple()
    .x("x1Key")
    .x("x2Key")
    .x("x3Key")
    .y("yKey")
    .build();
var features = diafunc.create().tuple().add(1).add(2).add(3);
var prediction = regression.predict(features);

Inference

Many common statistical tests are provided by built-on functions.
They can either be performed directly via type 'InferenceRoot' or on selections via type 'SelectionInference'.

InferenceRoot SelectionInference


T-test with direct observations:

T-test
var result = diafunc.infer()
    .tTest()
    .oneSample()
    .observe(1)
    .observe(2)
    .observe(3)
    .mu(2.5)
    .build();
var tStatistic = result.statistic();
var alpha = 0.1;
var test = result.test(alpha);


T-test on selections:

T-test on selections
var result = selections.infer()
    .tTest("key", 2.5);
var tStatistic = result.statistic();
var alpha = 0.1;
var test = result.test(alpha);


Binomial test:

Binomial test
var nullHypothesis = 0.5; // Fair coin
var numberOfSuccesses = 9; // Number of heads (biased coin)
var numberOfTrials = 10;

var result = diafunc.infer()
    .binomialTest()
    .twoSided() // Two sided = Represents a right-sided test. H0: p ≤ p0, H1: p > p0.
    .trials(numberOfTrials)
    .successes(numberOfSuccesses)
    .probability(nullHypothesis)
    .build();

// Significance level, or p-value, associated with a binomial test.
var significanceLevel = result.test();

var alpha = 0.03; // Significance level of the test

// Returns whether the null hypothesis can be rejected with the given confidence level.
// true if signficanceLevel < alpha
var rejected = result.test(alpha);


Supported tests:
  • T
  • Paired T
  • Homoscedastic T
  • Chi-Square
  • G
  • Binomial
  • One-way ANOVA
  • Kolmogorov-Smirnov
  • Mann-Whitney U
  • Wilcoxon signed-rank

Distributions

Many common distributions can be created via the type 'DistributionRoot'.

DistributionRoot

Create a distribution
var distribution = diafunc.distribution().normal();
var sample = distribution.sample();


Supported distributions:
  • Beta
  • Binomial
  • Cauchy
  • Chi squared
  • Constant
  • Enumerated
  • Exponential
  • F
  • Gamma
  • Geometric
  • Gumbel
  • Hypergeometric
  • Laplace
  • Levy
  • Logistic
  • Log normal
  • Nakagami
  • Normal
  • Pareto
  • Pascal
  • Poisson
  • T
  • Triangular
  • Uniform
  • Weibull
  • Zipf

What next?