QuickStatistics.Net
3.2.1
dotnet add package QuickStatistics.Net --version 3.2.1
NuGet\Install-Package QuickStatistics.Net -Version 3.2.1
<PackageReference Include="QuickStatistics.Net" Version="3.2.1" />
paket add QuickStatistics.Net --version 3.2.1
#r "nuget: QuickStatistics.Net, 3.2.1"
// Install QuickStatistics.Net as a Cake Addin #addin nuget:?package=QuickStatistics.Net&version=3.2.1 // Install QuickStatistics.Net as a Cake Tool #tool nuget:?package=QuickStatistics.Net&version=3.2.1
Statistics-Helper-Library
this library contains some lightweight math functions for my projects. The main purpose is to obtain fast, reliable and well performing statistics on live fed data. This is particularly useful on Sensor Data, Spot Data or to get statistics on data where the dataset is simply too large to fit into memory.
The focus is on simplicity, stability and the utmost performance which I'm personally able to archieve through my skills.
It is not about errorhandling. Make sure, you feed quality data. Garbage in, Garbage out. While I try to add unit tests to my projects, do a quick test yourself and check if the data pushed out by this library actually makes sense to you.
Current implementations
Average
- Moving average
using QuickStatistics.Net.Average_NS;
// Create a new Moving_Average_Double object with a total tracking time of 2 hours and a value resolution of 1 minute
Moving_Average_Double ma = new Moving_Average_Double(TimeSpan.FromHours(2), TimeSpan.FromMinutes(1));
// Add some values to the moving average
ma.AddValue(5);
ma.AddValue(6);
ma.AddValue(7);
// Get the current value of the moving average
double currentValue = ma.Value;
// Set the resolution to track the past 3 hours with a value resolution of 15 minutes
ma.SetResolution(TimeSpan.FromHours(3), TimeSpan.FromMinutes(15));
// Add a value with a timestamp of 1 hour ago
ma.AddValue(8, DateTime.Now - TimeSpan.FromHours(1));
// Get the current value of the moving average
currentValue = ma.Value;
// Clear all values in the moving average
ma.Clear();
Averaging
- progressing_Average: a straight forward, very fast, precise implementation for calculating the average value. Limit is int.max (count of values) so it is not suited for an infinite stream of data such as for sensors
- ProgressingAverage_Nano:
Same as ProgressingAverave but optimized for absolute minimum memory footprint in case a large quantity of averages needs to be tracked.
usage:
// Arrange
float currentValue = 0;
ushort elementCount = 0;
// Act
ProgressingAverage_Nano.AddValue(ref currentValue, ref elementCount, 0);
ProgressingAverage_Nano.AddValue(ref currentValue, ref elementCount, 10);
// Verify
Assert.Equal(5, currentValue);
Assert.Equal(2ul, elementCount);
- Simple_Exponential_Average: Moving average approximation, very fast and lightweight
- Simple_Moving_Average: Average on the fly (omitting memory restraints and overflow) Supports: AbsoluteRateOfChange, Trend, Momentum, Deviation
- Volumetric average for 2 values (averaging two values by their weight)
- Moving_Average: Time based moving average (good for historic data and data with gaps, also good for targeting a certain time duration or when the input data stream is not consistent in speed) Maps the incoming data to a consistient timeline with variable resolution Supports: AbsoluteRateOfChange, Trend, Momentum, Deviation
Median
Median can be calculated:
- On an array / List
- Procedural upon adding values
- On a rolling time window
Minimum / Maximum
- Calculate Maximum or Minimum for a given amount of Datapoints (useful for sensor Data)
- Calculate Maximum or Minimum for a sliding time window (useful for historical or inconsistent Data)
Statistics
- obtain standard deviation on the fly. (warning: will overflow if ran indefinitely)
- obtain exponential standard deviation on the fly for infinite amount of data points (less precision)
- AbsoluteRateOfChange, Trend, Momentum and Deviation on sliding windows (Supported by simple moving average & moving average)
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- QuickCsv.Net (>= 1.1.1)
-
net7.0
- QuickCsv.Net (>= 1.1.1)
-
net8.0
- QuickCsv.Net (>= 1.1.1)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on QuickStatistics.Net:
Package | Downloads |
---|---|
BitmapHelper_Net
fix transparency with image convert |
|
ColorHelper.Net
a small library to help converting, mixing and generating colors |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
3.2.1 | 85 | 10/1/2024 |
3.2.0 | 131 | 4/17/2024 |
3.1.3 | 116 | 9/6/2024 |
3.1.2 | 115 | 9/6/2024 |
3.1.0 | 113 | 4/17/2024 |
3.0.0 | 105 | 4/16/2024 |
2.6.0 | 172 | 1/12/2024 |
2.5.1 | 124 | 1/11/2024 |
2.5.0 | 148 | 12/22/2023 |
2.4.0 | 140 | 12/12/2023 |
2.3.4 | 173 | 10/31/2023 |
2.3.3 | 127 | 10/31/2023 |
2.3.2 | 126 | 10/31/2023 |
2.3.1 | 127 | 10/31/2023 |
2.2.1 | 117 | 10/31/2023 |
2.2.0 | 110 | 10/31/2023 |
2.1.2 | 122 | 10/31/2023 |
2.1.0 | 182 | 7/28/2023 |
2.0.0 | 149 | 5/10/2023 |
1.0.1 | 315 | 1/25/2023 |
1.0.0 | 293 | 1/9/2023 |
3.2.1
- fix writer Flush
3.1.3
- SimpleExponentialAverage was internal
3.1.2
- Added backup Option to SimpleExponentialAverage
3.1.1
- Added option to back up SimpleMovingAverage, just as MovingAverage
- update docs for simple moving average
3.1.0
- Renamed RunningMedian to ProgressingMedian to fall in line with ProgressingAverage
- Added feature to get distributionMap from Median
- MovingMedian can obtain a percentile now
3.0.0
- implemented enumerable downsampling methods
- implemented enumerable upsampling methods
- expanded unit tests
- Fixed a critical issue in Moving median where the result was shifted by 1 slot
- update generic methods (>= .NET 7)
- added several extension methods for arrays
```
double[] myEnumerable = [1,3];
double average = myEnumerable.GetAverage();
```