nuget server logo nuget api documents
↑

API Docs / Microsoft.VisualBasic.Math.Core / StreamingSampleDistribution

StreamingSampleDistribution

Full name Microsoft.VisualBasic.Math.Distributions.Summary.StreamingSampleDistribution Assembly Microsoft.VisualBasic.Math.Core Members 13

Streaming builder of the SampleDistribution model.

00 Remarks

面向数据总点数远超 .NET 数组元素上限(约 21.4 亿)的大型数据集: 以行块 Double() 为单位流式喂数据, 全程内存占用恒定, 只与 histogramBins / modeDistinctCap 相关, 与数据总量无关.

统计量精度:

  1. size, sum, min, max, average, variance, stdErr: 精确值 (方差采用 Welford 在线算法, 大数据下数值稳定性优于 sum-of-squares 方法)
  2. quantile, median: 近似值. 基于自适应等宽直方图(数据范围扩张时自动倍增桶宽压缩), 误差约为一个桶宽(~= range / histogramBins); 0% 与 100% 分位数恒为精确的 min/max.
  3. mode: 频率表精确计数; 唯一值数量超过 modeDistinctCap 时冻结为当时的众数(近似值).

注意: NaN 会被自动跳过(可通过 SkippedNaN 查看跳过数量); 本类型非线程安全.

01 Syntax

Microsoft.VisualBasic.Math.Distributions.Summary.StreamingSampleDistribution

02 Methods

NameOverloadsSummary
.ctor 1
Add 1 add one single data value
AddRange 1 add one row of the dataset (每一行的数据首尾相接进入统计)
InitHistogram 1 根据缓冲样本估计初始桶宽, 然后将缓冲数据灌入直方图
Compress 1 桶宽翻倍, 相邻两桶合并为一个, 保证内存占用始终有界
ComputeQuantile 1 估计 p 分位数(与 SampleDistribution 相同的 type-7 线性插值语义)
ValueAtRank 1 取排序后第 r 个(0-based)数据点的近似值 (桶内均匀分布假设, 且由桶内精确的 min/max 界定误差范围)
ToSampleDistribution 1 生成最终统计结果模型

03 Properties

NameOverloadsSummary
SkippedNaN 1 已跳过的 NaN 数据点数量
TotalCount 1 已流入的数据点数量(64 位计数, 无 Int32 溢出问题)

04 Fields

NameOverloadsSummary
maxBins 1 直方图最大桶数(每桶约占 24 字节内存)
modeCap 1 众数频率表允许的最大唯一值数量
modeFrozen 1 唯一值过多, 众数已冻结(近似模式)

05 Members

method .ctor #
#ctor(Int32, Int32)
Parameters
NameTypeDescription
histogramBinsInt32

分位数估计的直方图桶数上限, 越大越精确, 默认 65536(几 MB 内存), 分位数误差约为 range / 65536

modeDistinctCapInt32

众数频率表的唯一值上限, 默认 2^20(约 50MB 内存), 超过后众数冻结为近似值

method Add #
Add(Double)

add one single data value

method AddRange #
AddRange(Double())

add one row of the dataset (每一行的数据首尾相接进入统计)

method InitHistogram #
InitHistogram

根据缓冲样本估计初始桶宽, 然后将缓冲数据灌入直方图

method Compress #
Compress

桶宽翻倍, 相邻两桶合并为一个, 保证内存占用始终有界

method ComputeQuantile #
ComputeQuantile(Double)

估计 p 分位数(与 SampleDistribution 相同的 type-7 线性插值语义)

method ValueAtRank #
ValueAtRank(Int64)

取排序后第 r 个(0-based)数据点的近似值 (桶内均匀分布假设, 且由桶内精确的 min/max 界定误差范围)

method ToSampleDistribution #
ToSampleDistribution(Boolean)

生成最终统计结果模型

Parameters
NameTypeDescription
estimateQuantileBoolean

是否输出 quantile 数组(median 总是会计算)

property SkippedNaN #
SkippedNaN

已跳过的 NaN 数据点数量

property TotalCount #
TotalCount

已流入的数据点数量(64 位计数, 无 Int32 溢出问题)

field maxBins #
maxBins

直方图最大桶数(每桶约占 24 字节内存)

field modeCap #
modeCap

众数频率表允许的最大唯一值数量

field modeFrozen #
modeFrozen

唯一值过多, 众数已冻结(近似模式)