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 on selections:
Multiple linear regression with direct observations:
Multiple linear regression on selections:
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 on selections:
Binomial test:
Supported tests:
They can either be performed directly via type 'InferenceRoot' or on selections via type '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
Supported distributions:
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