/SigmaSwiftStatistics

A collection of functions for statistical calculation in iOS written in Swift.

Primary LanguageSwiftMIT LicenseMIT

σ (sigma) - statistics library for Swift

[Carthage compatible][carthage] [CocoaPods Version][cocoadocs] [License][cocoadocs] [Platform][cocoadocs] [cocoadocs]: http://cocoadocs.org/docsets/SigmaSwiftStatistics [carthage]: https://github.com/Carthage/Carthage

This library is a collection of functions that perform statistical calculations in Swift.

Statistical library for Swift

Setup

There are three ways you can add Sigma to your Xcode project.

Add source (iOS 7+)

Simply add Sigma.swift file to your project.

Setup with Carthage (iOS 8+)

Alternatively, add github "evgenyneu/SigmaSwiftStatistics" ~> 1.0 to your Cartfile and run carthage update.

Setup with CocoaPods (iOS 8+)

If you are using CocoaPods add this text to your Podfile and run pod install.

use_frameworks!
pod 'SigmaSwiftStatistics', '~> 1.0'

Usage

Add import SigmaSwiftStatistics to your source code if you used Carthage or CocoaPods setup methods.

Max

Returns the maximum value in the array.

Note: returns nil for an empty array.

Sigma.max([1, 8, 3])
// Result: 8

Min

Returns the minimum value in the array.

Note: returns nil for an empty array.

Sigma.min([7, 2, 3])
// Result: 2

Sum

Computes sum of values from the array.

Sigma.sum([1, 3, 8])
// Result: 12

Average

Computes arithmetic mean of values in the array.

Note:

  • Returns nil for an empty array.
  • Same as AVERAGE in Microsoft Excel and Google Docs Sheets.

Formula

A = Σ(x) / n

Where:

  • n is the number of values.
Sigma.average([1, 3, 8])
// Result: 4

Median

Returns the median value from the array.

Note:

  • Returns nil when the array is empty.
  • Returns the mean of the two middle values if there is an even number of items in the array.
  • Same as MEDIAN in Microsoft Excel and Google Docs Sheets.
Sigma.median([1, 12, 19.5, 3, -5])
// Result: 3

Sample standard deviation

Computes standard deviation of a population sample.

Note:

  • Returns nil when the array is empty or contains a single value.
  • Same as STDEV and STDEV.S in Microsoft Excel and STDEV in Google Docs Sheets.

Formula

σ = sqrt( Σ(x - m) / (n - 1) )

Where:

  • m is the population mean.
  • n is the population size.
Sigma.standardDeviationSample([1, 12, 19.5, -5, 3, 8])
// Result: 8.674195447801869

Population standard deviation

Computes standard deviation of entire population.

Note:

  • Returns nil for an empty array.
  • Same as STDEVP and STDEV.P in Microsoft Excel and STDEVP in Google Docs Sheets.

Formula

σ = sqrt( Σ(x - m) / n )

Where:

  • m is the population mean.
  • n is the population size.
Sigma.standardDeviationPopulation([1, 12, 19.5, -5, 3, 8])
// Result: 7.918420858282849

Sample covariance

Computes sample covariance between two variables: x and y.

Note:

  • Returns nil if arrays x and y have different number of values.
  • Returns nil for empty arrays or arrays containing a single element.
  • Same as COVARIANCE.S function in Microsoft Excel.

Formula

cov(x,y) = Σ(x - mx)(y - my) / (n - 1)

Where:

  • mx is the sample mean of the first variable.
  • my is the sample mean of the second variable.
  • n is the total number of values.
let x = [1, 2, 3.5, 3.7, 8, 12]
let y = [0.5, 1, 2.1, 3.4, 3.4, 4]
Sigma.covarianceSample(x: x, y: y)
// Result: 5.03

Population covariance

Computes covariance of the entire population between two variables: x and y.

Note:

  • Returns nil if arrays x and y have different number of values.
  • Returns nil for empty arrays.
  • Same as COVAR and COVARIANCE.P functions in Microsoft Excel and COVAR in Google Docs Sheets.

Formula

cov(x,y) = Σ(x - mx)(y - my) / n

Where:

  • mx is the population mean of the first variable.
  • my is the population mean of the second variable.
  • n is the total number of values.
let x = [1, 2, 3.5, 3.7, 8, 12]
let y = [0.5, 1, 2.1, 3.4, 3.4, 4]
Sigma.covariancePopulation(x: x, y: y)
// Result: 4.19166666666667

Pearson correlation coefficient

Calculates the Pearson product-moment correlation coefficient between two variables: x and y.

Note:

  • Returns nil if arrays x and y have different number of values.
  • Returns nil for empty arrays.
  • Same as CORREL and PERSON functions in Microsoft Excel and Google Docs Sheets.

Formula

p(x,y) = cov(x,y) / (σx * σy)

Where:

  • cov is the population covariance.
  • σ is the population standard deviation.
let x = [1, 2, 3.5, 3.7, 8, 12]
let y = [0.5, 1, 2.1, 3.4, 3.4, 4]
Sigma.pearson(x: x, y: y)
// Result: 0.843760859352745

Shorter syntax

You can type a sigma letter σ instead of Sigma. For example:

σ.average([1, 2])
σ.standardDeviationSample([1, 12, 19.5, -5, 3, 8])

Feedback is welcome

If you need help or want to extend the library feel free to create an issue or submit a pull request.

License

Sigma is released under the MIT License.