关于数学:计算C#中的绝对绝对偏差

Calculating Median Absolute Deviation in C#

我需要对一个数字集执行许多统计计算,而我需要计算的一件事是中位数绝对偏差。我提供了一个ISO标准,它告诉我的是

enter


中位数是已排序数组的中间元素(如果数组有偶数项,则为两个中间项的平均值):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  double[] source = new double[] { 1, 2, 3, 4, 5 };

  Array.Sort(source);

  double med = source.Length % 2 == 0
    ? (source[source.Length / 2 - 1] + source[source.Length / 2]) / 2.0
    : source[source.Length / 2];

  double[] d = source
    .Select(x => Math.Abs(x - med))
    .OrderBy(x => x)
    .ToArray();

  double MADe = 1.483 * (d.Length % 2 == 0
    ? (d[d.Length / 2 - 1] + d[d.Length / 2]) / 2.0
    : d[d.Length / 2]);


如何编程一个函数,该函数将计算中位数,您将在这里找到

然后您的函数应如下所示:

1
2
3
4
5
6
7
8
var arrOfValues = new int[] { 1, 3, 5, 7, 9 };

var di = new List<int>();  //List where all di will be stored
var median = calcMedian();  //See the link how to write it
foreach(var elem in arrOfValues)
{
   di.Add(Math.Abs(elem - median));
}

进行简单的步骤:
1.查找x[]数组的中位数med(您可以对数组进行排序并获得中间值,但是有更有效的方法)
2.用中位数构建绝对差的数组d[]
3.查找d[]数组的中位数
4.计算MADe