npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

stats-lite

v2.2.0

Published

A light statistical package that operates on numeric Arrays.

Downloads

500,502

Readme

stats-lite

NPM

A fairly light statistical package. Works with numeric arrays, and will automatically filter out non-numeric values and attempt to convert string numeric values.

Install

 npm install stats-lite --save

Example

Live Demo using Browserify!

var stats = require("stats-lite")

var dice = require("dice")

var rolls = []
for (var i = 0; i < 3000; i++) {
  rolls.push(dice.sum(dice.roll("2d6")))
}

console.log("sum: %s", stats.sum(rolls))
console.log("mean: %s", stats.mean(rolls))
console.log("median: %s", stats.median(rolls))
console.log("mode: %s", stats.mode(rolls))
console.log("variance: %s", stats.variance(rolls))
console.log("standard deviation: %s", stats.stdev(rolls))
console.log("sample standard deviation: %s", stats.sampleStdev(rolls))
console.log("85th percentile: %s", stats.percentile(rolls, 0.85))
console.log("histogram:", stats.histogram(rolls, 10))

/* Your exact numbers may vary, but they should be pretty similar:
sum: 21041
mean: 7.0136666666666665
median: 7
mode: 7
variance: 5.8568132222220415
standard deviation: 2.4200853749861886
sample standard deviation: 2.4204888234135953
85th percentile: 10
histogram { values: [ 94, 163, 212, 357, 925, 406, 330, 264, 164, 85 ],
  bins: 10,
  binWidth: 1.05,
  binLimits: [ 1.75, 12.25 ] }
*/

Compatibility Notice: Version 2.0.0+ of this library use features that require Node.js v4.0.0 and above

API

All of the exported functions take vals which is an array of numeric values. Non-numeric values will be removed, and string numbers will be converted to Numbers.

NOTE: This will impact some operations, e.g. mean([null, 1, 2, 3]) will be calculated as mean([1, 2, 3]), (e.g. 6 / 3 = 2, NOT 6 / 4 = 1.5)

numbers(vals)

Accepts an array of values and returns an array consisting of only numeric values from the source array. Converts what it can and filters out anything else. e.g.

numbers(["cat", 1, "22.9", 9])
// [1, 22.9, 9]

sum(vals)

Sum the values in the array.

mean(vals)

Calculate the mean average value of vals.

median(vals)

Calculate the median average value of vals.

mode(vals)

Calculate the mode average value of vals.

If vals is multi-modal (contains multiple modes), mode(vals) will return a ES6 Set of the modes.

variance(vals)

Calculate the variance from the mean for a population.

stdev(vals)

Calculate the standard deviation of the values from the mean for a population.

sampleVariance(vals)

Calculate the variance from the mean for a sample.

sampleStdev(vals)

Calculate the standard deviation of the values from the mean for a sample.

percentile(vals, ptile)

Calculate the value representing the desired percentile (0 < ptile <= 1). Uses the Estimation method to interpolate non-member percentiles.

histogram(vals[, bins])

Build a histogram representing the distribution of the data in the provided number of bins. If bins is not set, it will choose one based on Math.sqrt(vals.length). Data will look like:

histogram {
  values: [ 86, 159, 253, 335, 907, 405, 339, 270, 146, 100 ],
  bins: 10,
  binWidth: 1.05,
  binLimits: [ 1.75, 12.25 ]
}

Where values are the bins and the counts of the original values falling in that range. The ranges can be calculated from the binWidth and binLimits. For example, the first bin values[0] in this example is from 1.75 < value <= 2.8. The third bin values[2] would be 1.75 + (1.05 * 2) < value <= 1.75 + (1.05 * 3) or 3.85 < value <= 4.9.

LICENSE

MIT