该库是一系列使用 Swift 执行统计计算的函数集合。它可以在 Apple 设备的 Swift 应用程序中使用,也可以在其他平台上的开源 Swift 程序中使用。
有四种方法可以将 Sigma 添加到您的项目中。
添加源代码 (iOS 7+)
只需将 SigmaDistrib.swift 文件添加到您的项目中即可。
或者,将 github "evgenyneu/SigmaSwiftStatistics" ~> 9.0
添加到您的 Cartfile 并运行 carthage update
。
如果您正在使用 CocoaPods,请将此文本添加到您的 Podfile 并运行 pod install
。
use_frameworks!
target 'Your target name'
pod 'SigmaSwiftStatistics', '~> 9.0'
如果您使用旧版本的 Swift,请设置一个早期版本的库。
将 import SigmaSwiftStatistics
添加到您的源代码中,除非您使用了文件设置方法。
计算数组中值的算术平均值。
注意 (Note):
A = Σ(x) / n
其中 (Where)
Sigma.average([1, 3, 8])
// Result: 4
计算数据集的中心矩。
注意 (Note)
Σ(x - m)^k / n
其中 (Where)
Sigma.centralMoment([3, -1, 1, 4.1, 4.1, 0.7], order: 3)
// Result: -1.5999259259
计算两个变量 x 和 y 之间整个总体的协方差。
注意 (Note):
cov(x,y) = Σ(x - mx)(y - my) / n
其中 (Where)
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 之间的样本协方差。
注意 (Note)
cov(x,y) = Σ(x - mx)(y - my) / (n - 1)
其中 (Where)
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
计算基于样本的变异系数。
注意 (Note)
Double.infinity
。CV = s / m
其中 (Where)
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]
返回一系列数字的峰度。
注意 (Note):
Sigma.kurtosisA([2, 1, 3, 4.1, 19, 1.5])
// Result: 5.4570693277
返回一系列数字的峰度。
注意 (Note):
Sigma.kurtosisB([2, 1, 3, 4.1, 19, 1.5])
// Result: 4.0138523409
返回数组中的最大值。
注意:对于空数组,返回 nil。
Sigma.max([1, 8, 3])
// Result: 8
返回数组中的中位数。
注意 (Note):
Sigma.median([1, 12, 19.5, 3, -5])
// Result: 3
返回数组中的中位数。
注意 (Note):
Sigma.medianHigh([1, 12, 19.5, 10, 3, -5])
// Result: 10
返回数组中的中位数。
注意 (Note):
Sigma.medianLow([1, 12, 19.5, 10, 3, -5])
// Result: 3
返回数组中的最小值。
注意:对于空数组,返回 nil。
Sigma.min([7, 2, 3])
// Result: 2
返回给定 x
、μ
和 σ
值的正态分布。 返回值是正态曲线下到值 x
左侧的面积。
注意 (Note):
μ = 0
,σ = 1
。cumulative
参数等于 true
)相同。Sigma.normalDistribution(x: -1, μ: 0, σ: 1)
// Result: 0.1586552539314570
返回给定 x
、μ
和 σ
值的正态函数的密度。
注意 (Note):
μ = 0
,σ = 1
。cumulative
参数等于 false
)相同。其中 (Where)
Sigma.normalDensity(x: 0, μ: 0, σ: 1)
// Result: 0.3989422804014327
返回 正态分布的分位数函数(正态分布的逆函数)。 p
参数是概率,或者是正态曲线下到返回值左侧的面积。
注意 (Note):
-Double.infinity
,如果 p 为 1,则返回 Double.infinity
。μ = 0
,σ = 1
。Sigma.normalQuantile(p: 0.025, μ: 0, σ: 1)
// -1.9599639845400538
计算两个变量 x 和 y 之间的皮尔逊积矩相关系数。
注意 (Note):
p(x,y) = cov(x,y) / (σx * σy)
其中 (Where)
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
计算给定数据集的百分位数。
注意 (Note):
values
数组为空时,返回 nil。percentile
参数为负数或大于 1 时,返回 nil。有关更多信息,请参见百分位数方法文档。
// 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 和 Wikipedia。
注意 (Note):
quantile
函数相同。此方法使用经验分布函数的逆函数计算分位数。
Sigma.quantiles.method1([1, 12, 19.5, -5, 3, 8], probability: 0.5)
// Result: 3
此方法使用带有平均的倒置经验分布函数。
Sigma.quantiles.method2([1, 12, 19.5, -5, 3, 8], probability: 0.5)
// Result: 5.5
Sigma.quantiles.method3([1, 12, 19.5, -5, 3, 8], probability: 0.5)
// Result: 3
该方法使用经验分布函数的线性插值。
Sigma.quantiles.method4([1, 12, 19.5, -5, 3, 8], probability: 0.17)
// Result: -4.88
此方法使用分段线性函数,其中结点是经验分布函数步长中点的值。
Sigma.quantiles.method5([1, 12, 19.5, -5, 3, 8], probability: 0.11)
// Result: -4.04
此方法在 Microsoft Excel (PERCENTILE.EXC)、Minitab 和 SPSS 中实现。 它使用 [0,1] 上均匀分布的顺序统计量的期望的线性插值。
Sigma.quantiles.method6([1, 12, 19.5, -5, 3, 8], probability: 0.1999)
// Result: -2.6042
此方法在 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
该方法返回的分位数大致是中位数无偏的,无论 x 的分布如何。
Sigma.quantiles.method8([1, 12, 19.5, -5, 3, 8], probability: 0.11)
// Result: -4.82
如果 x 服从正态分布,则此方法返回的分位数对于预期的顺序统计量大致是无偏的。
Sigma.quantiles.method9([1, 12, 19.5, -5, 3, 8], probability: 0.10001)
// Result: -4.999625
返回数据集中值的排名。
注意 (Note):
接收一个可选的 ties
参数,该参数确定如何计算相等值(“关系”)的排名。 默认值为 .average
。 可能的值
.average
:使用平均排名。 与 Microsoft Excel 和 Google Docs Sheets 中的 RANK.AVG 相同。.min
, .max
:使用最小/最大排名。 值 .min
与 Microsoft Excel 和 Google Docs Sheets 中的 RANK 和 RANK.EQ 相同。.first
, .last
:排名递增/递减。与 R 中的 rank 函数相同。
Sigma.rank([2, 3, 6, 5, 3], ties: .average)
// Result: [1.0, 2.5, 5.0, 4.0, 2.5]
返回数据集的偏度。
注意 (Note):
Sigma.skewnessA([4, 2.1, 8, 21, 1])
// Result: 1.6994131524
返回数据集的偏度。
注意 (Note):
skewness
函数相同。Sigma.skewnessB([4, 2.1, 8, 21, 1])
// Result: 1.1400009992
计算整个总体的标准差。
注意 (Note):
σ = sqrt( Σ( (x - m)^2 ) / n )
其中 (Where)
Sigma.standardDeviationPopulation([1, 12, 19.5, -5, 3, 8])
// Result: 7.918420858282849
计算基于样本的标准差。
注意 (Note):
s = sqrt( Σ( (x - m)^2 ) / (n - 1) )
其中 (Where)
Sigma.standardDeviationSample([1, 12, 19.5, -5, 3, 8])
// Result: 8.674195447801869
计算均值的标准误差。
注意 (Note):
SE = s / sqrt(n)
其中 (Where)
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]
计算整个总体的方差。
注意 (Note):
σ^2 = Σ( (x - m)^2 ) / n
其中 (Where)
Sigma.variancePopulation([1, 12, 19.5, -5, 3, 8])
// Result: 62.70138889
基于样本计算 方差。
注意 (Note):
s^2 = Σ( (x - m)^2 ) / (n - 1)
其中 (Where)
Sigma.varianceSample([1, 12, 19.5, -5, 3, 8])
// Result: 75.24166667
如果您需要帮助或想扩展此库,请随时创建 issue 或提交 pull request。
只要你开口,霍格沃茨永远会给你提供帮助。
-- J.K. 罗琳,《哈利·波特》
Sigma 在 MIT 许可证 下发布。