Streaming builder of the SampleDistribution model.
StreamingSampleDistribution
00 Remarks
面向数据总点数远超 .NET 数组元素上限(约 21.4 亿)的大型数据集: 以行块 Double() 为单位流式喂数据, 全程内存占用恒定, 只与 histogramBins / modeDistinctCap 相关, 与数据总量无关.
统计量精度:
- size, sum, min, max, average, variance, stdErr: 精确值 (方差采用 Welford 在线算法, 大数据下数值稳定性优于 sum-of-squares 方法)
- quantile, median: 近似值. 基于自适应等宽直方图(数据范围扩张时自动倍增桶宽压缩), 误差约为一个桶宽(~= range / histogramBins); 0% 与 100% 分位数恒为精确的 min/max.
- mode: 频率表精确计数; 唯一值数量超过 modeDistinctCap 时冻结为当时的众数(近似值).
注意: NaN 会被自动跳过(可通过 SkippedNaN 查看跳过数量); 本类型非线程安全.
01 Syntax
Microsoft.VisualBasic.Math.Distributions.Summary.StreamingSampleDistribution
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| .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
| Name | Overloads | Summary |
|---|---|---|
| SkippedNaN | 1 | 已跳过的 NaN 数据点数量 |
| TotalCount | 1 | 已流入的数据点数量(64 位计数, 无 Int32 溢出问题) |
04 Fields
| Name | Overloads | Summary |
|---|---|---|
| maxBins | 1 | 直方图最大桶数(每桶约占 24 字节内存) |
| modeCap | 1 | 众数频率表允许的最大唯一值数量 |
| modeFrozen | 1 | 唯一值过多, 众数已冻结(近似模式) |
05 Members
#ctor(
Int32, Int32)Parameters
| Name | Type | Description |
|---|---|---|
histogramBins | Int32 | 分位数估计的直方图桶数上限, 越大越精确, 默认 65536(几 MB 内存), 分位数误差约为 range / 65536 |
modeDistinctCap | Int32 | 众数频率表的唯一值上限, 默认 2^20(约 50MB 内存), 超过后众数冻结为近似值 |
Add(
Double)add one single data value
AddRange(
Double())add one row of the dataset (每一行的数据首尾相接进入统计)
InitHistogram
根据缓冲样本估计初始桶宽, 然后将缓冲数据灌入直方图
Compress
桶宽翻倍, 相邻两桶合并为一个, 保证内存占用始终有界
ComputeQuantile(
Double)估计 p 分位数(与 SampleDistribution 相同的 type-7 线性插值语义)
ValueAtRank(
Int64)取排序后第 r 个(0-based)数据点的近似值 (桶内均匀分布假设, 且由桶内精确的 min/max 界定误差范围)
ToSampleDistribution(
Boolean)生成最终统计结果模型
Parameters
| Name | Type | Description |
|---|---|---|
estimateQuantile | Boolean | 是否输出 quantile 数组(median 总是会计算) |
SkippedNaN
已跳过的 NaN 数据点数量
TotalCount
已流入的数据点数量(64 位计数, 无 Int32 溢出问题)
maxBins
直方图最大桶数(每桶约占 24 字节内存)
modeCap
众数频率表允许的最大唯一值数量
modeFrozen
唯一值过多, 众数已冻结(近似模式)