欢迎使用 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 安装 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 的乐趣!