SigmaSwiftStatistics 9.0.2

SigmaSwiftStatistics 9.0.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2019年4月
SPM支持SPM

Evgenii Neumerzhitckii维护。




  • Evgenii Neumerzhitckii

σ (sigma) - Swift编写的统计库

Carthage compatible CocoaPods Version License Platform

这个库是一系列在Swift中执行的统计计算函数集合。它可以用于Apple设备的Swift应用以及在其他平台上的开源Swift程序。

Statistical library for Swift

设置

您可以通过四种方式将Sigma添加到项目中。

添加源代码(iOS 7+)

只需将SigmaDistrib.swift文件添加到项目中。

使用Carthage设置(iOS 8+)

或者,将github "evgenyneu/SigmaSwiftStatistics" ~> 9.0添加到Cartfile,并运行carthage update命令。

使用 CocoaPods (iOS 8+) 进行配置

如果你使用的是 CocoaPods,请将以下内容添加到你的 Podfile 中,并运行 pod install

use_frameworks!
target 'Your target name'
pod 'SigmaSwiftStatistics', '~> 9.0'

使用 Swift Package Manager 进行配置

将以下内容添加到你的 Package.swift 文件中,并运行 swift build

// swift-tools-version:4.0
import PackageDescription

let package = Package(
    name: "MyApp",
    dependencies: [
        .package(url: "https://github.com/evgenyneu/SigmaSwiftStatistics.git", from: "9.0.0")
    ],
    targets: [
        .target(
            name: "MyApp",
            dependencies: ["SigmaSwiftStatistics"],
            path: "Sources")
    ]
)

旧版 Swift 版本

如果你使用的是旧版的 Swift,请设置库的先前的版本。

用法

除非你已经使用了文件配置方法,否则将 import SigmaSwiftStatistics 添加到你的源代码中。

平均 / 均值

计算数组中值的算术均值。

注意:

  • 对于空数组返回 nil。
  • 等同于 Microsoft Excel 和 Google Docs Sheets 中的 AVERAGE。

公式

A = Σ(x) / n

其中

  • n 是值的数量。
Sigma.average([1, 3, 8])
// Result: 4

中心矩

计算数据集的中心矩。

注意

  • 对于空数组返回 nil。
  • 与 Wolfram Alpha 和 "moments" R 软件包中的结果相同。

公式

Σ(x - m)^k / n

其中

  • m 是样本均值。
  • k 是矩的阶数(0, 1, 2, 3, ...)。
  • n 是样本大小。
Sigma.centralMoment([3, -1, 1, 4.1, 4.1, 0.7], order: 3)
// Result: -1.5999259259

总体协方差

计算两个变量 x 和 y 之间的协方差。

注意:

  • 如果 x 和 y 数组的值数量不同,则返回 nil。
  • 对于空数组返回 nil。
  • 与 Microsoft Excel 中的 COVAR 和 COVARIANCE.P 函数以及 Google Docs Sheets 中的 COVAR 函数相同。

公式

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

其中

  • mx 是第一个变量的总体均值。
  • my 是第二个变量的总体均值。
  • n 是值总数。
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

样本协方差

计算两个变量 x 和 y 之间的样本协方差。

注意

  • 如果 x 和 y 数组的值数量不同,则返回 nil。
  • 对于空数组或只包含一个元素的数组返回 nil。
  • 与 Microsoft Excel 中的 COVARIANCE.S 函数相同。

公式

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

其中

  • mx 是第一个变量的样本均值。
  • my 是第二个变量的样本均值。
  • n 是值总数。
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

样本变化系数

基于样本计算变化系数

注意

  • 当数组为空或包含单个值时返回 nil。
  • 如果平均值为零则返回 Double.infinity
  • 与 Wolfram Alfa 一致,并且在 "raster" R 包中(在 "raster" 中表示为百分比)。

公式

CV = s / m

其中

  • s 是样本标准差。
  • m 是均值。
Sigma.coefficientOfVariationSample([1, 12, 19.5, -5, 3, 8])
// Result: 1.3518226672

频率

返回一个字典,其中键包含输入数组中的数字,值对应这些数字的频率。

Sigma.frequencies([1, 2, 3, 4, 5, 4, 4, 3, 5])
// Result: [2:1, 3:2, 4:3, 5:2, 1:1]

峰度 A

返回一系列数值的 峰度

注意:

  • 如果数据集包含不到 4 个值则返回 nil。
  • 如果数据集中的所有值都相同则返回 nil。
  • 与 Microsoft Excel 和 Google Docs Sheets 中的 KURT 一致。

公式

Kurtosis formula

Sigma.kurtosisA([2, 1, 3, 4.1, 19, 1.5])
// Result: 5.4570693277

偏度 B

返回一系列数值的 峰度

注意:

  • 如果数据集包含少于2个值,则返回nil。
  • 如果数据集中的所有值都相同则返回 nil。
  • 与 Wolfram Alpha 和 "moments" R 软件包中的结果相同。

公式

Kurtosis formula

Sigma.kurtosisB([2, 1, 3, 4.1, 19, 1.5])
// Result: 4.0138523409

最大值

返回数组中的最大值。

注意:对于空数组返回nil。

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

中值

从数组中返回中值。

注意:

  • 数组为空时返回nil。
  • 如果数组项数为偶数,则返回中间两个值的平均值。
  • 与Microsoft Excel和Google Docs Sheets中的MEDIAN相同。
Sigma.median([1, 12, 19.5, 3, -5])
// Result: 3

高中值

从数组中返回中值。

注意:

  • 数组为空时返回nil。
  • 如果数组项数为偶数,则返回中间两个值中的较大值。
Sigma.medianHigh([1, 12, 19.5, 10, 3, -5])
// Result: 10

中位数低值

从数组中返回中值。

注意:

  • 数组为空时返回nil。
  • 如果数组中有偶数个元素,则返回两个中间值中的较小值。
Sigma.medianLow([1, 12, 19.5, 10, 3, -5])
// Result: 3

最小值

返回数组中的最小值。

注意:对于空数组返回nil。

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

正态分布

返回给定 xμσ 值的正态分布。返回的值是正常曲线左侧到值 x 的面积。

注意:

  • 如果 σ 为零或负数,则返回 nil。
  • 默认值:μ = 0σ = 1
  • 与 Excel 中的 NORM.S.DIST、NORM.DIST 和 NORMDIST 函数以及 Google 文档表格中的 NORMDIST 函数(其中 cumulative 参数等于 true)相同。
Sigma.normalDistribution(x: -1, μ: 0, σ: 1)
// Result: 0.1586552539314570

正常密度

返回给定 xμσ 值的正态函数的密度。

注意:

  • 如果 σ 为零或负数,则返回 nil。
  • 默认值:μ = 0σ = 1
  • 与 Excel 中的 NORM.S.DIST、NORM.DIST 和 NORMDIST 函数以及 Google 文档表格中的 NORMDIST 函数(其中 cumulative 参数等于 false)相同。

公式

Nodemal density function

其中

  • x 是正态密度函数的输入值。
  • μ 是平均值。
  • σ 是标准差。
Sigma.normalDensity(x: 0, μ: 0, σ: 1)
// Result: 0.3989422804014327

正态分位数

返回正态分布的量函数(正态分布的逆函数)。p参数是概率,或者是返回值左侧的正态曲线下的面积。

注意:

  • 如果 σ 为零或负数,则返回 nil。
  • 如果 p 是负数或大于 1,则返回 nil。
  • 如果 p 为 0,则返回 -Double.infinity;如果 p 为 1,则返回 Double.infinity
  • 默认值:μ = 0σ = 1
  • 等同于 Excel 函数 NORM.INV, NORM.S.INV 和 NORMINV 以及 Google Docs 表格函数 NORMINV。
Sigma.normalQuantile(p: 0.025, μ: 0, σ: 1)
// -1.9599639845400538

皮尔逊相关系数

计算两个变量 x 和 y 之间的 皮尔逊积矩相关系数

注意:

  • 如果 x 和 y 数组的值数量不同,则返回 nil。
  • 对于空数组返回 nil。
  • 等同于 Microsoft Excel 和 Google Docs Sheets 中的 CORREL 和 PEARSON 函数。

公式

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

其中

  • cov 是总体协方差。
  • σ 是总体标准差。
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

百分位数

计算给定数据集中的 百分位数

注意:

  • values 数组为空时,返回 nil。
  • 当提供的 percentile 参数为负数或大于 1 时,返回 nil。
  • 等同于 Microsoft Excel 中的 PERCENTILE 或 PERCENTILE.INC,以及 Google Docs 表格中的 PERCENTILE。
  • 等同于 Hyndman 和 Fan 论文(1996)中第 7 检验样本量方法。

有关更多信息,请参阅 百分位数方法 文档。

// Calculate 40th percentile
Sigma.percentile([35, 20, 50, 40, 15], percentile: 0.4)
// Result: 29

// Same as
Sigma.quantiles.method7([35, 20, 50, 40, 15], probability: 0.4)

分位数

九个函数的组合,用于计算与给定概率相对应的样本分位数。这是对 Hyndman 和 Fan 论文(1996)中描述的九种算法的实现。函数的文档基于 R 和维基百科的示例。

注意:

  • 数据集为空时返回 nil。
  • 概率值超出 [0, 1] 范围时返回 nil。
  • 与 R 语言中的 quantile 函数相同。

分位数方法 1

这种方法使用经验分布函数的逆来计算分位数。

Sigma.quantiles.method1([1, 12, 19.5, -5, 3, 8], probability: 0.5)
// Result: 3

分位数方法 2

该方法使用平均化的逆经验分布函数计算分位数。

Sigma.quantiles.method2([1, 12, 19.5, -5, 3, 8], probability: 0.5)
// Result: 5.5

分位数方法 3

Sigma.quantiles.method3([1, 12, 19.5, -5, 3, 8], probability: 0.5)
// Result: 3

分位数方法 4

该方法使用经验分布函数的线性插值。

Sigma.quantiles.method4([1, 12, 19.5, -5, 3, 8], probability: 0.17)
// Result: -4.88

分位数方法 5

该方法在经验分布函数的步长中间值处使用分段线性函数。

Sigma.quantiles.method5([1, 12, 19.5, -5, 3, 8], probability: 0.11)
// Result: -4.04

分位数方法 6

此方法在 Microsoft Excel (PERCENTILE.EXC)、Minitab 和 SPSS 中实现。它使用在 [0, 1] 区间上均匀分布的顺序统计量的期望值的线性插值。

Sigma.quantiles.method6([1, 12, 19.5, -5, 3, 8], probability: 0.1999)
// Result: -2.6042

第 7 个分位数方法

此方法在 S、Microsoft Excel (PERCENTILE 或 PERCENTILE.INC) 和 Google Docs Sheets (PERCENTILE) 中实现。它使用在 [0, 1] 区间上均匀分布的顺序统计量的众数的线性插值。

Sigma.quantiles.method7([1, 12, 19.5, -5, 3, 8], probability: 0.00001)
// Result: -4.9997

第 8 个分位数方法

此方法返回的分位数无论 x 的分布如何,都大致无偏中位数。

Sigma.quantiles.method8([1, 12, 19.5, -5, 3, 8], probability: 0.11)
// Result: -4.82

第 9 个分位数方法

如果 x 服从正态分布,此方法返回的分位数大致无偏。

Sigma.quantiles.method9([1, 12, 19.5, -5, 3, 8], probability: 0.10001)
// Result: -4.999625

排名

返回数据集中的值的排名

注意:

  • 接受一个可选的 ties 参数,用于确定如何计算等值 ('ties') 的排名。默认值为 .average。可能值

    • .average: 使用平均排名。与 Microsoft Excel 和 Google Docs Sheets 中的 RANK.AVG 相同。
    • .min, .max: 使用最小/最大排名。值 .min 与 Microsoft Excel 和 Google Docs Sheets 中的 RANK 和 RANK.EQ 相同。
    • .first, .last: 排名递增/递减。
  • 与 R 的排名函数相同。

Sigma.rank([2, 3, 6, 5, 3], ties: .average)
// Result: [1.0, 2.5, 5.0, 4.0, 2.5]

偏度 A

返回数据集的 偏度

注意:

  • 如果数据集包含的值少于3个,则返回nil。
  • 如果数据集中的所有值都相同则返回 nil。
  • 与Microsoft Excel和Google Docs Sheets中的SKEW相同。

公式

Skewness formula

Sigma.skewnessA([4, 2.1, 8, 21, 1])
// Result: 1.6994131524

偏度B

返回数据集的 偏度

注意:

  • 如果数据集包含的值少于3个,则返回nil。
  • 如果数据集中的所有值都相同则返回 nil。
  • 与Wolfram Alpha中的相同,与Microsoft Excel中的SKEW.P和"moments" R包中的skewness函数相同。

公式

Skewness formula

Sigma.skewnessB([4, 2.1, 8, 21, 1])
// Result: 1.1400009992

总体标准差

计算整个总体的标准差。

注意:

  • 对于空数组返回 nil。
  • 与Microsoft Excel中的STDEVP和STDEV.P以及Google Docs Sheets中的STDEVP相同。

公式

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

其中

  • m是总体均值。
  • n是总体大小。
Sigma.standardDeviationPopulation([1, 12, 19.5, -5, 3, 8])
// Result: 7.918420858282849

样本标准差

基于样本计算标准差。

注意:

  • 当数组为空或包含单个值时返回 nil。
  • 与Microsoft Excel中的STDEV和STDEV.S以及Google Docs Sheets中的STDEV相同。

公式

s = sqrt( Σ( (x - m)^2 ) / (n - 1) )

其中

  • m 是样本均值。
  • n 是样本大小。
Sigma.standardDeviationSample([1, 12, 19.5, -5, 3, 8])
// Result: 8.674195447801869

平均数标准误

计算平均数的标准误。

注意:

  • 当数组为空或包含单个值时返回 nil。

公式

SE = s / sqrt(n)

其中

  • s 是样本标准差。
  • n 是样本大小。
Sigma.standardErrorOfTheMean([1, 12, 19.5, -5, 3, 8])
// Result: 3.5412254627

求和

计算数组的求和。

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

唯一值

返回一个不含重复值的无排序数组,包含输入数组中出现的所有值。

Sigma.uniqueValues([2, 1, 3, 4, 5, 4, 3, 5])
// Result: [2, 3, 4, 5, 1]

总体方差

计算整个总体的方差。

注意:

  • 数组为空时返回nil。
  • 与 Microsoft Excel 中的 VAR.P 或 VARPA 以及 Google Docs Sheets 中的 VARP 或 VARPA 相同。

公式

σ^2 = Σ( (x - m)^2 ) / n

其中

  • m是总体均值。
  • n是总体大小。
Sigma.variancePopulation([1, 12, 19.5, -5, 3, 8])
// Result: 62.70138889

样本方差

根据样本计算方差

注意:

  • 当数组为空或包含单个值时返回 nil。
  • 等同于Microsoft Excel中的VAR、VAR.S或VARA,或Google Docs Sheets中的VAR或VARA。

公式

s^2 = Σ( (x - m)^2 ) / (n - 1)

其中

  • m 是样本均值。
  • n 是样本大小。
Sigma.varianceSample([1, 12, 19.5, -5, 3, 8])
// Result: 75.24166667

欢迎反馈

如果您需要帮助或想要扩展库,请随意创建问题或提交拉取请求。

那些寻求帮助的人,霍格沃茨总会给予帮助。

-- J.K. 罗琳,哈利·波特

贡献者

许可证

Sigma遵循MIT许可证发布。