Localized V2 rewrite for this language is in progress. Showing English-first content for now.

不确定性

Sounio 如何表示并(最终)传播测量不确定性。

不确定性

科学计算代码充满测量,而测量永远不可能完全精确。Sounio 将不确定性视为 一等数据,而不是只写在注释或表格里的信息。

今天可用的部分(编译器现状)

编译器对 Knowledge<T> 强制 “不允许静默 unwrap” 规则(见 Knowledge<T>)。这给了你一个可靠的边界: 认识论信息只能在明确的地方被有意丢弃。

除此之外,完整的自动不确定性传播取决于你使用多少认识论 stdlib,以及启用了哪些编译器特性/后端。

在规范中 / 预期语义

预期模型遵循标准计量学实践(独立输入的 GUM 风格传播):

  • 对于 c = a ± b:
    • u(c) = sqrt(u(a)^2 + u(b)^2)
  • 对于 c = a * bc = a / b(相对形式):
    • u_rel(c) = sqrt(u_rel(a)^2 + u_rel(b)^2), 其中 u_rel(x) = u(x) / x

在语言层面,目标是对 Knowledge<T> 的操作能够:

  • 计算新的点估计
  • 传播不确定性 -(必要时)更新置信度
  • 追加溯源信息

实用建议

  • 尽可能保持值为 Knowledge<T>
  • 当必须跨越到“普通数据”时,使用 unwrap(reason) 并记录原因。
  • 对于 PK/PD、神经影像等领域代码,优先使用已经显式建模不确定性与溯源的 stdlib 模块。

下一步