Module_Statistics_Advanced_zh - vorcyc/Vorcyc.Mathematics GitHub Wiki
Vorcyc.Mathematics.Statistics.Advanced 是一个提供高级统计函数的类,包括百分位数、四分位数、偏度、峰度、置信区间、假设检验、方差分析、卡方检验和非参数检验的计算方法。
以下方法均位于类 :Vorcyc.Mathematics.Statistics.Advanced
📒目录
- 🔖 Percentile 方法
- 🔖 Quartiles 方法
- 🔖 Skewness 方法
- 🔖 Kurtosis 方法
- 🔖 ConfidenceInterval 方法
- 🔖 TTest 方法
- 🔖 Anova 方法
- 🔖 ChiSquaredTest 方法
- 🔖 MannWhitneyUTest 方法
Vorcyc.Mathematics.Statistics.Advanced 是一个提供高级统计函数的类,包括百分位数、四分位数、偏度、峰度、置信区间、假设检验、方差分析、卡方检验和非参数检验的计算方法。
-
public static T Percentile<T>(this Span<T> sequence, double percentile) where T : IFloatingPointIeee754<T>- 计算数据集的指定百分位数。
- 参数:
-
sequence: 数据集。 -
percentile: 百分位数(0到1之间)。
-
- 返回值: 指定百分位数的值。
-
public static (T Q1, T Q2, T Q3) Quartiles<T>(this Span<T> sequence) where T : IFloatingPointIeee754<T>- 计算数据集的四分位数。
- 参数:
-
sequence: 数据集。
-
- 返回值: 包含第一、第二和第三四分位数的元组。
-
public static T Skewness<T>(this Span<T> sequence) where T : IFloatingPointIeee754<T>- 计算数据集的偏度,衡量数据分布的对称性。
- 参数:
-
sequence: 数据集。
-
- 返回值: 数据集的偏度值。
-
public static T Kurtosis<T>(this Span<T> sequence) where T : IFloatingPointIeee754<T>- 计算数据集的峰度,衡量数据分布的尖锐程度。
- 参数:
-
sequence: 数据集。
-
- 返回值: 数据集的峰度值。
-
public static (T Lower, T Upper) ConfidenceInterval<T>(this Span<T> sequence, double confidenceLevel) where T : IFloatingPointIeee754<T>- 计算均值或比例的置信区间。
- 参数:
-
sequence: 数据集。 -
confidenceLevel: 置信水平(例如0.95表示95%的置信水平)。
-
- 返回值: 包含置信区间下限和上限的元组。
-
public static T TTest<T>(this Span<T> sample, T populationMean) where T : IFloatingPointIeee754<T>- 实现各种假设检验,如z检验、t检验、卡方检验等。
- 参数:
-
sample: 样本数据集。 -
populationMean: 总体均值。
-
- 返回值: t检验的统计量。
-
public static T Anova<T>(this IEnumerable<ArraySegment<T>> groups) where T : IFloatingPointIeee754<T>- 实现单因素和多因素方差分析。
- 参数:
-
groups: 数据组的集合。
-
- 返回值: 方差分析的F值。
-
public static T ChiSquaredTest<T>(this Span<T> observed, Span<T> expected) where T : IFloatingPointIeee754<T>- 实现卡方独立性检验和拟合优度检验。
- 参数:
-
observed: 观察值数据集。 -
expected: 期望值数据集。
-
- 返回值: 卡方检验的统计量。
-
public static T MannWhitneyUTest<T>(this Span<T> sample1, Span<T> sample2) where T : IFloatingPointIeee754<T>- 实现如曼-惠特尼U检验、克鲁斯卡尔-沃利斯检验等非参数检验。
- 参数:
-
sample1: 样本1数据集。 -
sample2: 样本2数据集。
-
- 返回值: 曼-惠特尼U检验的统计量。
以下是一个使用 Advanced 类中多个方法的示例,并在示例中加入了注释:
using System;
using System.Collections.Generic;
using Vorcyc.Mathematics.Statistics;
using static System.Runtime.InteropServices.JavaScript.JSType;
public class AdvancedStatisticsExample
{
public static void Main()
{
// 定义数据集
Span<double> data = new double[] { 1.0, 2.0, 3.0, 4.0, 5.0 };
// 计算百分位数
double percentile = data.Percentile(0.9);
Console.WriteLine("90th Percentile: " + percentile);
// 计算四分位数
var (Q1, Q2, Q3) = data.Quartiles();
Console.WriteLine($"Q1: {Q1}, Q2: {Q2}, Q3: {Q3}");
// 计算偏度
double skewness = data.Skewness();
Console.WriteLine("Skewness: " + skewness);
// 计算峰度
double kurtosis = data.Kurtosis();
Console.WriteLine("Kurtosis: " + kurtosis);
// 计算置信区间
var (lower, upper) = data.ConfidenceInterval(0.95);
Console.WriteLine($"95% Confidence Interval: ({lower}, {upper})");
// 进行t检验
double tTest = data.TTest(3.0);
Console.WriteLine("T-Test: " + tTest);
// 进行方差分析
var groups = new List<ArraySegment<double>>
{
new ArraySegment<double>(new double[] { 1.0, 2.0, 3.0 }),
new ArraySegment<double>(new double[] { 4.0, 5.0, 6.0 }),
new ArraySegment<double>(new double[] { 7.0, 8.0, 9.0 })
};
double anova = groups.Anova();
Console.WriteLine("ANOVA: " + anova);
// 进行卡方检验
Span<double> observed = new double[] { 10, 20, 30 };
Span<double> expected = new double[] { 15, 25, 35 };
double chiSquared = observed.ChiSquaredTest(expected);
Console.WriteLine("Chi-Squared Test: " + chiSquared);
// 进行曼-惠特尼U检验
Span<double> sample1 = new double[] { 1.0, 2.0, 3.0 };
Span<double> sample2 = new double[] { 4.0, 5.0, 6.0 };
double mannWhitneyU = sample1.MannWhitneyUTest(sample2);
Console.WriteLine("Mann-Whitney U Test: " + mannWhitneyU);
}
}Robust 静态方法(作用于 Span<T> / ReadOnlySpan<T>)的抗离群描述统计:
| 方法 | 说明 |
|---|---|
InterquartileRange |
四分位距 Q3 − Q1 |
MedianAbsoluteDeviation |
相对中位数的 MAD |
Winsorize(ReadOnlySpan<T>, lower=0.05, upper=0.95) |
静态方法;将值截断到百分位区间,返回新的 T[]
|
HuberMean(this Span<T>, T delta, maxIterations=50) |
扩展方法;迭代重加权稳健均值(delta 必填) |
Welford 单遍均值/方差累加器:
| 成员 | 说明 |
|---|---|
Push(T) |
纳入一个样本 |
Mean / Variance / PopulationVariance / StandardDeviation
|
当前统计量 |
Count |
已纳入样本数 |
Reset() |
清零 |