StatKit


Platform Support

LinkedIn: Jimmy M Andersson Sponsor this project

Swift PM Compatible


欢迎使用 StatKit,这是一个为 Swift 开发者提供的统计分析工具集合。

内置统计功能

StatKit 为您日常使用的类型添加了相关的统计分析功能。使用 StatKit,您将能够计算各种有用的统计数据,例如:

一个简单的例子是计算整数数组的众数,可以使用以下代码轻松完成:

print([1, 2, 3, 3, 2, 4].mode(variable: \.self))

// Prints [3, 2]

在本例中,Collection.mode(variable:) 接受一个 KeyPath 参数,该参数指定您感兴趣的数组内部的变量。在上面的示例中,我们指定 \.self 键路径,它指向数组元素本身(在本例中,是整数)。

指定一个或多个要调查的变量的模式在整个 StatKit 库中很常见。它允许您使用相同的语法为各种不同的类型计算相似的统计数据。例如,即使正在调查的类型完全不同,以下两个示例都会产生有效的结果:

计算 String 中所有字符的众数

print("StatKit".mode(variable: \.self))

// Prints ["t"]

计算数组中 CGPoint y 值的众数

import CoreGraphics

let points = [CGPoint(x: 0, y: 1), 
              CGPoint(x: 1, y: 3), 
              CGPoint(x: 3, y: 1)]

print(points.mode(variable: \.y))
// Prints [1.0]

计算复杂自定义类型的集合的统计数据

正如上一节中的示例所示,当使用易于获得的类型集合时,计算统计数据很容易。但是,我们大多数人在我们的项目中使用自定义数据结构。幸运的是,由于广泛使用泛型,StatKit 提供了对任意自定义类型的支持。

让我们看一个自定义数据结构,它跟踪特定品牌汽车的收集数据点,以及我们如何使用 StatKit 轻松计算其燃料消耗的平均值和标准差

struct FuelConsumption {
  let modelYear: String
  let litersPer10Km: Double
}

let measurements: [FuelConsumption] = [...]

measurements.mean(variable: \.litersPer10Km, strategy: .arithmetic)
measurements.standardDeviation(variable: \.litersPer10Km, from: .sample)

如您所见,使用 KeyPath 使得 StatKit API 易于使用,并且可以在完全任意的自定义结构中重用。

分布

StatKit 提供了多种离散和连续分布类型供您使用。这些类型允许您计算概率、计算常见的矩(例如偏度和方差),并从特定的数据分布中采样随机数。

let normal = NormalDistribution(mean: 0, variance: 1)
print(normal.cdf(x: 0))
// Prints 0.5

let normalRandomVariables = normal.sample(10)
// Generates 10 samples from the normal distribution

文档

StatKit 使用 Swift-DocC 编写文档,这意味着文档页面可以由 Xcode 构建并在开发者文档面板中查看。通过单击 Product > Build Documentation 或按 Shift + Ctrl + Cmd + D 来构建它。

系统要求

要使用 StatKit,请确保您的系统已安装 Swift 6.0(或更高版本)。如果您使用的是 Mac,还要确保 xcode-select 指向包含有效 Swift 版本的 Xcode 安装,并且您正在运行 macOS 14 或更高版本。

重要提示
StatKit 官方支持任何 beta 软件,包括 Xcode 和 macOS 的 beta 版本,或未发布的 Swift 版本。

安装

Swift Package Manager

要使用 Swift Package Manager 安装 StatKit,请将其作为依赖项添加到您的 Package.swift 文件中

let package = Package(
    ...
    dependencies: [
        .package(url: "https://github.com/JimmyMAndersson/StatKit.git", from: "0.6.0")
    ],
    ...
)

然后在您想使用它的地方导入 StatKit

import StatKit

贡献与支持

StatKit 是一个年轻的项目,正在积极开发中。我们的愿景是创建 Swift 开发者首选的统计库,就像 SciPy 和 NumPy 对 Python 语言一样。

❤️ 考虑成为赞助者 以支持此库的开发。
您可以支付一杯下午茶或一顿饭,以保持我的神经元活跃。

感谢您的贡献,并享受使用 StatKit 的乐趣!