A JavaScript implementation of descriptive, regression, and inference statistics
npx @tessl/cli install tessl/npm-simple-statistics@6.1.0A comprehensive JavaScript implementation of descriptive, regression, and inference statistics designed for data analysis and statistical computing.
npm install simple-statisticsImport specific functions (recommended):
import { mean, median, standardDeviation, linearRegression } from "simple-statistics";Import entire library:
import * as ss from "simple-statistics";CommonJS:
const { mean, median, standardDeviation, linearRegression } = require("simple-statistics");import { mean, standardDeviation, linearRegression } from "simple-statistics";
// Descriptive statistics
const data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const average = mean(data); // 5.5
const stdDev = standardDeviation(data); // 2.87...
// Linear regression
const xyData = [[1, 1], [2, 2], [3, 1.3], [4, 3.75], [5, 2.25]];
const regression = linearRegression(xyData); // {m: 0.425, b: 0.785}The library provides over 95 statistical functions organized into logical functional areas:
Calculate measures of central tendency, spread, and distribution shape.
function mean(values: number[]): number;
function median(values: number[]): number;
function mode(values: number[]): number;
function standardDeviation(values: number[]): number;
function variance(values: number[]): number;
function sampleVariance(values: number[]): number;
function sampleSkewness(values: number[]): number;
function sampleKurtosis(values: number[]): number;Perform linear regression analysis and correlation calculations.
interface RegressionResult {
m: number; // slope
b: number; // y-intercept
}
function linearRegression(data: Array<[number, number]>): RegressionResult;
function linearRegressionLine(mb: RegressionResult): (x: number) => number;
function rSquared(data: Array<[number, number]>, func: (x: number) => number): number;
function sampleCorrelation(x: number[], y: number[]): number;
function sampleCovariance(x: number[], y: number[]): number;Work with various probability distributions and normal distribution functions.
function bernoulliDistribution(p: number): number[];
function binomialDistribution(trials: number, probability: number): number[];
function poissonDistribution(lambda: number): number[];
function zScore(x: number, mean: number, standardDeviation: number): number;
function cumulativeStdNormalProbability(z: number): number;
function errorFunction(x: number): number;
function inverseErrorFunction(x: number): number;
function probit(p: number): number;
function standardNormalTable: number[];
function chiSquaredDistributionTable: number[];Perform hypothesis tests and goodness-of-fit analysis.
function tTest(sample: number[], expectedValue: number): number;
function tTestTwoSample(sampleX: number[], sampleY: number[], difference?: number): number | null;
function chiSquaredGoodnessOfFit(data: number[], distributionType: Function, significance: number): boolean;
function permutationTest(sampleX: number[], sampleY: number[], testType?: string, k?: number): number;Classification algorithms for supervised learning tasks.
class BayesianClassifier {
totalCount: number;
data: Record<string, any>;
train(item: Record<string, any>, category: string): void;
score(item: Record<string, any>): Record<string, number>;
}
class PerceptronModel {
weights: number[];
bias: number;
predict(features: number[]): number;
train(features: number[], label: number): PerceptronModel;
}
function ckmeans<T>(data: T[], nClusters: number): T[][];
function kernelDensityEstimation(X: number[], kernel?: string | Function, bandwidthMethod?: string | number): (x: number) => number;Calculate percentiles, quartiles, and range statistics.
function quantile(values: number[], p: number): number;
function quantile(values: number[], p: number[]): number[];
function quantileRank(values: number[], value: number): number;
function interquartileRange(values: number[]): number;
function medianAbsoluteDeviation(values: number[]): number;Sampling, shuffling, and array manipulation utilities.
function sample<T>(population: T[], n: number, randomSource?: () => number): T[];
function sampleWithReplacement<T>(population: T[], n: number, randomSource?: () => number): T[];
function shuffle<T>(array: T[], randomSource?: () => number): T[];
function shuffleInPlace<T>(array: T[], randomSource?: () => number): T[];
function chunk<T>(array: T[], chunkSize: number): T[][];
function uniqueCountSorted(values: number[]): Array<{value: number, count: number}>;
function sumNthPowerDeviations(values: number[], n: number): number;
function equalIntervalBreaks(values: number[], nClasses: number): number[];Functions for combinations and permutations.
function combinations<T>(x: T[], k: number): T[][];
function combinationsReplacement<T>(x: T[], k: number): T[][];
function permutationsHeap<T>(x: T[]): T[][];Root finding, special functions, and numerical utilities.
function bisect(func: (x: any) => number, start: number, end: number, maxIterations: number, errorTolerance: number): number;
function factorial(n: number): number;
function gamma(n: number): number;
function gammaln(n: number): number;
function sign(x: number): number;
function numericSort(array: number[]): number[];
function quickselect<T>(array: T[], k: number, compare?: (a: T, b: T) => number): T;
const epsilon: number;Basic array operations for finding extremes and products.
function min(values: number[]): number;
function max(values: number[]): number;
function extent(values: number[]): [number, number];
function minSorted(values: number[]): number;
function maxSorted(values: number[]): number;
function extentSorted(values: number[]): [number, number];
function sum(values: number[]): number;
function sumSimple(values: number[]): number;
function product(values: number[]): number;